Python语⾔程序设计基础(第2版)第四章课后习题答案程序练习题
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))
python基础代码练习except NameError:excel制作表格全步骤
print('请输⼊数字!')
运⾏结果如下:
请输⼊1-9之内的整数:a
请输⼊数字!
>>>
relay race
请输⼊1-9之内的整数:8
遗憾,太⼩了
请继续输⼊数字:9
预测2次,你猜中了!
4.2 统计不同字符的个数
代码如下:
#统计字符.py
a,b,c,d,e =0,0,0,0,0
Str =input()
for item in Str:
if0x4e00<=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))
if car_door != guess_num:
else:#当参赛者选择有车的门,主持⼈随机选择⼀个有⽺的门
sheep_1 = doors[random.randint(0,1)]
#  print("第{}号门后有⽺".format(sheep_1))
if guess_num == car_door:
counts_1 +=1#不改变选择选择正确的次数
doors =[1,2,3]
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
java类的属性和方法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('输⼊格式有误,请重新输⼊')
find命令查文件内容包含TempStr =input('请输⼊带有符号的温度值(仅输⼊回车结束):')
except:
print('输⼊格式有误,请重新输⼊')
TempStr =input('请输⼊带有符号的温度值(仅输⼊回车结束):')
运⾏结果:
请输⼊带有符号的温度值(仅输⼊回车结束):a
输⼊格式有误,请重新输⼊
请输⼊带有符号的温度值(仅输⼊回车结束):23
输⼊格式有误,请重新输⼊
请输⼊带有符号的温度值(仅输⼊回车结束):33C
转换后的温度是:91.40F
wxpython oglcanvasProcess finished with exit code 0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。