python - 初学者:当限制设置为三个最大值时,为什么我的代码执行第四次猜测?
问题描述
如果您的猜测在“三次猜测”限制内,则下面的代码运行良好,但如果您第三次猜测错误,则猜测任务会出于某种原因再次询问。这不是我想要的。即使你第三次做对了,程序也会结束。该怎么办?
代码:
secret_number = 6 #random.randint(1, 12)
print("We are going to play a guessing game.")
guess_count = 3
guess = int(input('Try figuring out the computers number between 1 and 12: '))
while guess_count > 0:
if int(guess) != int(secret_number):
if int(guess) > int(secret_number):
guess = input('Too high. Try again: ')
guess_count = guess_count - 1
elif int(guess) < int(secret_number):
guess = input('Too low. Try again: ')
guess_count = guess_count - 1
elif int(guess) == int(secret_number):
print("THAT'S CORRECT!")
break
else:
print("Well, you tried.")
输出:
We are going to play a guessing game.
Try figuring out the computers number between 1 and 12: 12
Too high. Try again: 1
Too low. Try again: 4
Too low. Try again: 6
Well, you tried.
解决方案
每次用户在循环中猜错时,guess_count
减 1,并调用该input
函数要求用户再次猜测。所以这会做三遍;但是该input
函数也在循环之前使用,给用户一个额外的猜测。
要解决此问题,您可以guess_count
在循环之前设置为 2,以便用户在循环中获得两次猜测,包括循环之前的一共有三个猜测。但是最好input
只在循环开始时使用该函数,而不是在循环之前,也不是在错误猜测之后;按照您目前的方式,即使用户没有任何猜测,在错误猜测后也会再次询问用户。
推荐阅读
- vue.js - 如何在 Ag-grid 上使用 id 参数导航到另一个页面?
- css - 如何将我的 React 组件放置在导航栏下方(这样导航栏不会与它重叠)?
- c - 主要发生之前的段故障
- angular - Angular - 您可以在没有初始值的情况下在 FormControl 上使用验证器吗?
- list - numpy 与 cython,在大型数据集迭代上更快吗?
- r - 为什么 as.numeric() 删除所有小数?
- android - 应用程序 A 启动应用程序 B 然后应用程序 A 关闭离开应用程序 B open.in Android ..如何实现?
- c++ - 使用 g++ 编译服务 DLL 以在 SvcHost.exe 中使用
- javascript - 如何使用 postinstall 编辑 package.json
- notepad++ - 当前工作目录中的自动完成文件名 Notepad++ 项目