马宝国异界纵横 发表于 2020-11-10 20:18:31

python基础--我原以为自己坚持专研一下就解决的,没想到还是要拜托大佬们了

这是python自学视频上的题目

随机生成一个数,再输入一个数,两数作比较,
输入的数大,提示你猜得数字大了
输入的数小,提示你猜的数字小了
只有三次输入机会
我到底哪里错了,怎么运行后可以无限次输入,没有限制,只要输错就可以一直输入下去,,,脑壳要炸了

import random
secret = random.randint(1,10)#随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0#输入次数限制使用
if guess == secret:   #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret or cs == 3:      #第一次输入不正确,进入循环
      print("输入的不对哦,再输入一次")
      temp = input("不妨猜一下我现在心里在想的是哪个数字:")
      guess = int(temp)
      cs = cs + 1# 次数的递增
      if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
      elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")
            continue
      elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")
            continue

print("游戏结束!!!")


昨非 发表于 2020-11-10 20:24:28

secret = random.randint(1,10)#随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0#输入次数限制使用
if guess == secret:   #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret and cs < 3:      #第一次输入不正确,进入循环                  这里改了就好了
      print("输入的不对哦,再输入一次")
      temp = input("不妨猜一下我现在心里在想的是哪个数字:")
      guess = int(temp)
      cs = cs + 1# 次数的递增
      if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
      elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")
            continue
      elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")
            continue

print("游戏结束!!!")

昨非 发表于 2020-11-10 20:24:58

第十行改动一下就好了

Twilight6 发表于 2020-11-10 20:26:04



你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足那么久返回 True ,则循环只要你不输入正确,就会无限循环下去,且此时短路了 or 右边的条件

还有这里可以小小改进下:elif 里面的 continue 可以去掉,是多余的,因为执行完命令时候已经就完成循环了,会直接开始下个循环,可以不用 continue

参考代码:

import random
secret = random.randint(1,10)#随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0#输入次数限制使用
if guess == secret:   #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret and cs < 3:      #第一次输入不正确,进入循环
      print("输入的不对哦,再输入一次")
      temp = input("不妨猜一下我现在心里在想的是哪个数字:")
      guess = int(temp)
      cs = cs + 1# 次数的递增
      if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
      elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")

      elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")

print("游戏结束!!!")

昨非 发表于 2020-11-10 20:27:36

Twilight6 发表于 2020-11-10 20:26
你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足 ...

这么巧吗{:10_277:}

马宝国异界纵横 发表于 2020-11-10 20:28:15

Twilight6 发表于 2020-11-10 20:26
你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足 ...

好的,谢谢大佬的讲解,我马上去改一下

马宝国异界纵横 发表于 2020-11-10 20:32:53

昨非 发表于 2020-11-10 20:24


嗯嗯,谢谢大佬,我改了以后果然好了

昨非 发表于 2020-11-10 20:38:59

马宝国异界纵横 发表于 2020-11-10 20:32
嗯嗯,谢谢大佬,我改了以后果然好了

解决了可以给设个【最佳答案】吗{:10_266:}

马宝国异界纵横 发表于 2020-11-10 20:54:41

昨非 发表于 2020-11-10 20:38
解决了可以给设个【最佳答案】吗

奥里给

马宝国异界纵横 发表于 2020-11-10 20:55:45

昨非 发表于 2020-11-10 20:38
解决了可以给设个【最佳答案】吗

嘶,好像楼数设错了

昨非 发表于 2020-11-10 21:04:33

马宝国异界纵横 发表于 2020-11-10 20:55
嘶,好像楼数设错了

啊这{:10_245:}
页: [1]
查看完整版本: python基础--我原以为自己坚持专研一下就解决的,没想到还是要拜托大佬们了