为什么第二个代码不需要 split()?

时间:2021-06-07 06:42:02

标签: python algorithm

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()

这是为什么?

3 个答案:

答案 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 并且它被解压为变量。变量的数量必须等于解包序列中的元素。

所以对于第一个片段

  • 如果您输入 2 位数字,例如31 它将按您的预期工作。 a 将等于 3(使用 int() 转换后)并且 b 将等于 1
  • 如果您输入的数字超过 2 位,例如3 1,它会失败,因为 a 将是 3b 将是 ' ' 并且没有名称可以将 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)
相关问题