在python学习过程中,我们常常会陷入“会写但不会改、能运行但不理解”的状态。今天我们聚焦于 5 个小练习题,系统巩固以下几个核心知识点:
- 条件判断符号:
==、!=、<=、>= - 字符串与字典操作
- 中文字符的判断方式
- 列表合并成字典的实用技巧
让我们逐题解析,一起提升对 Python 基础语法的掌控力!
题目一:输出 1000 以内,能被 7 整除且不能被 5 整除的所有数
考察:判断语句的逻辑理解 —— 多条件组合与比较运算符的使用
要输出1000以内所有满足条件的数,首先经过for语句依次将1000内的数字进行遍历,再通过条件筛选判断数字是否满足条件。
for i in range(1,1001):
if i % 7 == 0 and i % 5 != 0:
print(i)
巩固语法点:
- 符号含义:
-
==:判断“相等” -
!=:判断“不相等” -
%:取余,用于判断能否整除 -
and:多个条件同时成立
2.for 循环中的range(起始值,所需终止值+1),我们所需要的是1000以内的所有数,而range的终止值是不包括最后的那个数字的(即前包后不包),因此在这里应该写1000+1=1001。
题目二:构造一个形如 {1}、{2}、…的字典,键为 '{i}',值为对应整数 i(范围为 1 到 N)。
考察:字典构建逻辑 —— 用字符串格式构造键名
N = int(input("请输入一个正整数N:"))
D = {}
l = []
for i in range(1, N + 1): #得到N个数字
s = '{' + str(i) + '}' #通过三个字符串{、str(i)、}拼接为{i}
l.append(s) #将生成的字符串添加到并列表中
for item in range(N): #通过依次遍历,将l列表中的元素,添加进D字典中
D[l[item]] = item + 1 #l[item]是通过下标索引将l中的元素提出
print(l)
print(D) #最后打印出D字典
巩固语法点:
-
'{' + str(i) + '}':字符串拼接技巧 -
str(i):类型转换,整型转字符串,构造成形如{1}的字符串 -
列表和字典的配合使用
-
l.append(s):将构造好的键加入列表 -
D[key] = value:用下标配对构建字典,更好地理解列表和字典之间如何通过索引一一配对。
题目三:将两个列表合并为一个字典
题目中说有两个列表,那么要组成一个字典。一个列表代表字段名,一个列表代表对应信息,最后组合为一个字典。
cat = ['name', 'age', 'city'] #第一个列表
information = ['miu miu', '2岁', 'BeiJing'] #第二个列表
my_dict = {} #形成一个空字典用于储存两个列表信息
for i in range(len(cat)): #以列表的长度进行i的循环
my_dict[cat[i]] = information[i]
#这里是字典的赋值方式,通过列表下标,将两个列表信息一一对应。
print(my_dict)
知识点讲解:
-
len(cat):获取列表长度 -
cat[i]和information[i]:分别取出字典对应的 key 和 value -
my_dict[key] = value:构建字典项。
题目四:实现统计字符串中汉字的个数
从题目上看,也就是说统计一个字符串中,不是大小写字母、也不是数字的字符个数(即判断中文或其他符号)。那么要进行判断,就要考虑使用if语句,创造条件来进行判断字符串中元素是否满足条件。
Q = 'N1bb3bn3nm2m3bbv23144今天是星期几呢'
num = 0
for i in Q:
if not 'a' <= i <= 'z':
if not 'A' <= i <= 'Z':
if not '0' <= i <= '9':
num += 1
print(num) #print的结果为7
知识点讲解:
在这串代码中,最重要的也是最难理解的就是这个三层 if 的判断逻辑,它的表述意思是:i
-
不是小写字母
-
不是大写字母
-
也不是数字
那么就是“其他字符”,包括中文、符号、空格等,在这里我们的字符串中,只举例说明对字符串中汉字个数的判断,若要继续判断是否为符号、空格,就继续增加if条件进行判断。
Python 字符串的比较运算符(比如<、>)可以用于字符范围判断,使用 ASCII 范围手动判断字符类型,并不需要将所有a-z的元素储存在一个列表中进行判断。
题目五:打印100-1000的水仙花数(阿姆斯特朗数)。
所谓水仙花数,是指一个三位数,其各位数字的立方和等于它本身。例如:153 = 1³ + 5³ + 3³。在这道题目上考察的就是整数位数分离与幂运算逻辑,将数依次分隔得来之后,再进行if语句判断对每一位分别求立方(**3),判断三者之和是否等于原数 i,是否满足水仙花数的定义。
for i in range(100,1001):
num1=i//100 #i除以100之后取整,得到百位数
num2=(i//10)%10 #3位数先除以10取整得两位数,再除以10取余数,得十位上的数
num3=i%10 #三位数除以10取余,就是个位上的数
if num1**3+num2**3+num3**3 == i:
print(i) #输出的结果为153、370、371、407
知识点讲解:
if语句中的“**”是幂运算(次方)符号,比如2 ** 3(2 的 3 次方)=8。-
三位数的百位用
// 100得出 -
十位:先除以 10 去掉个位,再
% 10取十位 -
个位:直接
i % 10
总结
对于每道题来说,执行的代码都不长,但理解其中的逻辑和语法并不简单,精准掌握这些“简单语法”,决定了你解决问题的速度与思维效率。其中涉及到的内容罗列如下:
| 题号 | 巩固语法 | 理解逻辑核心 |
| ① | 比较运算、逻辑组合 | 多条件精确判断 |
| ② | 字符串拼接、字典构建| 如何动态生成结构化数据 |
| ③ | 列表遍历、索引访问 | 键值配对、数据字段绑定 |
| ④ | ASCII 判断 | 手写字符分类,训练逻辑推导能力 |
| ⑤ | 整数除法与幂运算 | 取位技巧与数学逻辑验证 |
如果你想继续巩固字符串处理、循环逻辑、Python函数写法、列表推导式等内容,之后也会持续更新,敬请期待!欢迎留言或收藏关注!
2013






