如何使一个变量等于多个字符串?

时间:2019-02-09 21:43:10

标签: python python-3.x

import random
verify0 = random.randint(0, 9)
verify1 = random.randint(0, 9)
verify2 = random.randint(0, 9)
print(verify0, end = '')
print(verify1, end = '')
print(verify2)
verans0 = int(input('Type the above number here: > '))
verans2 = {verify1, verify0, verify2}
if verify1 in verans2:
    print('Authenticating...')
else:
    print('Incorrect!')
    while verans0 != verans2:
        verans1 = input('Type the above number here: > ')
        if verans1 == verify0:
            print('Authenticating...')
        else:
            print('Incorrect!')

我想知道如何打印多个数字,并让某人键入所有数字以进行“身份验证”。

2 个答案:

答案 0 :(得分:1)

您可以简单地从随机数字中创建正确的数字(或使用n = random.randint(100,999)

import random
verify0 = random.randint(0, 9)
verify1 = random.randint(0, 9)
verify2 = random.randint(0, 9)
number = verify0*100+verify1*10+verify  # or: n = random.randint(100,999)
print(number)

while True:
    try:
        verans0 = int(input('Type the above number here: > '))
    except ValueError:
        continue
    else:
        if verans0 == number:
            print('Authenticating...')
            break  # exit the while True loop
        else:
            print('Incorrect!')

print("done")

答案 1 :(得分:0)

因此,我假设您想显示3个数字,并让用户输入要验证的这3个数字。我不会为您编写整个程序,但以下是一些技巧,希望它们可以共同为您提供答案。

将3个数字放入一组时,您的代码存在问题。如果对randint的三个调用恰好产生匹配的数字,则您的集合中的数字将少于三个,因为集合不能包含重复的数字。因此,我将使用一个列表,假设您希望用户始终输入3个数字,即使其中两个(或三个)碰巧是相同的。

要让用户输入产生整数列表的三个数字,可以使用以下语句:

verans0 = [re.split中的i的int(i)(r'[^ \ d] +',input('在此处输入上述数字:'))]

这将把由任何非数字字符分隔的整数组成一个整数数组。有一种情况会破坏这一点,那就是输入没有数字的字符串。这将导致尝试解析非整数字符串。我将把这个问题留给您,以解决输入问题。您可能还想使用允许的分隔符,例如空白,空白和逗号等等。

要验证输入,我将遍历输入数组和每个数字输入:

  1. 确认它在verans2列表中。如果不是,则 身份验证失败
  2. 如果该号码属于verans2,则从该列表中将其删除(如果有重复则仅复制一个副本)

如果通过列表时没有不匹配项,请检查verans2列表是否为空。如果不是,则用户无法输入所有数字,并且身份验证失败。如果为空,则说明身份验证成功。