###### 长安白猫

2019-03-20 11:51 阅读 2.5k

# 在猜数游戏中 while 循环里 guess=int（input（""））和 if int（guess） 使用有什么区别呢

1.Python中我按照python 2的教材在python 3 上写了一个猜数小游戏 但是运行之后 我写的代码在我猜对了数之后不会跳出循环, 而是又一次的开始了循环，直到次数用完。后来找大神改了一下代码可以成功运行了，但是对于其中 guess=int（input（""））和 if int（guess）有了疑问。

2.教材上的代码：

``````import random
secret = random.randint(1, 99)
guess = 0
tries = 0
print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!")
print ("It is a number from 1 to 99,I'll give you 8 tries. ")
while guess != secret and tries < 8:
guess = input("what's yer guess? ")
if guess < secret:
print ("太小")
elif guess > secret:
print ("太大!")
tries = tries + 1
if guess == secret:
print ("答对了")
else:
print ("没有机会了!")
print ("正确答案",secret)
``````

（2）我自己的代码：

``````import random
secret = random.randint(1, 99)
guess = 0
tries = 0
print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!")
print ("It is a number from 1 to 99,I'll give you 8 tries. ")
while guess != secret and tries < 8:
guess = input("what's yer guess? ")
if int(guess) < secret:
print ("太小")
elif int(guess) > secret:
print ("太大!")
tries = tries + 1
if int(guess) == secret:
print ("答对了")
else:
print ("没有机会了!")
print ("正确答案",secret)
``````

（3）大神改进后的代码：大神只是在教材上的代码稍加改动，结果就可以正确运行了，大神在源代码的

``````guess = input("what's yer guess? ")
``````

``````guess = int（input("what's yer guess? ")）
``````

``````import random
secret = random.randint(1, 100)
guess = 0
tries = 0
print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!")
print ("It is a number from 1 to 99,I'll give you 8 tries. ")
while guess != secret and tries < 8:
guess = int(input("what's yer guess? "))
if guess < secret:
print ("太小")
elif guess > secret:
print ("太大!")
tries = tries + 1
if guess == secret:
print ("答对了")
else:
print ("没有机会了!")
print ("正确答案",secret)
``````

# 我这个其实总共出现了两个问题吧一个是我的那种方法为什么不会跳出循环呢 第二个就是按照大神那样的改的话while 循环里 guess=int（input（""））和 if int（guess） 使用有什么区别呢

• 点赞
• 写回答
• 关注问题
• 收藏
• 复制链接分享

#### 2条回答默认 最新

• 已采纳
Python_Leaner 2019-03-20 12:54

首先，我也是自学小白，在看python从入门到实践，也就是python创始人写的书。你的问题我看了下，我自己写过后发现，兄弟，你在下面的if
语句中用了int(guess)，那么上面while呢？ 难道不应该是 while int(guess) != secret and tires < 8 : 吗？后面的你就不用改了
看我耐心的看了你的代码后，你看看我的代码，能在猜对了就退出，还能显示猜的次数，但是我这也有不明白的，我那个else为什么可以在哪个位置，不用缩进。我去，自己都把自己尴尬到了，你自己copy后运行一下(csdn中缩进我还是不会搞于是我就贴图了)，猜对猜错都试一试，然后咱么两个小白互补一下
还有就是第三个if也可以是elif，亲测效果都一样。当然，你可别错过这条！！！！！！！！！！！！！！！！！！！！！！！！后面看其他代码时突然想到一个问题，就是else无意义，于是去掉了，然后发现运行结果一致，噗笑哭，所以图片里面的else没意义，完全可以去掉，不过如果想在完成游戏(无论是猜对还是猜错)都有over输出，就请一定要注意缩进。！！！！

点赞 评论 复制链接分享
• qq_38361995 2019-03-20 12:42

while guess!=secret and tries<8,你这循环的条件就是不够8次，就算猜对了也会再次循环的啊

点赞 评论 复制链接分享