我试图创建一个程序,如果用户输入与给定元组完全相同的数据,它将打印('可用'),否则,它将附加新数据。但即使我输入了完全相同的数据,我的程序也不打印“可用”。
data = ['Karma', 19, 'e', 'Kunugigaoka JH']
user = [input('name:'), int(input('age: ')), input('section: '), input('school: ')]
if user in data:
print('still available')
else:
data = data.append(user), print(data, 'your new data is now added')
那里有什么错误的代码?它是if语句中的'in',以及如何修复它?谢谢
答案 0 :(得分:3)
以下是您的代码的正常版本。
data = [['Karma', 19, 'e', 'Kunugigaoka JH']]
user = [input('name:'), int(input('age: ')), input('section: '), input('school: ')]
if user in data:
print('still available')
else:
data.append(user)
print(user, 'your new data is now added')
<强>解释强>
list.append
不会return
任何内容,因此请勿指定给变量。答案 1 :(得分:1)
in
会检查您数据的每个元素。所以在:
data = ['Karma', 19, 'e', 'Kunugigaoka JH']
它会检查'Karma'
,然后检查19
,然后检查......
相反,你应该尝试:
data = [['Karma', 19, 'e', 'Kunugigaoka JH']]
这是列表中的列表。现在in
将要检查的第一件事是:
['Karma', 19, 'e', 'Kunugigaoka JH']
答案 2 :(得分:0)
这个答案完全基于这个问题的标题:
假设你有:
>>>a = [1,2,3] #REMEMBER for this method to work the list and tuple should be in exact oder
>>>b = (1,2,3)
>>>all( [i==j for i,j in zip(a,b)] )
True
>>>b = (3,2,1) #Here though a and b have the same elements but not the same order
>>>all( [i==j for i,j in zip(a,b)] )
Flase