leoliu121 发表于 2020-3-12 20:32:22

python问题 请教为什么会这样呢?

我模仿作业中的答案写出了这个程序:
import random
answer = random.randint(1,10)
print("__________分割线___________")
a = input("please input a number you want:")
#print("please input a number you want:")
i = 3
b = 0
while (b != answer) and (i > 0):
    #a = input()
    b = int(a)
    i = i-1
    if b == answer:
      print("you win!")
    else:
      if b > answer:
            print("bigger!")
      else:
            print("smaller!")
      if i > 0:
            print("one more time:")
      else:
            print("no chance!")
print("GG~~~")


但是运行结果却是这样的:
__________分割线___________
please input a number you want:5
smaller!
one more time:
smaller!
one more time:
smaller!
no chance!
GG~~~


请问这是为什么呢?为啥一次性就自动运行完了呢?

冬雪雪冬 发表于 2020-3-12 20:34:41

因为循环中没有a = input("please input a number you want:"),a的值一直不变

Hoiste 发表于 2020-3-12 21:34:55

#a = input()井号把这段代码注释掉了,不再发挥作用,所以a的值在循环中一直不变。

wuqramy 发表于 2020-3-12 21:42:41

本帖最后由 wuqramy 于 2020-3-12 21:50 编辑

你的a只会保持第一次输入的值,有用的代码被#注释了,正确代码如下:
import random
answer = random.randint(1,10)
print("__________分割线___________")
a = input("please input a number you want:")
i = 3
b = 0
while (b != answer) and (i > 0):
    b = int(a)
    i = i-1
    if b == answer:
      print("you win!")
    else:
      if b > answer:
            print("bigger!")
      else:
            print("smaller!")
      if i > 0:
            a = input("one more time:")
      else:
            print("no chance!")
print("GG~~~")

dudaguo 发表于 2020-3-12 22:11:09

import random
answer = random.randint(1,10)
print("__________分割线___________")
a = input("please input a number you want:")
#print("please input a number you want:")
i = 3
b = 0
while (b != answer) and (i > 0):
    #a = input()                  问题出自这行, #把a=input()语句变成注释了
    b = int(a)
    i = i-1
    if b == answer:
      print("you win!")
    else:
      if b > answer:
            print("bigger!")
      else:
            print("smaller!")
      if i > 0:
            print("one more time:")
      else:
            print("no chance!")
print("GG~~~")

leoliu121 发表于 2020-3-12 22:12:41

感谢大家的解答,我明白了。然后我根据“wuqramy”的建议修改了代码,确实能够正常运行了,非常感谢。我想再追问大家一下,修改后我觉得while后边的(b!=answer)好像没什么意义,就去掉了,结果是也能够正常运行程序,那是不是这个判断语句确实没有什么用处呢?~~

代码如下:

import random
answer = random.randint(1,10)
print("__________分割线___________")
a = input("please input a number you want:")
i = 3
b = 0
while i > 0:   
    b = int(a)
    i = i-1
    if b == answer:
      print("you win!")
    else:
      if b > answer:
            print("bigger!")
      else:
            print("smaller!")
      if i > 0:
            a = input("one more time:")
      else:
            print("no chance!")
print("GG~~~")

Drkspd 发表于 2020-3-13 08:31:39

#把有用代码注释掉了
页: [1]
查看完整版本: python问题 请教为什么会这样呢?