第一次通过重复功能

时间:2019-01-22 13:24:24

标签: python python-3.x random

我正在运行以下代码,并通过输出循环遍历它,但随后转到“ elif”语句,第一次跳过if语句。第二次经过后,即使我给出了错误的答案,它也会停止。我该如何用一组新的随机数重复该错误猜想,但是如果正确的话就接受它?

from random import randint



def solve():
    a = randint(0,10)
    b = randint(0,10)
    total = a + b
    print(str(a) + ' + ' + str(b) + ' =')
    guess = input()
    if (guess == total):
        print("Correct")
    elif (guess != total):
        print('Try again')
        a = randint(0,10)
        b = randint(0,10)
        total = a + b
        print(str(a) + ' + ' + str(b) + ' =')
        guess = input()


solve()

3 个答案:

答案 0 :(得分:2)

输入返回的字符串永远不会等于整数

def solve():
    a = randint(0, 10)
    b = randint(0, 10)
    total = a + b
    print(str(a) + ' + ' + str(b) + ' =')
    guess = int(input())
    if (guess == total):
        print("Correct")
    elif (guess != total):
        print('Try again')
        a = randint(0, 10)
        b = randint(0, 10)
        total = a + b
        print(str(a) + ' + ' + str(b) + ' =')
        guess = int(input())

solve()

您的最终代码应类似于:

def solve():
    while True:
        a = randint(0, 10)
        b = randint(0, 10)
        total = a + b
        print(str(a) + ' + ' + str(b) + ' =')
        guess = int((input()))
        if guess == total:
            print("Correct")
            break
        print('Try again')

答案 1 :(得分:0)

您可以使用无限的while循环(while循环的条件始终为True)。 例如。

while True:
    # Do something

此外,只要满足要求,就使用break关键字中断流。

while True:
    # code
    if condition:
        break

答案 2 :(得分:-1)

input()始终返回一个字符串。如果要将输入与数字进行比较,则必须将输入转换为整数。

您应该使用guess = input()代替guess = int(input())

这就是为什么您的代码跳过if语句的原因,字符串永远不会等于int。