菜鸟新手 发表于 2019-1-4 10:13:35

为什么输入正确,还会出现这样的BUG?哪里出错了?

代码是跟书上一模一样的,为什么还会出现这样的问题?怎么改?如图所示:

heidern0612 发表于 2019-1-4 10:29:02

因为第一个if判断完了之后,后面执行的else语句除了小于的情况还有等于的情况,所以最后多打印了一个“小了小了”。

如下这么改就好了:

import random

secret = random.randint(1,10)
temp = input("请输入一个整数:")
guess = int(temp)

while guess != secret :
    temp = input("哎呀,输错了,请从新输入吧:")
    guess = int(temp)
   
    if guess > secret :
      print("哥,大了大了")
    elif guess < secret:
      print("嘿,小了小了")
    else :
      print("哎呀,你真是小甲鱼肚子里的蛔虫呀!")
      print("哼~猜中了也没有奖励")

print("游戏结束,不玩啦")

BngThea 发表于 2019-1-4 10:30:54

是有一个小bug,因为while循环中的if-else语句逻辑有漏洞,当输入等于答案的时候也会走else分支
你可以这样改:
if guess > secret:
    print('哥,大了大了~~')
elif guess == secret:
    print('答对了')
    break
else:
    print('哥,小了小了~~')

break表示跳出while循环

Mountain_gs 发表于 2019-1-4 10:38:31

secret = 6
temp = input("猜一下:")
guess = int(temp)

while guess != secret:
    temp = input("猜错了,重新输入:")
    guess = int(temp)
    if guess >secret:
      print("大了")
   
   # else:
   #   print("小了")

   #这个else语句里包括了小于和等于,如果猜对了也会执行一次print语句
    elif guess<secret:
      print("小了")
    #if guess == secret:
    else:
      print("猜对了,游戏结束")

panH 发表于 2019-1-6 14:12:09

最后答对的if条件不应该缩进了吧。
import random
secret = random.randint(1,10)
print('-----------------我爱鱼c工作室------------------')
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
while guess != secret:
      if guess > secret:
            print("大了哟!")
      else:
            print("小了一点。")
      temp = input("猜错了哟,再猜一下:")
      guess = int(temp)
if guess == secret:
    print("卧槽,你是小甲鱼肚子里的蛔虫吗?!")
    print("不过猜中了也没有奖励,哈哈!")
print("游戏结束,不玩了。")
页: [1]
查看完整版本: 为什么输入正确,还会出现这样的BUG?哪里出错了?