为什么第一个报错,后面一个运行正常?


s1=eval(input("请输入数字1:"))
s2=eval(input("请输入数字2:"))
if s1>s2:
    d=s1,x=s2
else:
    d=s2,x=s1
print(d,x)

这个显示“TypeError: 'int' object is not iterable”

s1=eval(input("请输入数字1:"))
s2=eval(input("请输入数字2:"))
if s1>s2:
    d=s1
    x=s2
else:
    d=s2
    x=s1
print(d,x)

这个运行正常

多个变量的赋值需要使用元组或者多个赋值语句进行,不能直接通过逗号隔开来实现

第一种的写法不符合语法规则. (逗号是用来分隔多个变量, 分号来标记语句的结束)
正确写法请看下面代码

s1 = eval(input("请输入数字1:"))
s2 = eval(input("请输入数字2:"))
if s1 > s2:
    d, x = s1, s2
else:
    d, x = s2, s1
print(d, x)

或者 逗号改成分号

s1 = eval(input("请输入数字1:"))
s2 = eval(input("请输入数字2:"))
if s1 > s2:
    d = s1; x = s2
else:
    d = s2; x = s1
print(d, x)

【以下回答由 GPT 生成】

这个问题是因为第一个代码段中的赋值语句使用了逗号(,)来同时赋值给两个变量(d和x),这种写法被称为元组赋值。而在这个语句中,逗号的左边是一个整数(s1或s2),而整数是不可迭代的,因此会出现"TypeError: 'int' object is not iterable"错误。

而在第二个代码段中,赋值语句使用了两条独立的语句来分别赋值给d和x,避免了元组赋值的错误。

要解决这个问题,可以有两种方式:

第一种是使用元组赋值的正确写法,将值用括号括起来形成元组,然后用逗号分隔变量。代码如下:

s1 = eval(input("请输入数字1:"))
s2 = eval(input("请输入数字2:"))
if s1 > s2:
    (d, x) = (s1, s2)
else:
    (d, x) = (s2, s1)
print(d, x)

第二种方式是使用独立的赋值语句,将值依次赋值给不同的变量。代码如下:

s1 = eval(input("请输入数字1:"))
s2 = eval(input("请输入数字2:"))
if s1 > s2:
    d = s1
    x = s2
else:
    d = s2
    x = s1
print(d, x)

这两种方式都可以解决这个问题,选择哪种方式取决于个人的代码风格和需求。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^