这两个使用“input”的python代码之间有什么区别?

这两个使用“input”的python代码之间有什么区别?,python,Python,我不明白区别是什么,因为它做的是相同的事情 a=int(input("Unesi a: ")) b=int(input("Unesi b: ")) c=a+b print(c) 如果输入对abd和e有效,那么这两个代码片段最终会做相同的事情。如果输入不是一个数字,a和b将立即给您一个ValueError,因为您正在立即将字符串输入计算为intd和e将接受任何类型的输入,包括带有非数字数据的输入,但在进行加法时,您将得到相同的VALUERROR。相同的结果,错误发生时的时间不同 编辑: 正如

我不明白区别是什么,因为它做的是相同的事情

a=int(input("Unesi a:  "))
b=int(input("Unesi b:  "))
c=a+b
print(c)

如果输入对
a
b
d
e
有效,那么这两个代码片段最终会做相同的事情。如果输入不是一个数字,
a
b
将立即给您一个
ValueError
,因为您正在立即将字符串输入计算为
int
d
e
将接受任何类型的输入,包括带有非数字数据的输入,但在进行加法时,您将得到相同的
VALUERROR
。相同的结果,错误发生时的时间不同

编辑:


正如评论中所指出的(再次感谢您),我还应该提到,如果给
a
提供非数字输入,在到达
b=int(输入(“Unesi b:”)
之前,您将得到一个
ValueError
。如果给
d
提供非数字输入,执行将愉快地继续到
e
,因为您尚未将输入转换为
int
。非常细微的差别。

这两者之间的差别非常细微。在第一种情况下,当分配
a
b
时,收集输入,然后转换为整数。如果此时无法将输入转换为ints,则将抛出错误


在第二种情况下,分配
d
e
应该没有问题,但是当您尝试将
int(d)+int(e)
分配给变量
f
时,会抛出一个错误,因为
int(d)
没有意义。

int(20)
20
相同,就像
test=7
test=1+2*3
一样。不同的代码并不一定意味着不同的行为。提示:尝试在每个
输入
提示符处输入无效的整数。结果并不完全相同:如果在
“Unesi a:”
提示符处输入无效,您将看不到
“Unesi b:”
提示符。然而,如果您在
“Unesi c:”
提示符下输入无效,您将看到
“Unesi d:”
提示符。您认为第二种情况更可取吗?我认为最好尽快检查类型,但我可能错过了一个情况。@pm2r观察得很好。我在回答中并没有说得很清楚-谢谢。@Rightleg:我同意第一种形式更可取,因为如果你要失败,最好尽快失败。然而,OP的问题只是确定这两个代码段的行为差异,而不是评估哪一个更好。@PM2Ring是的,这不是我的观点,它只是让我想知道是否有第二个更好的情况。事实上,我认为自定义错误管理更好,但这远远超出OP的问题。
d=input("Unesi c:  ")
e=input("Unesi d:  ")
f=int(d)+int(e)
print(f)