Q) 制作 A-B 代码
a, b = input()
a = int(a)
b = int(b)
print(a-b)
如果我不将拆分函数放在输入旁边,则此代码会出现值错误
a,b,c=input();print(int(a)-int(c))
但上面的代码不需要 split()
这是为什么?
答案 0 :(得分:0)
解包迭代时,变量的数量必须与分配的值匹配。这取决于您尝试从输入中解压缩的值。 例如,
a,b= input() #12
print(a). #1
print(b). #2
您可以轻松打开包装。 但是,如果传入的值多于变量,则会出现错误。
a,b= input() #123
print(a) #1
print(b) # error!!
为了避免这种情况,您可以使用“*”
a,*b= input() #1234567
print(a) #1
print(b) #[2,3,4,5,6,7]
答案 1 :(得分:0)
这完全取决于您的输入。您需要认识到这是多重分配。您的输入是 str
并且它被解压为变量。变量的数量必须等于解包序列中的元素。
所以对于第一个片段
31
它将按您的预期工作。 a
将等于 3
(使用 int()
转换后)并且 b
将等于 1
。3 1
,它会失败,因为 a
将是 3
而 b
将是 ' '
并且没有名称可以将 1
绑定到.如果有空格并且您使用 split()
它将在空格处拆分字符串,您将获得 2 元素列表然后不会有错误,因为您有 2 个名称 - a
和 {{1} } 并期望 2 个值。对于第二个片段
b
(a=3, b=' ' and c=1, 它将按预期工作,如果您输入 3 1
则会失败,因为 (a=3, b=1,并且 c 没有价值)。答案 2 :(得分:0)
你可以把代码改成这个简单的,这样就不会出错了!
a = int(input('a'))
b = int(input('b'))
print(a-b)