我是Python的新手,我想知道我是否能得到一些帮助。我认为一切正常,除了它输出Guess higher/lower
提示然后打印出Enter a number:
而不是要求第二个Guess higher/lower
提示。我希望它说出第二个Guess提示,而不是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
答案 0 :(得分:1)
您想要的行为不适用于while
循环。 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's。查看任何初学者教程以了解更多信息。
答案 1 :(得分:1)
每当看到重复时,请记住DRY原则(不要重复自己)。此外,无需评论明显的事情。
a=a+1
和input
。尽量不要重复自己。while
循环是如何工作的。你只有一个循环,所以你只需要1个循环。所以循环将在i == n
时停止,因此这是唯一一次&#34;纠正&#34;将打印。我的最终代码:
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))