Python基础语法练习题(6-10) 继续记录Python的基础语法练习题五道。第六题打印所有的水仙花数#编写一个程序该程序用于找出并打印所有水仙花数#水仙花数一个三位数其各个位的数的立方和等于该数本身for num in range(100,1000): #获取百位数字i num // 100 #获取十位数字 j num // 10 % 10 #获取个位数字 k num % 10 sum_of_cubes i ** 3 j ** 3 k ** 3 #判断立方和是否等于该数本身 if sum_of_cubes num: print(水仙花数,num)这个题目其实并不困难但正如我前文所说我在目前阶段并不完全擅长正向拆解因此把这个题目的逻辑复述一遍以求自己更加地融会贯通。题目要求打印所有的水仙花数并告知了我们什么是水仙花数个位的立方 十位的立方 百位的立方 这个数本身如153 1³ 5³ 3³那么我们接下来的编程逻辑如下1.先遍历循环得到所有的三位数for语句实现2.再获取三位数各个位数的数字3.判断各个位数的数字的立方和是否等于这个数本身最后实现需求这就是我们在面对题目时应该有的正向拆解逻辑通俗而言写代码其实蛮考验中文能力的你要知道怎么样把这个要求拆解成多个小要求并使用代码把它们从中文翻译成编程语言。第七题猴子吃桃#猴子第一天摘了若干个桃子当即吃了一半还多吃了一个如此循环到第十天再吃时桃子是剩下了一个问第一天摘了多少个桃子 #第十天剩下的桃子 peach 1 #遍历循环逆推 for day in range(9,0,-1): peach (peach 1) * 2 #打印结果 print(f第一天共摘了{peach}个桃子)这题的逻辑在于逆向推理第十天的桃子 1 * 2 第九天的桃子接下来每一天都是如此循环往复这如果是单纯的数学问题其实非常简单就算抓不住要点慢慢演算也可以得出结果然而难点就在于如何用编程语言实现这一要求这里的代码使用的是for语句利用其循环的特点最终求出了第一天桃子的数量并进行打印输出。看起来似乎真的很简单但我在自己敲代码的时候真的感觉每一步都在卡我。虽然这个代码总共没有几行但是我就是没办法很顺利地把它敲出来所以我要告诫自己千万不能掉以轻心一定要认真对待基础的内容否则一栋没有地基的房子是不可能成为高楼大厦的。第八题统计字符类型个数#输入一行字符分别统计出其中英文字母、空格、数字和其它字符的个数#输入一行字符a input(请输入一个字符串) b 0 c 0 d 0 e 0 #遍历循环取出字符for i in a:#判断字符是否是英文 if i.isalpha(): b b 1 #判断字符是否是空格 elif i.isspace(): c c 1 #判断字符是否是数字 elif i.isdigit(): d d 1 else: e e 1print(f英文字符数量是{b}) print(f空格字符数量是{c}) print(f数字字符数量是{d}) print(f其他字符数量是{e})可以看到在前面这几道练习题中for语句对于问题的解决起到了很大的帮助属于是中流砥柱了在这个练习题中我还学习到了新的语句例如isalpha这样的语句。巩固基础的同时还能学习到新的知识说明我前面的学习并不全面不过能学到新知识还是值得开心的。第九题对简单列表元素排序#给定一个简单列表对其元素进行排序 #注意这里声明的简单列表指的是元素类型不是复合元素类型(如列表/元组/字典) #正序 list1 [10,30,20,50,40] list1.sort() print(list1) #倒序 list2 [100,310,200,250,90] list2.sort(reverse True) print(list2) #对列表排序(但不改变原列表顺序) #语句sorted(iterable,key None,reverse False) #iterable:想要排序的可迭代对象 #key(可选传参) #reverse(可选传参选择布尔值True或者False) list3 sorted(list2) print(原列表,list2) print(排序后的列表,list3)解决这个要求有三种方法这一题算是这几道练习题中我比较擅长的了因此不过多赘述复习了一下列表的知识sorted语句可以对列表排序但不改变原列表顺序这是我疏忽的点。第十题学生成绩排序# 给定一个学生信息列表根据学生的成绩进行排序 students [ {snum: 101, sname: 张三, sgrade: 88}, {snum: 102, sname: 李四, sgrade: 79}, {snum: 103, sname: 王五, sgrade: 91}, {snum: 104, sname: 林芳, sgrade: 66}, ] 根据学生成绩排序使用匿名函数让字典也可以进行大小的比较从而排序 reverseTrue 表示降序从高到低 students_sort sorted(students, keylambda x: x[sgrade], reverseTrue) 一行输出一个学生 print(学号\t姓名\t成绩) print(- * 25) for s in students_sort: print(f{s[snum]}\t{s[sname]}\t{s[sgrade]})这个要求的完成中复习了匿名函数的使用这个平时的使用率并不是很高很容易忘记现在在练习题中用到还是非常不错的下面的内容是我和DeepSeek交流后它的优化输出让成绩排序的可视化程度更加明显。