选择习题
以下选项符合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
注释:这是一个条件表达式,if-else。x<y的时候把x赋值给min,求最小值,如果x<y为False的时候,把y赋值给min
实战一、输入一个年份,判断是否为闰年
需求:从键盘获取一个四位的整数年份,判断其是否为闰年,闰年的判断条件为:能被4整除但不能被100整除,或者能被400整除。
//我的错误示范,没有正确运行,我只关注到了题本中提到的整除
year = eval(input("请输入一个四位的年份:"))
if year//4 and not year//100:
print(year,"是闰年")
elif year//400:
print(year,"是闰年")
else:
print(year,"是平年")
// 正确解答,采用取余的方式,且可以在if语句中使用()and或or
year = eval(input("请输入一个四位的年份:"))
if (year%4==0 and year%100!=0) or year%400==0:
print(year, "是闰年")
else:
print(year, "是平年")
实战二 、模拟10086查询功能:
需求:输入1,显示当前余额;输入2,显示当前的剩余流量,单位为G;输入3,显示当前的剩余通话,单位为分钟;输入0,退出自助查询系统。
// 自己尝试解答,正常运行测试用例,但没关注到输入错误怎么处理
ye = input("请输入您的余额:")
l = input("请输入当前剩余流量:")
th = input("请输入当前剩余通话时间:")
print("---------欢迎使用10086查询系统---------------")
print("1、查看当前余额")
print("2、查看当前剩余流量")
print("3、查看当前剩余通话时间")
print("0、退出系统")
i = eval(input("请输入您当前要执行的操作:"))
answer = 'y'
while answer =='y':
while i>=0 and i<4:
if i==0:
break
elif i == 1:
print("当前余额为",ye)
break
elif i == 2:
print("当前剩余流量为",l,"G")
break
elif i == 3:
print("当前剩余通话时间",th,"min")
break
if i==0:
print("程序退出,谢谢您的使用")
break
answer=input("还继续操作么?y/n")
if answer == "n":
print("程序退出,谢谢您的使用")
break
i = eval(input("请输入您当前要执行的操作:"))
// 官方示例,没关注到y/n这部分,输入错误怎么处理
answer='y'
while answer == 'y':
print("---------欢迎使用10086查询系统---------------")
print("1、查看当前余额")
print("2、查看当前剩余流量")
print("3、查看当前剩余通话时间")
print("0、退出系统")
choice = input('请输入您当前要执行的操作:')
if choice == '1':
print("当前余额为213元")
elif choice == '2':
print("当前剩余流量为124GB")
elif choice == '3':
print('当前剩余通话时间2176min')
elif choice == '0':
print("程序退出,谢谢您的使用")
break
else:
print("对不起,您输入的有误,请重新输入")
answer = input("还继续操作么?y/n")
else:
print("程序退出,谢谢您的使用")
实战3、使用嵌套循环输出九九乘法表
// 本人作答,正常运行,但占位置比较大
for i in range(1,10):
for j in range(1,10):
if i == j:
print(i,"*",j,"=",i*j)
break
else:
print(j,"*",i,"=",i*j,end=" ")
print()
// 官方作答,采用打印菱形三角形那部分学到的内容,找i和内置j循环次数的关系,并且利用字符串连接的方式进行打印输出。end='\t'一个制表位,目的是为了让之间距离大一些
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+"*"+str(i)+'='+str(i*j),end="\t")
print()
实战4、猜数游戏
需求:随机生成一个1~100之间的整数,然后用户循环猜这个数,对于用户的输入,可提示“大了”,“小了”,直到猜准为止,输出用户的猜测次数。
产生随机数的代码如下:
import random //这个随机数函数生成的数包含1也包含100
rand = random.randint(1,100)
本人作答,正常运行,不过运行测试了很久一直在矛盾break和continue的问题,我之前在每次if判断后加了break,当时想着结束本次循环,但其实每次都直接结束了整个程序。加了continue后,又会一直无限循环的打印"大了"。我忽略了一点,while本来就是一个循环语句,只需要在最后加入条件改变变量的语句,程序自然会进入下次循环的。
//本人作答,正常运行
import random
rand = random.randint(1,100)
print(rand)
s = 0
user = eval(input("在我心中有个数,1-100之间,请你猜一猜:"))
while user>0 and user<101:
s += 1
if user>rand:
print("大了")
elif user<rand:
print("小了")
else:
print("猜对了!")
print("还可以,共猜了",s,'次')
break
user = eval(input("在我心中有个数,1-100之间,请你猜一猜:"))
else:
print("您输入超过有效范围,请重新输入1-100的数字")
// 官方作答
import random
rand = random.randint(1,100)
count = 1
while count<=10:
number = eval(input("在我心中有个数,1-100之间,请你猜一猜:"))
if number==rand:
print("猜对了!")
break
elif number>rand:
print("大了")
else:
print("小了")
count += 1
if count<=3:
print("真聪明!一共猜了",count,"次")
elif count<=6:
print("还可以!一共猜了",count,"次")
else:
print("猜的次数有点多啊!一共猜了", count,"次")