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创作不易,转载附上链接,感谢。