[英]Why doesn't my if...in statement work in python?
该程序采用 3 个数字列表,并将 A 和 B 与列表 n 进行比较。 如果 A 中的一项在 n 中,则幸福感增加。 如果 B 中的一项在 n 中,则幸福感降低。 但是,当我进行这些计算时,用于检查 A/B 中的术语是否在 n 中的 if...in 语句不起作用 - 我在每个检查后都完成了 print(happy),但我没有结果
A = []
B = []
n = []
happy = 0
lengthn, lengthAB = input("").split()
for i in lengthn:
numbers = input("")
newNumbers = numbers.split()
n.append(newNumbers)
for i in lengthAB:
numbers = input("")
ANumbers = numbers.split()
A.append(ANumbers)
for i in lengthAB:
numbers = input("")
BNumbers = numbers.split()
B.append(BNumbers)
long = int(lengthAB)
for i in range(long):
j = int(i)
if A[j - 1] in n:
happy = happy + 1
print(happy)
if B[j - 1] in n:
happy = happy - 1
print(happy)
i = i + 1
print(happy)
非常感谢你的帮助!!
您将一个列表附加到n
,而不是该列表的每个元素。 你可以写
n.extend(newNumbers)
反而。
你可以只写n = newNumbers.split()
,但正如评论中指出的那样,你可能有一个缩进错误:
for i in lengthn:
numbers = input("")
newNumbers = numbers.split()
n.extend(newNumbers)
或者,您根本不需要拆分:
for i in lengthn:
number = int(input(""))
n.append(number)
在某些时候,您可能打算将字符串输入转换为整数; 也可以在阅读字符串后立即执行此操作。 (我声明了各种技术来处理此答案的 scope 之外的转换错误。)
与您似乎期望的变量相反: lengthn, lengthAB
是字符串
for循环
for i in lengthn:
numbers = input("")
遍历字符串 lengthn 中的字符。 如果lengthn='12'
它将要求提供两次输入。
例如,如果 lengthAB 为“13”,您将在列表 BNumbers 中获得 2 个数字,但稍后您尝试测试 13 个值,因为 int('13') 为 13。
for i in lengthn:
numbers = input("")
所以你得到的数字是字符串的形式,它将在字符串而不是数字上迭代。
您应该寻找 beeter python 书。 根据描述,我认为这应该是这样的:
def happiness(A, B, n):
return sum(x in n for x in A) - sum(x in n for x in B)
def get_data(prompt=""):
return [int(x) for x in input(prompt).split()]
print(happiness(get_data(), get_data(), get_data()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.