5

Python25道练习题及详细答案解析,爆肝八小时总结

 3 years ago
source link: https://blog.csdn.net/weixin_56957149/article/details/115640369
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1.使用字符串的格式化输出完成以下名片的显示

==========我的名片==========
姓名: itheima   
QQ:xxxxxxx
手机号:185xxxxxx
公司地址:北京市xxxx
===========================

答案解析:

# 刚开始会基本使用print即可
print("==========我的名片==========")
print("姓名: itheima")
print("QQ:xxxxxxx")
print("手机号:185xxxxxx")
print("公司地址:北京市xxxx")
print("===========================")

在这里插入图片描述

2.使用字符串的格式化输出完成以下名片的显示

==========我的名片==========
姓名: itheima   
QQ:xxxxxxx
手机号:185xxxxxx
公司地址:北京市xxxx
===========================

答案解析:

# 现在学习了格式化,我们做练习主要是练习格式化
# 我们要格式的有4个一个是姓名 一个是QQ 一个是手机号 一个是地址 上下2个边缘是固定格式

#1. 定义4个变量分别存储4个要格式化的数据
name = "itheima"
QQ = "12345678"
phone = "1388888888"
address = "北京市xxxx"

# 2. 进行格式化输出
# 打印上边框
print("==========我的名片==========")
# 格式化4个变量,这里面使用了f-string方式进行的格式化,同学们也可以使用其他的格式化方式
print(f"姓名: {name}")
print(f"QQ: {QQ}")
print(f"手机号: {phone}")
print(f"地址: {address}")
#打印下边框
print("===========================")

3.编程实现:用户在键盘中输入自己的名字,例如“张三”,终端打印“你好,张三”

答案解析:

# 这里让我们练习input方法 所以使用input接收用户输入即可
# 接收输入的名字
name = input("请输入自己的姓名:")
# 打印名字
print(name)

4.判断下面的代码是否写的正确,如果不正确,请修改代码,然后执行代码。

int = 100
a = "200"
b = int(a)
print(b)

答案解析:

# 这里考察的是我们对变量的认知
# python中的内置方法是一个变量你可以对其赋值,但是赋值后就不能再次当方法使用了
# 修改只需要把第一行代码去掉即可

#int = 100  #错误 对内置方法进行了赋值,导致后面int方法不能使用
a = "200"
b = int(a)
print(b)

5.编写程序,从键盘获取用户名和密码,然后判断,如果正确就输出以下信息: “欢迎来到博学谷!”

答案解析:

# 这里面考察2个知识点 一个是input 一个是if判断
# 从键盘获取用户名和密码
name = input("请输入用户名:")
password = input("请输入密码:")
# and 连接2个判断语句 表示2个都要相等
if name=="MrSun" and password=="123456":
    print("欢迎来到博学谷")

在这里插入图片描述

6.编写代码设计简易计算器,可以进行基本的加减乘除运算。

答案解析:

# 这里考察的就是我们条件判断
# 我们现实中+-*/是让用户来选择的,那么我们根据用户的选择的操作 执行对应的行为
# 注意input 返回的都是字符串记得把数字转int类型
num1 = int(input("请输入第一个数字: "))
opt = input("请输入你要执行的操作(+ - * /): ")
num2 = int(input("请输入第二个个数字: "))

# 注意判断的时候是双等号
if opt=="+":
    # 使用f-string格式化,效果: 1 + 2 = 3
    print(f"{num1} {opt} {num2} = {num1+num2}")
elif opt=="-":
    print(f"{num1} {opt} {num2} = {num1-num2}")
elif opt=="*":
    print(f"{num1} {opt} {num2} = {num1*num2}")
elif opt=="/":   
    print(f"{num1} {opt} {num2} = {num1/num2}")
else:
    print("你要执行的操作无效!")

7.考试成绩的问题:提示用户输入成绩,判断是属于哪个水平,将结果打印到控制台。60以下不及格,60分以上为及格,70分至80分为合格,80分至90分为良好,90分以上为优秀。

答案解析:

# 与上面的计算器类似 主要考察input 以及 多分支判断
# 从键盘获取分数,input 返回的是字符串记得转化成int
score = int(input("请输入你的成绩: "))
# 多分支判断成绩属于哪个档次
if score<60:
    print("不及格")
elif 60<=score<70:
    print("及格")
elif 70<=score<80:
    print("合格")
elif 80<=score<90:
    print("良好")
else:
    print("优秀")

