【问题标题】:Input difference for finding the subset用于查找子集的输入差异
【发布时间】:2021-11-26 06:55:24
【问题描述】:

试图了解在我的 A、B 输入代码中需要 num_sets 的必要性,以便根据输入来判断 A 是 B 的子集时的 True 或 False。

T = int(input())
for num_sets in range(T):
    num_sets, A = input(),set(input().split())
    num_sets, B = input(),set(input().split())
    print(A.issubset(B))

代码块在具有num_sets, Anum_sets, B 时有效。当我的代码行为 A = input(),set(input().split())B = input(),set(input().split()) 时,它不起作用,我收到一条错误消息,指出 AttributeError: 'tuple' object has no attribute 'issubset'.

【问题讨论】:

    标签: python python-3.x for-loop input subset


    【解决方案1】:

    循环内不需要num_sets。当你写:

    num_sets, A = input(),set(input().split())
    num_sets, B = input(),set(input().split())
    

    这与:

    num_sets = input()
    A = set(input().split())
    num_sets = input()
    B = set(input().split())
    

    在那之后你没有使用num_sets 并且for 循环在每次迭代中为num_sets 设置一个新值,所以这一切真正完成的是让你输入一个额外的行,两次,然后忽略输入。

    这没有按预期工作的原因:

    A = input(),set(input().split())
    

    是因为该赋值的右侧实际上是tuple,而因为左侧不是,A 得到了这两个值。如果您用“1”回答第一个input() 提示,用“2 3”回答第二个input(),那么您在A 中的结果将是:

    ('1', {'2', '3'})
    

    这不是set,所以A.issubset(B) 会出错。

    我想你可能想要的是这个:

    for num_sets in range(T):
        A = set(input().split())
        B = set(input().split())
        print(A.issubset(B))
    

    这将允许您输入两组值,并打印A 是否是B 的子集。

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 2020-03-27
      • 2020-01-02
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2019-09-19
      相关资源
      最近更新 更多