繁体   English   中英

为什么我的 if...in 语句在 python 中不起作用?

[英]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()))

https://ideone.com/Q2MZCo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM