Python语言程序设计基础(第二版)P121代码示例

Orenda ·
更新时间:2024-11-13
· 589 次阅读

P121第四章课后习题代码示例

4.1 猜数游戏。在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”;小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中数字为止,显示“预测N次,你猜中了!” ,其中N 为用户输入数字的次数。

#猜数字游戏 N = 0 while True: s = eval(input("请输入一个(0-9)的整数:")) if s in [0,1,2,3]: N += 1 print("遗憾,太小了") elif s in [5,6,7,8,9]: N += 1 print("遗憾,太大了") elif s in [4]: N += 1 print("预测{}次,你猜中了".format(N)) break else: print("请输入正确的数字")

4.2 统计不同字符个数。用户从键盘输入一行字符,编写一个程序,统计并输入其中英文字符、数字、空格的个数。

#统计不同字符个数 s = input("请输入一行英文:") a = 0 b = 0 c = 0 try: for i in s: if ord('A') <= ord(i) <= ord('Z') or ord('a') <= ord(i) <= ord('z'): a += 1 elif ord('0') <= ord(i) <= ord('9'): b += 1 elif i == " ": c += 1 print("英文字符有{}个,数字有{}个,空格字符有{}个。".format(a,b,c)) except: print("输入内容有误!")

在这里插入图片描述
4.3 最大公约数计算。从键盘接收两个整数,编写程序求出这两个整数的最大公约数和最小公倍数。

import math #最大公约数计算。 def Yue(num0,num1): a = math.gcd(num0,num1) return a #math库里找不到最小公约数的函数 # 最小公倍数计算 def Bei(num2,num3): b = [] for i in range(1,(num2 * num3)+1): if i % num2 == 0 and i % num3 == 0: b.append(i) break #结束循环 return b[0] print("请输入要求的最大公约数") num0 = eval(input("请输入第一个整数:")) num1 = eval(input("请输入第二个整数:")) print(Yue(num0,num1)) print("请输入要求的最小公倍数") num2=int(input("请输入第一个整数:")) num3=int(input("请输入第二个整数:")) print(Bei(num2, num3))

在这里插入图片描述
4.4 猜数字游戏续。其他游戏规则不变。让计算机随机产生一个预设数字,范围在1-100之间。

#猜数字游戏2 import random N = 0 while True: s = random.randint(0,101) if s in list(range(0,40)): N += 1 print("系统输入的是{}".format(s)) print("遗憾,太小了") elif s in list(range(70,101)): N += 1 print("系统输入的是{}".format(s)) print("遗憾,太大了") elif s in list(range(40,69)): N += 1 print("系统输入的是{}".format(s)) print("预测{}次,猜中了".format(N)) break else: pass

在这里插入图片描述
4.5 猜数游戏续。基于4.4程序,当用户输入的不是整数时,程序自动终止。

#猜数字游戏 N = 0 while True: try: s = eval(input("请输入一个(0-9)的整数:")) if s in [0,1,2,3]: N += 1 print("你输入的数字是:{}".format(s)) print("遗憾,太小了") elif s in [5,6,7,8,9]: N += 1 print("你输入的数字是:{}".format(s)) print("遗憾,太大了") elif s in [4]: N += 1 print("预测{}次,你猜中了".format(N)) break except: print("输入内容必须为整数!请重新输入!")

在这里插入图片描述
4.6 题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?

#羊车门问题 import random as r #总次数 total=1000000 #1000,1W,10W,100W #换与不换的获胜次数 win1=0 win2=0 for i in range(total): #模拟选择过程 man=r.randint(1,3) car=r.randint(1,3) #结果:一开始为车门,不换+1. # 否则则一开始为羊门,换+1. if man==car: win1+=1 else: win2+=1 print("在{}次实验中:".format(total)) print("若不更改门,获胜概率为{:.3}%.".format((win1/total)*100)) print("若更改门,获胜概率为{:.3}%.".format((win2/total)*100))

声明一下此答案uper写不出,参考这位大佬的参考答案分析的很不错(点击跳转)
感谢大佬指点。
4.7 完美优化猜数字游戏(换汤不换药)。附上源码供参考一波吧。

#猜拳数字完美版 N = 0 while True: try: s = eval(input("请输入一个(0-9)的整数:")) if s in [0,1,2,3]: N += 1 print("你输入的数字是:{}".format(s)) print("遗憾,太小了") elif s in [5,6,7,8,9]: N += 1 print("你输入的数字是:{}".format(s)) print("遗憾,太大了") elif s in [4]: N += 1 print("预测{}次,你猜中了".format(N)) break else: print("你输入的数字是:{}".format(s)) print("请输入一个(0-9)的整数!!!") except: print("输入内容必须为整数!!!")

亲测代码都可以实现。如有优化更改之处留下宝贵意见!
uper创作不易,转载附上链接,感谢。


作者:maself



程序设计基础 p12 程序设计 程序 示例 p1 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号