在嵌套while循环之间切换

2024-04-19 00:38:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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

Tags: fromnumberinputrandomlowerintprintenter
2条回答

您想要的行为不是while循环的工作。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语句不为true并且elif后面的条件为true,则执行该语句。你可以有多个elif的。看看任何初学者教程了解更多。你知道吗

当你看到重复的时候,请记住干燥的原则(不要重复你自己)。而且,不需要评论明显的事情。你知道吗

  1. 首先要注意的是,有些事情你正在反复做,比如a=a+1input。尽量不要重复。你知道吗
  2. 第二点要注意的是,在每个循环中,唯一更改的是提示。试着隔离这种变化。你知道吗
  3. 最后要知道的是while循环是如何工作的。你只有一个循环,所以你只需要一个循环。所以循环将在i == n时停止,因此这是“Correct”将打印的唯一时间。你知道吗

我的最终代码:

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))

相关问题 更多 >