在循环时切换在嵌套之间



我是Python的新手,我想知道我是否可以得到一些帮助。我认为一切都在起作用,除了输出Guess higher/lower提示,然后打印出Enter a number:,而不是要求第二个Guess higher/lower提示。我希望它说第二个猜测提示,而不是Enter a number:,我希望这已经足够好。如果没有,我会更新它。

from random import randint
N=randint(0,100)
i=1000
a=0
n=int(N)
while i!=n:
  I=int(input('Enter a number: '))
  i=int(I)
  a=a+1
  while i>n:
    i=int(input('Guess lower: '))
    a=a+1
  while i<n:
    i=int(input('Guess Higher: '))
    a=a+1
  while i==n:
    print('Correct')
    print('You took',a,'attempts.')
    break

您想要的行为不是while循环的工作。循环用于迭代执行一块代码,直到满足条件为止。虽然,虽然说出您的代码,您已经实现的嵌套以及代码的整体结构是不正确的。

是正确的。

如果您使用ifelse语句,那会好多了。这些用于决定某件事,并根据该代码是对还是错误。如果您考虑一下,这正是您要解决的问题的固有本质。代码看起来像这样:

from random import randint
N=randint(0,100)
i=1000
a=0
n=int(N)
#Ask for initial input
i=int(input('Enter a number: '))
a=a+1
#Start loop that loops until i == n
while i!=n:
  if i>n:
    i=int(input('Guess lower: '))
    a=a+1
  elif i<n:
    i=int(input('Guess Higher: '))
    a=a+1
  else:
    print('Correct')
    print('You took',a,'attempts.')

如果您正在涉及elif,则该语句是如果IF语句不正确,并且如果ELIF之后的条件为真,则将执行。您可以拥有多个Elif的。看看任何初学者教程以了解更多信息。

每当您看到重复时,请记住干燥原理(不要重复自己(。另外,无需评论明显的事情。

  1. 首先要注意的是,您会一遍又一遍地做一些事情,例如a=a+1input。尽量不要重复自己。
  2. 要注意的第二件事是,在每个循环中,唯一更改的事情就是提示。尝试隔离这种变化。
  3. 最后一件事是while循环如何工作。您只有一个循环,因此您只需要1个循环。因此,循环将在i == n时停止,因此,这是唯一一次"正确"打印的时间。

我的最终代码:

from random import randint
a = 0
i = -1
n = randint(0, 100)
prompt = "Enter a number: "
while i != n:
    a += 1
    i=int(input(prompt))
    if i > n:
        prompt = 'Guess Lower: '
    elif i < n:
        prompt = 'Guess Higher: '
print('Correct')
print('You took {} attempts.'.format(a))

最新更新