python - 为什么while循环不会在成功时中断?
问题描述
我正在迈出编码的第一步,我正在开发一个生成随机数的小程序,用户必须猜测数字,直到选择的数字与生成的数字匹配。
出于某种原因,即使我给出了正确的数字,while 循环也不会中断。
import random
secretnumber = random.randint(1,10)
chosennumber = 0
while secretnumber != chosennumber:
print("Number selected. Please select a number between 1 and 10")
print ("hint! The number is " + str(secretnumber))
chosennumber = input()
if secretnumber!= chosennumber:
continue
print("please try again, think about the hint")
chosennumber = input()
if chosennumber == secretnumber:
break
print("you've guessed the correct number " + str(secretnumber))
解决方案
的返回值input()
是一个字符串。将字符串与整数进行比较总是会产生False
。您需要将字符串转换为 int 或将 int 转换为字符串以进行比较,以确保您正在比较相同类型的变量。
import random
secretnumber = random.randint(1,10)
chosennumber = 0
while secretnumber != chosennumber:
print("Number selected. Please select a number between 1 and 10")
print ("hint! The number is " + str(secretnumber))
chosennumber = int(input().strip())
if secretnumber!= chosennumber:
continue
print("please try again, think about the hint")
chosennumber = int(input().strip())
if chosennumber == secretnumber:
break
print("you've guessed the correct number " + str(secretnumber))
推荐阅读
- symfony - 在 symfony 中添加普通文本类型字段(不是文本框)
- dataframe - 使用 pandas styler 将逐行彩色数据框导出到 excel
- python - 更新 Azure 核心工具后 Python Azure 函数因 AttributeError('__enter__') 失败
- authentication - 我可以从 Blazor 客户端中的 AuthenticationStateProvider 访问我的 ID 令牌吗?
- reactjs - 为什么我会在此组件中获得额外的重新渲染?
- laravel - 如何在 Laravel 中 date_of_birth 的视图刀片上显示 Unknown
- python - 如何从具有多个文件的目录中仅拆分每个 pdf 文件的第一页?
- r - 使用 ggplot 绘制闪亮的反应数据
- c - 将指针的地址而不是指针作为函数参数传递
- sql-server - 在 Order By 子句中调用存储过程