我是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
循环的工作。循环用于迭代执行一块代码,直到满足条件为止。虽然,虽然说出您的代码,您已经实现的嵌套以及代码的整体结构是不正确的。
如果您使用if
和else
语句,那会好多了。这些用于决定某件事,并根据该代码是对还是错误。如果您考虑一下,这正是您要解决的问题的固有本质。代码看起来像这样:
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的。看看任何初学者教程以了解更多信息。
每当您看到重复时,请记住干燥原理(不要重复自己(。另外,无需评论明显的事情。
- 首先要注意的是,您会一遍又一遍地做一些事情,例如
a=a+1
和input
。尽量不要重复自己。 - 要注意的第二件事是,在每个循环中,唯一更改的事情就是提示。尝试隔离这种变化。
- 最后一件事是
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))