为什么input()取字符串而[input().split()]取数字?



Code 1

n = input("Enter numbers:")
a = list(map(int, n.split()))
print(a[0])

代码 2

n = [input("Enter numbers:").split()]
print(ans[0])

问题 1:在代码 1 中,我必须将字符串转换为 int,而在代码 2 中,它已经在 int 中。

问题2:打印代码不起作用。为什么我不能从列表中打印元素?

在这两段代码中,您都使用input()函数。此函数始终从用户返回string。即使他们在出现提示时输入数字(整数),也会返回这些数字的string

我现在将尝试解释每段代码对该string的作用:

代码 1

n = input("Enter numbers:")
a = list(map(int, n.split()))
print(a[0])

在这里,我们将string分配给一个变量n。然后,我们拿n打电话给n.split().这样做是通过在空格上拆分输入的string来获取string并将其转换为list。因此,如果输入string是:

"1 2 3 4"

list是:

['1', '2', '3', '4']

然后,我们使用mapint()function应用于list中的每个element。接下来,我们将map object传递到list()function中,将其转换为list。我们现在正在使用分配给variableaintegerslist

最后,我们print了第一个elementa[0].因此,例如,如果用户输入了string'1 2 3 4',它将print1

代码 2

n = [input("Enter numbers:").split()]
print(ans[0])

在这里,我们获取输入的string并立即像以前一样split它。这意味着我们现在正在使用通过拆分每个空间的string来获得liststrings

然而,由于它本身在方括号([]),list嵌入在另一个list中。所以在格式中(我不确定这是否是你打算让代码工作的方式):

[['1', '2', '3', 4']]

然后,你printinga[0].由于a是数字的嵌入式list作为strings,取第一个element只会给你数字list,而不是数字list的前element。所以我们的输入示例:'1 2 3 4',在这种情况下print

['1', '2', '3', 4']

请注意,在这一段代码中,我们也没有将数字strings转换为integers,因此它们在末尾保持strings

最新更新