8. 使用while打印如下图形

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajdVefqt-1618231917630)(assets/1571987776670.png)]

答案解析:

# 星号先递增值5个,然后再递减至5个
# 可以考虑使用一个标志来控制星号的增加加和减少
# 字符串可以使用乘法 '*'*5 表示 星号重复5次


#初始要打印的星号个数
num = 1
# 设置一个标志,如果true 表示要星号增加
flag = True

# 星号小于0的时候退出循环
while num>0:
    # 打印星星
    print("*"*num)
    # 如果星号已经到5,更改flag,下次循环要开始减少星星
    if num==5:
        flag = False
        
    # 如果flag 为true 说明星号是递增,
    if flag:
        num+=1
     
    # flag为false 说明星号开始递减
    else:
        num-=1

9.使用for循环,依次打印字符串"abcdef"中的每个字符。

答案解析:

# 考察for range的用法
pstr = "abcdef"
for s in pstr:
    print(s)

在这里插入图片描述

10.请将a字符串反转并输出。例如:‘abc’的反转是’cba’

答案解析:

a = "abcd"
# 方法一 使用while逆向遍历
# 获取字符串最大的下标
index = len(a)-1
while lg>0:
    print(a[index])
    # 下标递减
    index-=1

# 方法二使用切片
a = [::-1]
print(a)

11.把[1,2,3,4]转换成"1234"

答案解析:

# 考察列表遍历,考察整数转字符串,考虑字符串拼接
l = [1,2,3,4]
# 定义空字符串用于拼接字符串
result = ""
# 遍历列表元素
for num in l:
    # 把整数转成字符串然后拼接到result
    result+=str(num) 
# 打印结果
print(result)

12.编程实现 把一个元素全为数字的列表中的所有偶数加1

答案解析:

# 考察列表遍历,以及列表元组值修改
# 遍历可以使用for range 或者while,但是涉及到修改需要使用下标,所以采用while 加下标的方式

l = [1,2,3,4,5,6]
# 定义下标, 初始为0
index = 0

# 循环遍历列表元素,直至到最后一个值
while index<len(l):
    # 判断如果是偶数,对这个元素加1
    if l[index]%2==0:
        l[index]+=1
    # 下标向后移动
    index+=1

13. test = (“a”,“b”,“c”,“a”,“c”) ,统计元祖中每个元素出现的次数把最终的结果保存到列表中,例如[(‘a’,1),(‘b’,3),(‘c’,5)]。

答案解析:

# 考察元组遍历,列表元素添加,列表元素判断,元组元素统计

test = ("a","b","c","a","c") 

# 定义列表用于存储统计结果
result = []

for s in test:
    # 统计元素个数
	cnt = test.count(s)
   	
    # 把统计结果拼接成('a',1)这样的格式
    tmp = (s,cnt)
    
    # 判断这个元素是否已统计过,如果已经在结果中说明这个元素就统计过了 继续下一个元素
    if tmp in result:
        continue
    else:
        result.append(tmp)
# 打印统计结果 
print(result)

14.题目描述

在控制台输入 3 组个人信息,每个人有姓名和年龄,将信息存入字典中,将字典存入列表。

遍历列表,打印每个人的信息,打印格式如下:

1 张三 20

2 李四 22

3 王五 23

答案解析:

# 考察input方法,考察enumerate方法,以及字符串格式化, 考察while循环

# 定义一个列表用于存储所有的用户信息
users = []
# 定义循环因子
i = 0
while i<3:
    name = input("请输入姓名: ")
    # age 整数记得要转化
    age = int(input("请输入年龄"))
    # 把用户信息构造成字典,添加到列表中
    users.append({"name":name,'age':age})

# 遍历打印用户信息,因为要打印编号,可以考虑使用enumerate
# 注意: enumerate 方法返回的是元素,我们需要用2个变量接收,一个是编号,一个是元素
for thnum,user in enumerate(users,start=1):
    # 使用f-string快速格式化
    print(f"{thnum} {user['name']} {user['age']}")
    
    
# 如果还没学习enumerate,可以使用一个变量来表示序号
# 定义序号起始为1
thnum = 1
for user in users:
	print(f"{thnum} {user['name']} {user['age']}")
    # 记得把序号加1
	thnum+=1
    

在这里插入图片描述

15.已知字符串 test = “aAsmr3idd4bgs7Dlsf9eAF”,将字符串中的数字取出,生成一个新的字符串

答案解析:

