真霄 发表于 2017-7-14 12:00:18

Python猜大小游戏中一个有关循环的问题

第一张是本人所写的代码,运行后却出现了如图二所示的错误,程序直接跳过了if times == 1:
            print("还有一次机会:",end="")      ,        请问接下来该如何修改呢?编程零基础小白一只,恳求高人指点。

新手·ing 发表于 2017-7-14 12:19:12

times = times -1
加在倒数第七第八行之间和倒数第九第十行之间

真霄 发表于 2017-7-14 12:21:56

新手·ing 发表于 2017-7-14 12:19
times = times -1
加在倒数第七第八行之间和倒数第九第十行之间

请问方便说明一下原因吗,还有一个问题:为什么开头要给 guess 赋值 0? 是只能赋值0还有除了1到10的其他数字均可呢?

新手·ing 发表于 2017-7-14 12:24:23

真霄 发表于 2017-7-14 12:21
请问方便说明一下原因吗,还有一个问题:为什么开头要给 guess 赋值 0? 是只能赋值0还有除了1到10的其 ...

赋值一个不是答案的数就行

真霄 发表于 2017-7-14 12:26:30

新手·ing 发表于 2017-7-14 12:24
赋值一个不是答案的数就行

谢谢您,你知道为什么要加 times = times - 1 在倒数七八行间吗

真霄 发表于 2017-7-14 12:33:01

新手·ing 发表于 2017-7-14 12:24
赋值一个不是答案的数就行

您好,我已经理解了times - 1
但是按您的方法运行后,直接跳过了第二次机会,请问是怎么回事呢?
【这是一个赌徒游戏,猜数字一到十
答对者才能活下来
我将给你三次机会
现在猜猜我在想哪个数字:3
小了一点
还有一次机会:】

新手·ing 发表于 2017-7-14 12:33:26

真霄 发表于 2017-7-14 12:26
谢谢您,你知道为什么要加 times = times - 1 在倒数七八行间吗

如果打印大了或者小了就说明打错了,次数减一

真霄 发表于 2017-7-14 12:33:54

新手·ing 发表于 2017-7-14 12:33
如果打印大了或者小了就说明打错了,次数减一

十分感谢您

新手·ing 发表于 2017-7-14 12:37:46

真霄 发表于 2017-7-14 12:33
十分感谢您

如果我的答案帮助到了你,请给最佳答案

新手·ing 发表于 2017-7-14 12:38:54

真霄 发表于 2017-7-14 12:33
十分感谢您

大家都是一个论坛的,就应该互帮互助,不用‘您’的,不是折损我嘛{:10_256:}

真霄 发表于 2017-7-14 13:20:29

新手·ing 发表于 2017-7-14 12:37
如果我的答案帮助到了你,请给最佳答案

按您的方法运行后,直接跳过了第二次机会,请问是怎么回事呢?
【这是一个赌徒游戏,猜数字一到十
答对者才能活下来
我将给你三次机会
现在猜猜我在想哪个数字:3
小了一点
还有一次机会:】

真霄 发表于 2017-7-14 13:25:34

新手·ing 发表于 2017-7-14 12:38
大家都是一个论坛的,就应该互帮互助,不用‘您’的,不是折损我嘛

import random
secret = random.randint(1,10)
times = 3
guess = 0
print('---------------赌徒游戏---------------')
print("这是一个赌徒游戏,猜数字一到十")
print("答对者才能活下来")
print("我将给你三次机会")
print("现在猜猜我在想哪个数字:",end="")
while (guess != secret) and (times != 0):
    temp = input()
    while not temp.isdigit():
      temp = input("提示你一下,是整数:")
    guess = int(temp)
    times = times - 1 #玩家机会减一
    if guess == secret:
      print("你答对了")
      print("走吧")
    else:
      if guess > secret:
            print("大了一点")
            times = times - 1
      else:
            print("小了一点")
            times = times - 1      
      if times == 2:
            print("还有两次机会:",end="")
      if times == 1:
            print("还有一次机会:",end="")
      else:
            print('你没机会了')
            print("你被杀手杀死了")




这是按你的意见改进后的代码,程序运行后直接跳过了【还有两次机会】

新手·ing 发表于 2017-7-14 15:19:57

真霄 发表于 2017-7-14 13:25
这是按你的意见改进后的代码,程序运行后直接跳过了【还有两次机会】

等下我看看

新手·ing 发表于 2017-7-14 15:20:33

真霄 发表于 2017-7-14 13:25
这是按你的意见改进后的代码,程序运行后直接跳过了【还有两次机会】

你倒是把第十五行删掉啊。。。怪我没说清楚

真霄 发表于 2017-7-14 15:52:22

新手·ing 发表于 2017-7-14 15:20
你倒是把第十五行删掉啊。。。怪我没说清楚

恩。。。还是不对。。{:5_104:}

真霄 发表于 2017-7-14 15:59:41

新手·ing 发表于 2017-7-14 15:20
你倒是把第十五行删掉啊。。。怪我没说清楚

哈哈,我找到问题所在了,我自己蠢了.....最后的忘了终止循环了
这是我修改过的,已经可以按理想运行了,谢谢您的帮助
import random
secret = random.randint(1,10)
times = 3
guess = 0
print('---------------赌徒游戏---------------')
print("这是一个赌徒游戏,猜数字一到十")
print("答对者才能活下来")
print("我将给你三次机会")
print("现在猜猜我在想哪个数字:",end="")
while (guess != secret) and (times != 0):
    temp = input()
    while not temp.isdigit():
      temp = input("提示你一下,是整数:")
    guess = int(temp)
    if guess == secret:
      print("你答对了")
      print("走吧")
    else:
      if guess > secret:
            print("大了一点")
            times = times - 1
      else:
            print("小了一点")
            times = times - 1      
    if times == 2:
      print("还有两次机会:",end="")
    if times == 1:
      print("还有一次机会:",end="")
else:
    print('你没机会了')
    print("你被杀手杀死了")

新手·ing 发表于 2017-7-14 16:05:54

真霄 发表于 2017-7-14 15:59
哈哈,我找到问题所在了,我自己蠢了.....最后的忘了终止循环了
这是我修改过的,已经可以按理想运行了 ...

{:10_275:}

真霄 发表于 2017-7-15 00:54:33

以上其实还有问题,[当第一次猜到正确答案时,会连带执行30,31行代码],故修改后在17,18行之中加入break语句,解决问题.{:5_91:}
页: [1]
查看完整版本: Python猜大小游戏中一个有关循环的问题