鱼C论坛

 找回密码
 立即注册
查看: 2225|回复: 10

[已解决]Python循环语句出问题了啊

[复制链接]
发表于 2018-12-12 22:15:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
temp = input("猜数")
guess = int(temp)
while guess != 8:
    temp = input("重新输入")
    guess = int(temp)
    if guess == 8:
        print("对了")
    else:
            if guess > 8:
                print("大了")
            else:
                print("小了")
print("游戏结束")
   

为什么当我把第五行的 guess = int(temp)删除后 ,不管输入什么一直循环“大了”或者“小了”
最佳答案
2018-12-13 10:57:56
本帖最后由 sunrise085 于 2018-12-13 11:00 编辑

若是把第五行删除,那么在while循环中guess的值没有改变过,一直是开始时在第二行的赋值,guess的值没有更新,所以就在while循环中死循环了。

此外,你的程序其实有点问题,若是第一次就输入8,那么只会输出“游戏结束”,而不会输出“对了”。
while循环,是不需要在循环体里面判断是否符合while循环条件的。(在此例子中则是不需要在循环体中判断guess==8,因为若是guess==8,则循环会自动结束)
所以我帮你修改了一下程序(我没有运行,不知道标点符号有没有写错的,你试试吧)

temp = input("猜数")
guess = int(temp)
while guess != 8:
    if guess > 8:
        print("大了")
    else:
        print("小了")
    temp = input("重新输入")
    guess = int(temp)
print("对了")
print("游戏结束")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-13 00:17:41 | 显示全部楼层
因为你的guess 还是第2行的值。
第5行是从第4行取值,你删了,guess上哪里取值呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 08:04:01 | 显示全部楼层
你把第五行的删了之后,guess就一直都是你一开始赋值的那个数,不会变化了(第二行)。

你在程序里重新输入的值是temp,而不是guess。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 10:57:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2018-12-13 11:00 编辑

若是把第五行删除,那么在while循环中guess的值没有改变过,一直是开始时在第二行的赋值,guess的值没有更新,所以就在while循环中死循环了。

此外,你的程序其实有点问题,若是第一次就输入8,那么只会输出“游戏结束”,而不会输出“对了”。
while循环,是不需要在循环体里面判断是否符合while循环条件的。(在此例子中则是不需要在循环体中判断guess==8,因为若是guess==8,则循环会自动结束)
所以我帮你修改了一下程序(我没有运行,不知道标点符号有没有写错的,你试试吧)

temp = input("猜数")
guess = int(temp)
while guess != 8:
    if guess > 8:
        print("大了")
    else:
        print("小了")
    temp = input("重新输入")
    guess = int(temp)
print("对了")
print("游戏结束")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-12-13 20:26:01 | 显示全部楼层
heidern0612 发表于 2018-12-13 08:04
你把第五行的删了之后,guess就一直都是你一开始赋值的那个数,不会变化了(第二行)。

你在程序里重新输 ...

谢谢 懂啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-19 22:45:07 | 显示全部楼层
sunrise085 发表于 2018-12-13 10:57
若是把第五行删除,那么在while循环中guess的值没有改变过,一直是开始时在第二行的赋值,guess的值没有更 ...

还可以 将其直接放到循环外,学习了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 01:22:31 | 显示全部楼层
sunrise085 发表于 2018-12-13 10:57
若是把第五行删除,那么在while循环中guess的值没有改变过,一直是开始时在第二行的赋值,guess的值没有更 ...

我刚试了一下没问题。
但当我加入了循环控制以后就不行了,最后一次不管对错都会输出 “对了”  “游戏结束”和我想象中的不一样
如果再加上随机数的话,我都没法确定是不是正确的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 01:54:08 | 显示全部楼层
sunrise085 发表于 2018-12-13 10:57
若是把第五行删除,那么在while循环中guess的值没有改变过,一直是开始时在第二行的赋值,guess的值没有更 ...

然后这是我的解决方案:
temp = input("不妨猜一下小甲鱼现在心里想的数字是哪一个数字:")
guess = int(temp)
num= 3
while num and guess!=8:

        temp = input("不对不对 再来一次:")
        guess = int(temp)
        num= num-1

        if guess > 8:
               
                print("哥,大了大了")
               
                        
        else:
                print("小了小了")
   
if guess == 8:
        print("你是小甲鱼心里的蛔虫吗!")
        print("猜对了也没奖励!")
        
print("游戏结束,不玩了")

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 11:43:30 | 显示全部楼层
量子空间 发表于 2018-12-20 01:54
然后这是我的解决方案:
temp = input("不妨猜一下小甲鱼现在心里想的数字是哪一个数字:")
guess = in ...

现在在上班,今晚回去后,给你贴一下我所写的这个题目的最终版~~~自我感觉还是不错的,只是还没有加入输入容错机制~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 20:11:02 | 显示全部楼层
量子空间 发表于 2018-12-20 01:54
然后这是我的解决方案:
temp = input("不妨猜一下小甲鱼现在心里想的数字是哪一个数字:")
guess = in ...
  1. import random
  2. secret = random.randint (1,10)
  3. print('------------我爱鱼C工作室-------------')
  4. temp = input("不妨猜一下我心里想的是哪个数字:")
  5. guess = int(temp)
  6. for i in range(1,4):
  7.     print ('第',i,'次:', end= '')
  8.     if guess == secret:
  9.         break
  10.     else:
  11.         if guess > secret:
  12.             print ('哥,大了大了!')
  13.         else:
  14.             print("嘿,小了!小了!")
  15.     temp = input("猜错了。请重新输入:")
  16.     guess = int(temp)
  17. if i == 3 and guess != secret:
  18.     print ('4次都没猜对!')
  19. else:
  20.     print("哇草,你是小甲鱼心里的蛔虫吗?")
  21.     print ('哼,猜中了也没有奖励!')
  22. print("游戏结束,不玩啦!")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 20:18:14 | 显示全部楼层
新人报道,昨天开始学,今天第二天,目前也在研究这个问题,答案8可以搞定,产生一个随机数也可以搞定,限制猜的次数搞不定,在研究中。

另外,第一次就提示大了还是小了,也没搞定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 15:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表