# 1. 要想提取数字字符,我们需要遍历字符串
# 2. 需要知道如何判断一个字符是否是数字,数字是有0123456789 中的字符构成,如果字符在这里面是不是就表示这个是数字呢
# 3. 把是数字的字符拼接到一起

test = "aAsmr3idd4bgs7Dlsf9eAF"

# 定义一个变量接收数字字符
result = ""
for s in test:
    # 如果s在后面的字符串中说明这个字符是数字字符
    if s in "0123456789":
        # 把数字字符添拼接到结果中
        result+=s
# 打印结果
print(result)
16.现有字符串 msg = “hel@#KaTeX parse error: Undefined control sequence: \nhon at position 8: lo pyt \̲n̲h̲o̲n̲ ̲ni\t hao%” ,去掉所有不是英文字母的字符,打印结果:“请理以后的结果为:hellopythonnihao”

答案解析:

# 1. 因为要处理每个字符,所以需要遍历字符
# 2. 如果判断一个字符是不是英文字母,我们字符串本身就有方法可以判断 isalpha 方法
# 3. 把英文单词拼接到一起就是我们要的
msg = "hel@#$lo pyt \nhon ni\t hao%$" 
# 保存结果
result = ""
# 循环遍历字符
for s in msg:
    # 判断当前字符是否是字母
    if s.isalpha():
        # 把字符添加到结果中
        result+=s
# 打印最后的结果      
print(result)

17.代码题目

定义函数findall,要求返回符合要求的所有位置的起始下标,如字符串"helloworldhellopythonhelloc++hellojava",

需要找出里面所有的"hello"的位置,返回的格式是一个元组,即:(0,10,21,29)

答案解析:

#1. 因为要查找位置,所以要遍历字符串
#2. 因为要查找多个字符,所以需要使用切边提取固定的字符
#3. 把查找到的位置保存到结果列表中
#4. 题目要求是个元组所以再转化成元组

# src: 原始字符串,dst: 要查找的字符串
def findall(src, dst):
    # 获取字符长度,用去截取字符
    lg = len(dst)
    # 保存查找的下标
    res = []
    # 遍历字符通过下标
    for index in range(lg):
        # 截取与dst相同的字符如果相等说明 位置ok
        if src[index:index + lg] == dst:
            # 把当前位置添加到结果集中
            res.append(index)

    # 把结果转化成元组返回
    return tuple(res)


s = "helloworldhellopythonhelloc++hellojava"
print(findall(s, 'hello'))

18.代码题

定义一个函数 sum_test 接收一个参数 n ,在函数中计算 1 + 2 + 3 + … + n 的值,并打印结果。

答案解析:

def sum_test(n):
    # 保存结果
    sum = 0
    # 循环因子
    i = 1
    #循环累加
    while i<=n:
        # 累加结果
        sum+=i
        # 增加循环因子
        i+=1
    print(sum)
    
num = 10
sun_test(num)

19.代码题目

使用不定长参数定义一个函数max_min,接受的参数类型是数值,最终返回这些数中的最大值和最小值

答案解析:

# 考察不定长参数定义,与传递,以及遍历求大小值
def max_min(*args):
    # 定义最大、最小值,把元素的第一个值作为最大值与最小值,然后与后面的其他值比较
    max = args[0]
    min = args[0]
    for num in args:
        # 如果max 小于num 那么max更新为num
        if max<num:
            max = num
        # 如果min 大于num说明num小,则更新min
        if min>num:
            min = num
            
    return max,min

max,min = max_min(5,2,7,1,7,8,9,10)
print(f'max = {max},min = {min}')

在这里插入图片描述

20.代码题

把一个文件中的内容,复制到另外一个文件中。

答案解析:

# src 源文件路径,dst目标文件路
def copy(src,dst):
    # 打开src文件
    # 读的方式打开src
    fr = open(src,'r')
    # 写的方式打开dst
    fw = open(dst,'w')
    # 把src的内容写入到dst中
    fw.write(fr.read())
    # 关闭文件
    fr.close()
    fw.close()
    print('文件拷贝完成')
    
copy("1.txt",'2.txt')

21.代码题

使用os模块,把文件夹中的所有文件重命名。例如,当前test目录下所有的文件名开头添加new_这个字符串。

答案解析:

# 文件分为2类一个是文件一个是目录
# 处理的时候需要判断是文件还会目录

