【发布时间】:2013-10-09 09:09:12
【问题描述】:
我在网上找到了一些练习题,大部分都可以解决,但这道题难倒了我。它不是家庭作业,所以我没有得到成绩。但是,没有提供解决方案,因此获得答案的唯一方法就是这样做。
任务要求你写一个问题,玩数字 1-100 的数字猜谜游戏。但是,这个尝试通过区间猜测来猜测用户数,例如[1, 100],并使用first+last/2生成下一个问题。
我从该站点运行了一个示例。
想一个介于 1 和 100(含)之间的数字。
用字母 y 或 Y 回答以下问题,用字母 y 或 Y 表示是,n 或 N 表示否。
间隔:[1,100]。你的号码 间隔:[1,50]。你的号码 间隔:[1,25]。你的号码 间隔:[1,13]。你的号码 间隔:[8,13]。你的号码 间隔:[11,13]。你的号码 间隔:[11,12]。你的号码 您的号码是:11
到目前为止,这是我的代码,但我什至不知道从哪里开始,因为 while 循环不断给我一个无限循环。我知道“中间”数字需要是一个整数,否则它将是一个无限循环,但我似乎无法弄清楚如何做到这一点。
x = input("Is your numbr <=50?")
count = 100
while x=="y" or "Y":
count = count/2
x = input("Is your number <=",count,"?")
print(count)
如果有人有任何提示,将不胜感激。
【问题讨论】:
-
while循环的问题在于,x=="y" or "Y"并不代表您认为的那样。你想要x=="y" or x=="Y",或者x in ('y', 'Y')。 -
表达式
x=="y" or "Y"被评估为(x=="y") or "Y"(括号说明了评估的顺序)。由于非空字符串总是True,它就像(x=="y") or True,它总是True。你可能想要x in ("y", "Y"),或者更好的是x.lower() == "y"。
标签: python while-loop python-3.3