AI智能
改变未来

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

Python25道题

  • 1.使用字符串的格式化输出完成以下名片的显示
  • 2.使用字符串的格式化输出完成以下名片的显示
  • 3.编程实现:用户在键盘中输入自己的名字,例如“张三”,终端打印“你好,张三”
  • 4.判断下面的代码是否写的正确,如果不正确,请修改代码,然后执行代码。
  • 5.编写程序,从键盘获取用户名和密码,然后判断,如果正确就输出以下信息: "欢迎来到博学谷!"
  • 6.编写代码设计简易计算器,可以进行基本的加减乘除运算。
  • 7.考试成绩的问题:提示用户输入成绩,判断是属于哪个水平,将结果打印到控制台。60以下不及格,60分以上为及格,70分至80分为合格,80分至90分为良好,90分以上为优秀。
  • 8. 使用while打印如下图形
  • 9.使用for循环,依次打印字符串"abcdef"中的每个字符。
  • 10.请将a字符串反转并输出。例如:'abc'的反转是'cba'
  • 11.把[1,2,3,4]转换成"1234"
  • 12.编程实现 把一个元素全为数字的列表中的所有偶数加1
  • 13. test = ("a","b","c","a","c") ,统计元祖中每个元素出现的次数把最终的结果保存到列表中,例如[('a',1),('b',3),('c',5)]。
  • 14.题目描述
  • 15.已知字符串 test = "aAsmr3idd4bgs7Dlsf9eAF",将字符串中的数字取出,生成一个新的字符串
  • 16.现有字符串 msg = "hel@#KaTeX parse error: Undefined control sequence: \\nhon at position 8: lo pyt \\̲n̲h̲o̲n̲ ̲ni\\t hao%" ,去掉所有不是英文字母的字符,打印结果:"请理以后的结果为:hellopythonnihao"
  • 17.代码题目
  • 18.代码题
  • 19.代码题目
  • 20.代码题
  • 21.代码题
  • 22.代码题
  • 23.代码题
  • 24.代码题
  • 25.代码题

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

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

答案解析:

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

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

==========我的名片==========姓名: itheimaQQ: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 = 100a = "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 = 3print(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 返回的是字符串记得转化成intscore = 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)-1while 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:# 把整数转成字符串然后拼接到resultresult+=str(num)# 打印结果print(result)

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

答案解析:

# 考察列表遍历,以及列表元组值修改# 遍历可以使用for range 或者while,但是涉及到修改需要使用下标,所以采用while 加下标的方式l = [1,2,3,4,5,6]# 定义下标, 初始为0index = 0# 循环遍历列表元素,直至到最后一个值while index<len(l):# 判断如果是偶数,对这个元素加1if 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:continueelse:result.append(tmp)# 打印统计结果print(result)

14.题目描述

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

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

1 张三 20

2 李四 22

3 王五 23

答案解析:

# 考察input方法,考察enumerate方法,以及字符串格式化, 考察while循环# 定义一个列表用于存储所有的用户信息users = []# 定义循环因子i = 0while 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,可以使用一个变量来表示序号# 定义序号起始为1thnum = 1for user in users:print(f"{thnum} {user['name']} {user['age']}")# 记得把序号加1thnum+=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相同的字符如果相等说明 位置okif 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+=1print(sum)num = 10sun_test(num)

19.代码题目

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

答案解析:

# 考察不定长参数定义,与传递,以及遍历求大小值def max_min(*args):# 定义最大、最小值,把元素的第一个值作为最大值与最小值,然后与后面的其他值比较max = args[0]min = args[0]for num in args:# 如果max 小于num 那么max更新为numif max<num:max = num# 如果min 大于num说明num小,则更新minif min>num:min = numreturn max,minmax,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文件# 读的方式打开srcfr = open(src,'r')# 写的方式打开dstfw = 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_typeself.color = Noneself.price = None# 设置颜色def Set_color(self,color):self.color = color# 设置价格def Set_price(self,price):self.price = pricedef __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 passwordinput_password()

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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python25道练习题及详细答案解析,爆肝八小时总结