import os
#file_dir 要重命名那个文件夹下面的文件
def rename(file_dir):
    # 获取当前文件下面的所有文件【包含目录和文件】
    files = os.listdir(file_dir)
   
    # 遍历获取所有文件与目录
    for file in files: 
        # 拼接获取完整的文件路径 
        filename = os.path.join(file_dir,file)
        # 判断如果是文件则重命名
        if os.path.isfile(filename):
            # 获取完成的新的文件路径名字
            new_name = os.path.join(file_dir,"new_"+file)
            os.rename(filename,new_name)
        else: # 如果不是文件说明是个目录
           #如果是目录则递归调用继续 对子目录中的文件进行重命名
           rename(filename) 
# 测试
rename('D:\test')

22.代码题

定义一个水果类,然后通过水果类,创建苹果对象、橘子对象、西瓜对象并分别添加属性:颜色和价格

答案解析:

#  1.我们要区分是水果,需要有一个水果类型
#  2. 颜色和价格是对象属性
#  3. 魔法方法__str__ 便于格式化打印对象
class Fruit():
    def __init__(self, fruit_type):
        # 创建的时候指定创建什么类型的水果
        self.type = fruit_type
        self.color = None
        self.price = None
    # 设置颜色   
    def Set_color(self,color):
        self.color = color
    # 设置价格
    def Set_price(self,price):
        self.price = price
        
    def __str__(self):
        if self.color is None or  self.price is None:
            return "水果价格和颜色没有设置!"
       	else:
            return f'{self.type}: color--{self.color} price--{self.price}元 '

# 创建苹果
apple = Fruit("苹果")
apple.Set_color('red')
apple.Set_price(5)
print(apple)

# .... 其他自己创建

23.代码题

定义一个电脑类,电脑有品牌,有价格,能放电影。分别创建2个对象"联想电脑" 和 “苹果电脑”。调用放电影的动作,联想电脑播放 电影"葫芦娃",苹果电脑播放"黑猫警长"。

答案解析:

# 1. 电脑类,为了区别种类我们需要有一个 电脑类型type
# 2. 电脑能播放电影,有play方法,电影因为不属于电脑的,所以我们可以把电影当成参数传递

class Computer():
    def __init__(self,ctype):
        # 初始化电脑的类型,例如联想
        self.type = ctype
    # 播放电影的行为   
    def play(self,film):
        print(f"{self.type} 播放了 {film}!")
    
    
levoe = Computer("联想")
levoe.play("猫和老鼠")

# 其他电脑自己创建

24.代码题

编写一段代码以完成下面的要求:

  1. 定义一个Person类,类中要有初始化方法,方法中要有人的姓名和年龄属性

  2. 将类中的姓名是公有属性,年龄是私有属性.

  3. 提供获取私有属性的公有方法 get_age方法.

  4. 提供可以设置私有属性的方法 set_age方法,要求如果输入的年龄在 0 – 100 之间,设置年龄,否则,提示输入不正确,.

  5. 重写 str 要求打印对象时,把 姓名和年龄都打印出来。

答案解析:

class Person():
    def __init__(self, name,age):
        # 创建的时候指定创建什么类型的水果
        self.name = name
        # 私有属性
        self.__age = age
        
    # 获取年龄,因为年龄是私有属性所以要提供对象的方法获取
    def Get_age(self):
        return self.__age
    # 设置年龄,因为年龄是私有属性所以要提供对象的方法进行修改
    def Set_age(self,age):
        self.__age = age
        
    # 重新__str__ 便于打印格式化
    def __str__(self):
        return f'name: {self.name}, age:{self.__age}'

# 测试代码
laowang = Person('laowang',50)
print(laowang)
laowang.Set_age(60)
print(laowang.Get_age())
print(laowang)

在这里插入图片描述

25.代码题

【代码题】

按照如下的要求编写代码:

- 定义 input_password 函数,提示用户输入密码

- 如果用户输入长度 < 8,抛出异常

- 如果用户输入长度 >=8,返回输入的密码

答案解析

# 无参数,返回用户校验后的面
def input_password():
    password = input("请输入密码: ")
    if len(password)<8:
        # 如果密码长度小于8位 抛出异常
        raise Exception("密码长度至少8位")
    else:
        return password
    
input_password()

以上分享是我学过程中看了很多的教程之后筛选出来的适合新手快速学python的教程,少即是多,按照教程方向,入们门到精通不是问题。如果你也想掌握一门门技能就从现在开始学让自己变得更好吧。通通无偿分享给你们!免费自取!●:关十后台call“学习”●:评论:Python。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK