回答一下 在Python 猜数游戏中 while 循环里 guess=int(input(""))和 if int(guess) 使用有什么区别呢 这一问题中 Python_Leaner的问题

在这里首先先感谢 Python_Leaner 给指出的问题 我这边改正之后程序运行没问题了 ,然后再来回复一下他同时抛出的问题
先把他的问题摆出来,我就直接截图了:
在这里插入图片描述
首先我先吧代码重新打了一遍 但是不知道为什么 他的代码在我这边会报错 (会不会是以内我用的是IDLE的原因)所以我就把代码简单改了一下 :

from random import randint 
secret = randint(1, 99)
guess = 0
tries = 0
print ("你有8次机会猜1-99之间的一个数")
while int(guess) != secret and tries < 8:
    guess = input("what's yer guess? ")
    if int(guess) < secret:
        print ("太小")
    elif int(guess) > secret:
        print ("太大!")
    tries = tries + 1
    print ("第 %s 次机会." % str(tries) )
if int(guess) == secret:
    print ("答对了")
else:
    print ("没有机会了!")
print ("正确答案",secret)

运行结果如下:
在这里插入图片描述
然后我们可以看到我俩的代码有点不同就是我第三个 if 没有缩进的。我先来说一下if缩进与不缩进的区别,说完if也就会懂else了
1、如果if缩进了就相当于这个if是在while循环内了,那这样在运行程序时会出现一个问题,就是当你猜对了的时候,运行完if他会在直接运行else 也就是会将else的 没有机会了也给输出出来,结果如下:
在这里插入图片描述
2、如果if没有缩进 相当于在while的循环外 当你猜对的时候就会直接跳出循环 从而运行if 而且也不会在运行else 而是输出最后结果:正确答案 。这是因为这个没有缩进的if在这段代码中是和while属于同一个级别,当他会发现你输入的数和随机的数相等时会认为这个程序结束而直接结束运行从而输出:答对了 ;在输出:最后一行的print的:正确答案,也就是会跳过else,因为if 和else在这里的等级是一样的都没有缩进且是互斥的,输出了if就不会输出else。
3、 tries = tries + 1
print (“第 %s 次机会.” % str(tries) )
这短代码放在if上面和下面都是一样的,没有区别。
4、这回能懂了么为什么你的代码里的else感觉毫无意义,就是因为你的程序运行完if 猜对了之后并没有直接跳出循环去走print的:正确答案,而是直接运行了else,(因为你的if是缩进的);就因为这个else是和while是同一个等级。且if语句执行有个特点,它是从上往下判断,如果在某个判断上是True(真)时,把该判断对应的语句执行后,就忽略掉你程序中的else了。

我也是小白 第一次提问,第一次写博客解答问题有描述不懂得见谅 或者
再有啥不理解的可以加我扣扣:1691598339

发布了40 篇原创文章 · 获赞 11 · 访问量 4761
展开阅读全文

游戏 while 循环 guess=intinput(""))和 if intguess使用有什么区别

03-20

1.Python中我按照python 2的教材在python 3 上写了一个猜数小游戏 但是运行之后 我写的代码在我猜对了数之后不会跳出循环, 而是又一次的开始了循环,直到次数用完。后来找大神改了一下代码可以成功运行了,但是对于其中 guess=int(input(""))和 if int(guess)有了疑问。 我用的就是Python自带的 IDLE 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) ``` 如果我按照教材上的代码运行会报错: ![图片说明](https://img-ask.csdn.net/upload/201903/20/1553050969_242814.png) 大概意思就是不同的类型不能比较大小。所以我就在我的代码上改进了一下。 (2)我自己的代码: 因为教材上是在py 2上写的 我是在Py 3写的 所以有一点改动就是在guess前面加上了int ``` 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) ``` 但是我自己写的是可以运行了但是不会跳出while循环 我就很奇怪了,下面是我的运行结果报错: ![图片说明](https://img-ask.csdn.net/upload/201903/20/1553051240_145796.png) 就是说我在第五次已经猜对了,但是并没有跳出循环而是继续让我猜了。(不能使用break,就是用单纯的while循环) (3)大神改进后的代码:大神只是在教材上的代码稍加改动,结果就可以正确运行了,大神在源代码的 ``` guess = input("what's yer guess? ") ``` 改成了 ``` guess = int(input("what's yer guess? ")) ``` 是在input钱加了int 详细如下: ``` 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) ``` 这样就可以完美输出了结果如下: ![图片说明](https://img-ask.csdn.net/upload/201903/20/1553051996_729559.jpg)在第七次猜对之后直接跳出循环并结束了;大神给我简单解释说:在input上加, guess就是一个数值类型了,并且在当前循环中都是的; 你在 if int(guess)中这样使用 只是把输入的字符串变成了int 并没有赋值 ,此时guess还是字符串类型,你这种 guess = int(guess) 把转换成int的重新赋值在一个变量上才行.如果我输入40 本应该和随机的相等的,但是此时的40不是int 类型啊,字符串和int做比较,那怎么会相等呢."if ‘40’== 40,是这种形式了". 但是我不理解的是既然我的方法并没有让guess变成int型那代码是怎么运行并且还判断了大小了呢。 为此我有和我学Java的同学聊了一下 但是Java和Python语法上会有相差没有搞懂: ![图片说明](https://img-ask.csdn.net/upload/201903/20/1553052859_519457.png) 现在就想请教一下大神 我这个是一个什么情况 ,第一次提问还是恳请大神讲解一下 本人是自学小白 只是大学学了一点编程 **再补充一下**: 就是我自己改的代码哪里一直没有跳出循环我一开始以为是缩进问题,但是我试过了并不是 而且我试着在print("答对了")下一行加上 break 结果我的代码就也能比较大小也能完美运行了,所以就对大神给我的解释更蒙了 # 我这个其实总共出现了两个问题吧一个是我的那种方法为什么不会跳出循环呢 第二个就是按照大神那样的改的话while 循环里 guess=int(input(""))和 if int(guess) 使用有什么区别呢 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览