Python小白学习教程从入门到入坑------习题课2(基础巩固)
目录
一、选择题
二、实战题
2.1 实战1:输入一个年份,判断是否是闰年
2.2 实战2:模拟10086查询功能
2.3 实战3:使用嵌套循环输出九九乘法表
2.4 实战4:猜数游戏
一、选择题
1、以下选项符合Python语法要求且能够正确执行的是:( B )
A. min=x if x<y =y
B. min=x if x<y else y
C. if (x>y) print(x)
D. min=x>y ? x:y
【解析】:
选项 A 有语法错误,因为它错误地使用了赋值操作符 = 在条件表达式中。
选项 B 是正确的,因为它正确地使用了 Python 的条件表达式语法。
选项 C 有语法错误,因为它缺少了 if 语句后必需的冒号和缩进的代码块。
选项 D 有语法错误,因为它使用了 C 语言风格的条件表达式,这在 Python 中是不合法的。
2、下面代码的输出结果是(C)
for i in range(8):if i%2!=1:continueelse:print(i,end=',')
A. 0
B. 1
C. 1,3,5,7
D. 0,2,4,6
【解析】:
循环范围:range(8) 生成一个从 0 到 7 的整数序列(包括 0,不包括 8)
条件判断:if i % 2 != 1 检查 i 是否为奇数。这里 % 是取模运算符,i % 2 计算 i 除以 2 的余数。如果余数不等于 1(即 i 不是奇数),则执行 continue 语句
continue 语句:continue 会跳过当前循环的剩余部分,并继续下一次循环迭代。这意味着如果 i 不是奇数,print 语句将不会被执行
3、以下选项中不能退出循环的是 ( A )
while True:num = eval('请输入一个整数:')if num//3:break
A. 2
B. 3
C. 4
D. 7
【解析】:if num // 3: 语句检查 num 除以 3 的整数商是否非零。在 Python 中,整数除法 // 会返回商的整数部分,如果结果不为零,则条件为真
4、下面代码输出的图形是 ( A )
for i in range(-3,4):if i<0:print(' '*(-i)+'*'*(4+i))elif i>0:print(' '*3+'*'*(4-i))else:print('*'*7)
【解析】:
循环范围:
range(-3, 4) 生成一个从 -3 到 3 的整数序列(包括 -3,不包括 4)
条件判断:
如果 i < 0,则执行第一个 print 语句
如果 i > 0,则执行第二个 print 语句
如果 i == 0,则执行 else 子句中的 print 语句
输出分析:
当 i = -3 时,输出 ' '*(-(-3)) + '*'*(4 + (-3)),即 ' '*3 + '*'*1,结果是: *
当 i = -2 时,输出 ' '*(-(-2)) + '*'*(4 + (-2)),即 ' '*2 + '*'*2,结果是: **
当 i = -1 时,输出 ' '*(-(-1)) + '*'*(4 + (-1)),即 ' '*1 + '*'*3,结果是: ***
当 i = 0 时,输出 '*'*7,结果是 *******。
下面同理可得...
将这些输出组合起来,我们得到的图形是:
******
*************
5、下面代码的输出结果是( B )
a = 0
for i in range(1,5):a+=i
print(a)
A. 0
B. 10
C. 11
D. 15
【解析】:
初始化:变量 a 被初始化为 0
循环:for i in range(1, 5): 创建一个循环,其中 i 的值从 1 变化到 4(包括 1,不包括 5)
循环体:在每次循环迭代中,执行 a += i,这相当于 a = a + i
累加过程:
当 i = 1 时,a 变为 0 + 1 = 1
当 i = 2 时,a 变为 1 + 2 = 3
当 i = 3 时,a 变为 3 + 3 = 6
当 i = 4 时,a 变为 6 + 4 = 10
输出结果:循环结束后,打印 a 的值,即 10
6、下面代码的输出结果是( B )
for i in 'Welcome to BeiJing':if i=='B':breakelse:print(i,end='')
A. Welcome
B. Welcome to
C. BeiJing
D. Welcome to BeiJing
【解析】:
循环:for i in 'Welcome to BeiJing': 创建一个循环,其中 i 将依次遍历字符串 'Welcome to BeiJing' 中的每个字符
条件判断:在每次循环迭代中,检查 i 是否等于 'B'
if 子句:如果 i 等于 'B',则执行 break 语句,立即终止循环
else 子句:如果 i 不等于 'B',则执行 print(i, end=''),打印字符 i 而不换行(end='' 参数指定了不以默认的换行符 \n 结尾)
最终结果:由于循环在遇到字符 'B' 时被终止,因此输出的字符串是 'Welcome to '(注意结尾有一个空格)
7、下面代码的输出结果是(D)
for i in 'python':for j in range(2):print(i,end='')if i == 'h':break
A. ppyytthhoonn
B. python
C. ppyytt
D. ppyytthoonn
【解析】:
外层循环:for i in 'python': 创建一个循环,其中 i 将依次遍历字符串 'python' 中的每个字符:'p', 'y', 't', 'h', 'o', 'n'
内层循环:对于外层循环中的每个 i,执行 for j in range(2):,这意味着内层循环将执行两次(j 的值为 0 和 1)
打印字符:在内层循环中,print(i, end='') 会打印字符 i 而不换行(由于 end='')
条件判断:接着,检查 if i == 'h':。如果条件为真(即 i 等于 'h'),则执行 break 语句
输出过程:
当 i = 'p' 时,内层循环打印 'pp'
当 i = 'y' 时,内层循环打印 'yy'
当 i = 't' 时,内层循环打印 'tt'
当 i = 'h' 时,内层循环第一次迭代打印 'h',然后遇到 if i == 'h': 条件为真,执行 break,跳出内层循环(因此不会打印第二个 'h')
当 i = 'o' 时,内层循环打印 'oo'
当 i = 'n' 时,内层循环打印 'nn'
最终结果:所有打印的字符连在一起,不换行,形成输出字符串
8、以下程序中,while循环的执行次数是( C )
i=0
while i<10:if i<1:print('Hello')continueif i==5:print('World')breaki+=1
A. 10 次
B. 4次
C. 死循环
D. 5次
【解析】:
初始化:变量 i 被初始化为 0
循环条件:while i < 10: 表示当 i 小于 10 时,循环继续执行
第一次循环:
i = 0,满足 i < 1,因此执行 print('Hello')
continue 语句导致跳过当前循环的剩余部分,直接进行下一次循环迭代,因此 i += 1 没有被执行
循环回到顶部,但由于 continue 跳过了 i += 1,i 仍然是 0
第二次循环(注意,这是由于上一步的 continue 导致的重新检查循环条件):
i = 0(仍然是 0,因为 i += 1 没有执行),满足 i < 1,再次执行 print('Hello')
再次遇到 continue,跳过 i += 1,
……
循环往复成为死循环
二、实战题
2.1 实战1:输入一个年份,判断是否是闰年
要求:从键盘获取一个四位的整数年份,判断其是否是闰年,闰年的判断条件为:能被4整除但不能被100整除,或者能被400整除。
【参考】:
year=eval(input("请输入一个四位的年份:"))
if(year%4==0 and year%100!=0) or year%400==0:print(year,"年是闰年")
else:print("year",'年是平年')
输入2023则输出:
请输入一个四位的年份:2023
2023 年是平年
输入2024则输出:
请输入一个四位的年份:2024
2024 年是闰年
2.2 实战2:模拟10086查询功能
需求:输入1,显示当前余额;输入2,显示当前的剩余流量,单位为G;输入3,显示当前的剩余通话,单位为分钟;输入0,退出自助查询系统。
【参考】:
#(1)初始化变量
answer='y'
#(2)条件判断
while answer=='y':
#(3)循环操作,语句块print('------------欢迎使用10086查询功能----------')print('1.查询当前余额')print('2.查询当前的剩余流量')print('3.查询当前的剩余通话时长')print('0.退出系统')choice=input('请输入您要执行的操作:') # input的结果是字符串类型if choice=='1':print('当前余额为:123.5元')elif choice=='2':print("当前的剩余流量为:4GB")elif choice=='3':print("当前的剩余通话时间长为:300分钟")elif choice=='0':print('程序退出,谢谢您的使用')breakelse:print('对不起,您输入的有误,请重新输入')# (4)改变变量answer=input("还继续操作吗?y/n")
else: # while...elseprint('程序退出,谢谢您的使用')
参考输出结果:不同的输入,对应不同的输出
------------欢迎使用10086查询功能----------
1.查询当前余额
2.查询当前的剩余流量
3.查询当前的剩余通话时长
0.退出系统
请输入您要执行的操作:1
当前余额为:123.5元
还继续操作吗?y/ny
------------欢迎使用10086查询功能----------
1.查询当前余额
2.查询当前的剩余流量
3.查询当前的剩余通话时长
0.退出系统
请输入您要执行的操作:3
当前的剩余通话时间长为:300分钟
还继续操作吗?y/nn
程序退出,谢谢您的使用进程已结束,退出代码 0
2.3 实战3:使用嵌套循环输出九九乘法表
要求:使用嵌套循环输出九九乘法表,内层循环与外层循环的关系,输出的数据的个数与行数相同,即第一行输出一个,1*1=1,第二行输出两个1*2=2 2*2=4 依次类推。
【参考】:
# 九九乘法表
for i in range(1, 10): # 外层循环控制行数for j in range(1, i + 1): # 内层循环控制每行输出的数据个数,与外层循环变量i相关# 输出乘法表达式和结果,注意格式化输出以保持对齐print(f"{j}*{i}={i*j}", end='\t') # 用制表符隔开# 每行输出完毕后换行print()
运行结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
2.4 实战4:猜数游戏
需求:随机生成一个1~100之间的整数,然后用户循环猜这个数,对于用户的输入,可提示“大了”,“小了”直到猜准确为止,输出用户的猜测次数(猜测次数不大于10次)。
【参考】:
import random# 随机生成一个1到100之间的整数
rand = random.randint(1, 100)count=1 # 记录猜数的次数while count<=10:# 获取用户的输入,并将其转换为整数number = int(input("在我心中有个数,在1-100之间,请你猜一猜: "))if number==rand:print('猜对了')breakif number < rand:print("小了")elif number > rand:print("大了")count+=1 # 每猜一次count次数要加1
# 判断次数
if count<=3:print('真聪明,一共猜了',count,'次')elif count <= 6:print('还可以,一共猜了', count,'次')
else:print('猜的次数有点多啊,一共猜了', count,'次')
程序运行结果:
在我心中有个数,在1-100之间,请你猜一猜: 50
小了
在我心中有个数,在1-100之间,请你猜一猜: 75
猜对了
真聪明,一共猜了 2 次
今天的分享就到这里了,希望能够对大家有所帮助~