Python语言程序设计基础(第2版)第四章课后习题答案
程序练习题4.1猜数游戏代码如下(加入了异常捕获):import randomnum = random.randint(1,9)counts =1try:guess_num = eval(input('请输入1-9之内的整数:'))whileguess_num!= num:if guess_num > num:print('遗憾,太大了')
·
程序练习题
4.1猜数游戏
代码如下(加入了异常捕获):
import random
num = random.randint(1,9)
counts =1
try:
guess_num = eval(input('请输入1-9之内的整数:'))
while guess_num != num:
if guess_num > num:
print('遗憾,太大了')
elif guess_num < num:
print('遗憾,太小了')
counts += 1
guess_num = eval(input('请继续输入数字:'))
print('预测{}次,你猜中了!'.format(counts))
except NameError:
print('请输入数字!')
运行结果如下:
请输入1-9之内的整数:a
请输入数字!
>>>
请输入1-9之内的整数:8
遗憾,太小了
请继续输入数字:9
预测2次,你猜中了!
4.2 统计不同字符的个数
代码如下:
#统计字符.py
a,b,c,d,e = 0, 0, 0, 0, 0
Str = input()
for item in Str:
if 0x4e00 <= ord(item) < 0x9fa6:
a += 1
elif ord('0') <= ord(item) <= ord('9'):
b += 1
elif ord('a') <= ord(item) <= ord('z') or ord('A') <= ord(item) <= ord('Z'):
c += 1
elif ord(' ') == ord(item):
d += 1
else:
e += 1
print('中文字符有{}个,数字字符有{}个,英文字符有{}个,空格字符有{}个,其他字符有{}个。'.format(a,b,c,d,e))
结果如下:
Hello World!你好 世界。:)
中文字符有4个,数字字符有0个,英文字符有10个,空格字符有2个,其他字符有4个。
4.3 最大公约数与最小公倍数
代码如下:
#最大公约数与最小公倍数
a,b = eval(input('请输入两个需要求解的数(用逗号隔开):'))
c = max(a,b)
d = min(a,b)
while c % d != 0:
e = c % d
c = d
d = e #辗转相除法
f = (a*b)/e
print('最小公约数是{},最大公倍数是{}'.format(e,int(f)))
运行结果
请输入两个需要求解的数(用逗号隔开):7,8
最小公约数是1,最大公倍数是56
请输入两个需要求解的数(用逗号隔开):15,25
最小公约数是5,最大公倍数是75
4.4 猜数游戏续
#猜数游戏续
import random
num = random.randint(0,100)
counts = 0
try:
guess_num = eval(input('请输入1-100之内的整数:'))
while guess_num != num:
if guess_num > num:
print('遗憾,太大了')
elif guess_num < num:
print('遗憾,太小了')
counts += 1
guess_num = eval(input('请继续输入数字:'))
print('预测{}次,你猜中了!'.format(counts))
except NameError:
print('请输入数字!')
运行结果
请输入1-100之内的整数:70
遗憾,太大了
请继续输入数字:40
遗憾,太大了
请继续输入数字:20
遗憾,太大了
请继续输入数字:10
遗憾,太大了
请继续输入数字:3
遗憾,太小了
请继续输入数字:7
遗憾,太小了
请继续输入数字:9
遗憾,太大了
请继续输入数字:8
预测7次,你猜中了!
请输入1-100之内的整数:30
遗憾,太大了
请继续输入数字:5
遗憾,太小了
请继续输入数字:10
遗憾,太小了
请继续输入数字:15
遗憾,太小了
请继续输入数字:20
遗憾,太大了
请继续输入数字:17
预测5次,你猜中了!
4.5 猜数游戏续
#猜数游戏续
import random
num = random.randint(0, 100)
counts = 1
guess_num = input('请输入1-100之内的整数(仅键入空格退出):')
while guess_num != '':
try:
guess_num = eval(guess_num)
#eval不能判断非整数的数字,加入isinstance(obj, int)判断输入是否为整数
if guess_num > num and isinstance(guess_num, int):
print('遗憾,太大了')
counts += 1
guess_num = input('请继续输入数字:')
elif guess_num < num and isinstance(guess_num, int):
print('遗憾,太小了')
counts += 1
guess_num = input('请继续输入数字:')
elif guess_num == num and isinstance(guess_num, int):
print('预测{}次,你猜中了!'.format(counts))
break
else:
print('输入内容必须为整数!')
counts += 1
guess_num = input('请继续输入数字:')
except:
print('输入内容必须为整数!')
counts += 1
guess_num = input('请继续输入数字:')
运行结果
请输入1-100之内的整数(仅键入空格退出):3.3
输入内容必须为整数!
请继续输入数字:15
遗憾,太小了
请继续输入数字:80
遗憾,太大了
请继续输入数字:a
输入内容必须为整数!
请继续输入数字:70
遗憾,太小了
请继续输入数字:76
遗憾,太大了
请继续输入数字:73
遗憾,太小了
请继续输入数字:72
遗憾,太小了
请继续输入数字:71
遗憾,太小了
请继续输入数字:75
遗憾,太大了
请继续输入数字:74
预测11次,你猜中了!
Process finished with exit code 0
4.6 羊车门问题
import random
num, counts_1, counts_2 = 0, 0, 0
while num < 10000:
doors = [1, 2, 3]
car_door = random.randint(1, 3)#该门后有车
# print("有车的是第{}号门".format(car_door))
guess_num = random.randint(1, 3)#参赛者选择的门
# print("参赛者选择第{}号门".format(guess_num))
doors.remove(car_door)#将有车的门从主持人的选择中移除
if car_door != guess_num:
doors.remove(guess_num)#当参赛者没有选到有车的门时,将参赛者选择的门移除,此时主持人仅能选择剩下的门
sheep_1 = doors[0]
else:#当参赛者选择有车的门,主持人随机选择一个有羊的门
sheep_1 = doors[random.randint(0, 1)]
# print("第{}号门后有羊".format(sheep_1))
if guess_num == car_door:
counts_1 += 1#不改变选择选择正确的次数
doors = [1, 2, 3]
doors.remove(sheep_1)
doors.remove(guess_num)
guess_num = doors[0]
if guess_num == car_door:
counts_2 += 1#改变选择选择正确的次数
num += 1
print("不改变选择正确的概率为:{:.2%}".format(counts_1/10000))
print("改变选择正确的概率为:{:.2%}".format(counts_2/10000))
运行结果,根据结果显示,换门会将猜对的概率由1/3提高至1/2:
不改变选择正确的概率为:33.64%
改变选择正确的概率为:66.36%
Process finished with exit code 0
4.7 异常处理改造实例1(温度转换实例),使其能够接受并处理用户的任何输入
TempStr = input('请输入带有符号的温度值(仅输入回车结束):')
while TempStr != '':
try:
if TempStr[-1] in ['F', 'f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print('转换后的温度是{:.2f}C'.format(C))
break
elif TempStr[-1] in ['C', 'c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print('转换后的温度是:{:.2f}F'.format(F))
break
else:
print('输入格式有误,请重新输入')
TempStr = input('请输入带有符号的温度值(仅输入回车结束):')
except:
print('输入格式有误,请重新输入')
TempStr = input('请输入带有符号的温度值(仅输入回车结束):')
运行结果:
请输入带有符号的温度值(仅输入回车结束):a
输入格式有误,请重新输入
请输入带有符号的温度值(仅输入回车结束):23
输入格式有误,请重新输入
请输入带有符号的温度值(仅输入回车结束):33C
转换后的温度是:91.40F
Process finished with exit code 0
更多推荐
已为社区贡献1条内容
所有评论(0)