如果多次输入相同的输入,则返回False

时间:2017-04-29 10:53:46

标签: python-3.x

如果给出相同的输入,我想返回False:

first_answer = input("select square number 1: ")
second_answer = input("select square number 2: ")
third_answer = input("select square number 3: ") 

if first_answer == second_answer or first_answer == third_answer or 
second_answer == first_answer or second_answer == third_answer or 
third_answer == first_answer or third_answer == second_answer:
print("don\'t repeat squares")

有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

你喜欢这个吗?

set_answers = set()
set_answers.add(input("select square number 1: "))
set_answers.add(input("select square number 2: "))
set_answers.add(input("select square number 3: "))
if len(set_answers) < 3:
    print("don\'t repeat squares")

TRICK set()仅存储唯一元素,因此再次向set添加相同的值不会更改其元素的数量。

答案 1 :(得分:0)

试试这个。

count = 3
answers = []
for i in range(0, count):
    answers[i] = input("select square number " + str(i+1) + ": "

for i in range(0, count-1):
    for j in range(i+1, count):
        if answers[i] == answers[j]:
            print("don\'t repeat squares")

通过使用循环和数组(或集合或元组)来抽象这种事情(而不是手动编程每个变量)总是(几乎)总是更容易。

answers是一个列表,第一个循环将数据输入到数组中。请注意,您只需修改count的初始值即可轻松更改所需的数据量 - 这将改变其他所有内容(包括输入消息!)。

第二个循环实际上是一对嵌套的for循环,以便生成要比较的所有(相关)数据项对。请注意,第一个循环停止最后一个元素的一个短路,第二个循环在第一个循环的值之后开始一个循环。这是为了避免错误地将元素与自身进行比较。

澄清:

[]是一个空列表。 Python中的列表只是一个有序的元素列表,可以通过列表中的位置(索引)访问这些元素。索引从0开始。(有充分的理由)

通常,range函数返回给定范围内的所有整数包含下限(左参数)而不包括上限(右边的参数)。 (这也有很好的理由)