python - 如何确保在while循环中只扣除一次int(python3)
问题描述
所以我创建了一个程序“公牛和奶牛”。在其中,计算机随机生成一个四位数字。然后用户必须猜测一个四位数的数字。如果数字是计算机中的 4 位数字,那么你会得到一头公牛,如果不是,你会得到一头牛。程序一直运行,直到用户获得所有四位数字。
我认为它可以工作,直到我只输入一个数字中的四个,它仍然接受它。我尝试添加一个 if 语句,但是现在它不计算任何已经存在的正确数字。
import random
number = random.choice(range(1000, 9999))
number = str(number)
print(number)
flag = True
while flag:
cow = 0
bull = 0
user = input('Number ')
user = str(user)
for item in user:
x = number.count(item)
y = int(item)
if y <= x:
bull += 1
else:
cow += 1
print(f"You have {bull} bulls, and {cow} cows!")
if bull == 4:
print(f'The computers number is {number}')
flag = False
else:
print("Guess again")
我一直在尝试各种不同的方法来尝试解决我的问题,但我就是无法解决:(
解决方案
制作number
. 然后当用户猜对一个数字时,将其从该副本中删除。这样,如果他们对数字的猜测次数超过了数字中出现的次数,则不会复制额外的猜测。
此副本应该是一个列表,因此您可以使用它的remove()
方法。
while True:
cow = 0
bull = 0
user = input('Number ')
num_list = list(number)
for item in user:
if item in num_list:
bull += 1
num_list.remove(item)
else:
cow += 1
print(f"You have {bull} bulls, and {cow} cows!")
if bull == 4:
print(f'The computer's number is {number}')
break
else:
print("Guess again")
推荐阅读
- rest - 如何修改 Hyperledger Composer REST 服务器发行的卡片中的 connection.json 文件
- python-2.7 - odoo10 中的仪表板
- node.js - 节点静态文件服务器,如何使响应在异步回调中工作?
- javascript - amp-story 中的事件和事件对象如何工作?是否有完整的 AMP 事件和操作列表?是否有 amp-story 的完整列表?
- python - Pandas 数据框绘制每列的回归曲线
- domain-driven-design - 事件溯源关系和基础知识
- vuejs2 - 单击时根据搜索热更新 v-for 循环
- python - nbconvert 在哪里存储中间 .tex 文件?
- html - 如何使用电子邮件处理媒体查询/非内联样式。
- java - 在表格中显示属性