由计算机随机产生一个4位整数,请人猜这4位整数是多少。人输入一个4位数后,计算机首先判断其中有几位猜对了,并且对的数字中有几位位置也正确,将结果显示出来,给人以提示,比如几个数字对,几个位置是对的,请人再猜,直到人猜出计算机随机产生的4位数是多少为止。
下面直接上代码:
########################
import random
if __name__ == "__main__":
z = random.randint(1000, 10000) # 随机生成[1000,10000)之间的数
print("答案是:", z)#控制是否显示答案
print("机器输入四位数:****")
l = [0] * 4 # 存储4位随机数
c = 1 # 变量c为猜数次数计算器
while True:
g = int(input("请输入你猜的四位整数:"))
a = z
j = 0 # 变量j表示数字正确的位数用A表示
k = 0 # 变量k表示位置正确的位数用B表示
l[0] = l[1] = l[2] = l[3] = 0
# 变量i表示原数中的第i位数。个位为第1位,千位为第4位
for i in range(1, 5):
s = g
m = 1
for t in range(1, 5): # 人所猜想的数
if a % 10 == s % 10: # 若第i位与人猜的第t位相同
# 若该位置上的数字尚未与其他数字“相同”
if m and t != l[0] and t != l[1] and t != l[2] and t != l[3]:
j += 1
m = 0
l[j-1] = t # 记录相同数字时,该数字在所猜数字中的位置
if i == t:
k += 1 # 若位置也相同,则计数器k加1
s //= 10
a //= 10
print("你猜的结果是:%d个数字对,%d个位置对\n" %(j, k))
if k == 4:
print("****** 你赢了 ******")
break # 若位置全部正确,则人猜对了,退出
c += 1
print("你总共猜了 %d 次" %c)
########################
执行结果如下:
答案是: 9692
机器输入四位数:****
请输入你猜的四位整数:9690
你猜的结果是:3个数字对,3个位置对
请输入你猜的四位整数:9693
你猜的结果是:3个数字对,3个位置对
请输入你猜的四位整数:9692
你猜的结果是:4个数字对,4个位置对
****** 你赢了 ******
你总共猜了 3 次
因为开启了答案,所以算是测试。
________________END______________
网友评论