ljy123456 发表于 2018-12-12 22:15:26

Python循环语句出问题了啊

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)删除后 ,不管输入什么一直循环“大了”或者“小了”

ba21 发表于 2018-12-13 00:17:41

因为你的guess 还是第2行的值。
第5行是从第4行取值,你删了,guess上哪里取值呢?

heidern0612 发表于 2018-12-13 08:04:01

你把第五行的删了之后,guess就一直都是你一开始赋值的那个数,不会变化了(第二行)。

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

sunrise085 发表于 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("游戏结束")

ljy123456 发表于 2018-12-13 20:26:01

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

你在程序里重新输 ...

谢谢 懂啦

量子空间 发表于 2018-12-19 22:45:07

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

还可以 将其直接放到循环外,学习了。

量子空间 发表于 2018-12-20 01:22:31

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

我刚试了一下没问题。
但当我加入了循环控制以后就不行了,最后一次不管对错都会输出 “对了”“游戏结束”和我想象中的不一样
如果再加上随机数的话,我都没法确定是不是正确的了。

量子空间 发表于 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("游戏结束,不玩了")

sunrise085 发表于 2018-12-20 11:43:30

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

现在在上班,今晚回去后,给你贴一下我所写的这个题目的最终版~~~自我感觉还是不错的,只是还没有加入输入容错机制~~

sunrise085 发表于 2018-12-20 20:11:02

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

import random
secret = random.randint (1,10)
print('------------我爱鱼C工作室-------------')
temp = input("不妨猜一下我心里想的是哪个数字:")
guess = int(temp)
for i in range(1,4):
    print ('第',i,'次:', end= '')
    if guess == secret:
      break
    else:
      if guess > secret:
            print ('哥,大了大了!')
      else:
            print("嘿,小了!小了!")
    temp = input("猜错了。请重新输入:")
    guess = int(temp)
if i == 3 and guess != secret:
    print ('4次都没猜对!')
else:
    print("哇草,你是小甲鱼心里的蛔虫吗?")
    print ('哼,猜中了也没有奖励!')
print("游戏结束,不玩啦!")

柳絮狂舞 发表于 2018-12-20 20:18:14

新人报道,昨天开始学,今天第二天,目前也在研究这个问题,答案8可以搞定,产生一个随机数也可以搞定,限制猜的次数搞不定,在研究中。

另外,第一次就提示大了还是小了,也没搞定。
页: [1]
查看完整版本: Python循环语句出问题了啊