0

我必须制作一个累加器来计算用户用来猜测随机数的条目数。我已经弄清楚了所有的while语句,但我无法得到计算它占用了多少条目的部分。谢谢你的帮助!

import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        number = input("Your guess: ")
        number = int(number)
    if number < secretNumber:
        print("Too low!")
        number = input("Your guess: ")
        number = int(number)
while number == secretNumber:
    print("You got it in",tries,"tries")
    break

我需要帮助的部分是在休息后实施尝试累加器

4

5 回答 5

3

你想问的第一件事是当你print tries,你得到什么?实际上,你会看到你总是得到 1。

因为,你没有增加。您没有添加,因为用户一直在猜测。

一般来说,你可以tries = tries + 1为每个猜测写。

tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
    if number < secretNumber:
        print("Too low!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
while number == secretNumber:
    print("You got it in",tries,"tries")
    break

这段代码仍然有一些问题。第二个循环没有意义。循环听起来像循环。它会一直运行,直到满足条件或有人(你)打断它并告诉它退出。

如果用户找到了号码,那么while number !- secretNumber会变成False对的吗?它将退出第一个循环。因此,您可以跳过第二个循环并祝贺用户。

另一件小事是双重if陈述。 if声明很昂贵。计算机必须测试才能猜对。但无论哪种方式,都有不同的方法来处理多个条件。

if condition1 met:
    do this
elif condition2 met:
    do this
elif condition3 met:
    do this
elif more....
else:   # optional, but encourage, this is a default fallback case
    do this

如果number > secretNumberTrue,那么您不需要进行number < secretNumber理论上的测试。它通过适应使代码更清晰和逻辑合理if .. elif .. else

import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
    elif number < secretNumber:
        print("Too low!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
print("You got it in",tries,"tries")
# another way to print is
# print("You got it in %s tries" % tries)
# print("You got it in {t} tries".format(t=tries))

对于初学者,用于print帮助调试您的代码。

于 2013-01-09T02:10:06.240 回答
1

只需将线

tries += 1

在循环中 - 此行将tries变量增加 1。

我还冒昧地通过从 if 语句中删除它的一部分来缩短它,并删除了第二个 while 循环(因为循环总是在没有理由在那里放置循环时发生):

while number != secretNumber:
    tries += 1
    if number > secretNumber:
        print("Too high!")
    if number < secretNumber:
        print("Too low!")
    number = input("Your guess: ")
    number = int(number)
print("You got it in",tries,"tries")
于 2013-01-09T02:01:57.820 回答
0
import random
i = 0
rand_num = random.randint(1, 100)
while True:
    i += 1
    try:
        guess = int(input('Guess the number: ')
    except ValueError:
        print('Invalid input, try again')
        continue
    if guess < rand_num:
        print('Too low, try again')
    elif guess > rand_num:
        print('Too high, try again')
    else:
        print('You got it in ', tries, ' tries!')
        break
于 2013-01-09T02:06:55.883 回答
0

如果你弄错了,你可以增加尝试次数:

...
while number != secretNumber:
    tries += 1
    if number > secretNumber:
        print("Too high!")
...

此外,最后而不是这个:

while number == secretNumber:
    print("You got it in",tries,"tries")
    break

你可以使用这个:

print("You got it in",tries,"tries")

因为只有当你得到正确的数字时,它才会达到这一点。

另一件事,trys 最初应该等于 0,没有,因为一开始你尝试了 0 次,而不是 1。

于 2013-01-09T02:07:24.613 回答
-1

您想tries += 1在 while 循环中添加额外的行。这样做是在尝试每个猜测时加 1。那么你的代码将是:

import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        number = input("Your guess: ")
    number = int(number)
    if number < secretNumber:
        print("Too low!")
        number = input("Your guess: ")
        number = int(number)
while number == secretNumber:
    print("You got it in",tries,"tries")
    break
于 2013-01-09T02:23:49.297 回答