为什么input()接受字符串而[input()。split()]需要数字?

时间:2017-10-21 07:38:33

标签: arrays string python-3.x list integer

代码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:打印代码不起作用。为什么我不能从列表中打印元素?

1 个答案:

答案 0 :(得分:0)

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

我现在将尝试解释每段代码对string

的影响

代码1

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

在此,我们将string分配给变量n。然后,我们选择n并致电n.split()。这样做是为了string并通过在空格上分割输入的list将其转换为string。因此,如果输入的string是:

"1 2 3 4"

list将是:

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

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

最后,我们element第一个a[0]string。因此,如果用户输入了'1 2 3 4'print,则会1 n = [input("Enter numbers:").split()] print(ans[0])

代码2

string

在这里,我们像以前一样采用输入的split并立即list。这意味着我们现在通过在每个空间拆分strings来获得string []

但是,由于它本身位于方括号(list)内,因此list嵌入在另一个[['1', '2', '3', 4']] 中。所以在格式中(我不确定这是否是你希望代码工作的方式):

printing

然后,您是a[0] a。由于liststrings数字的嵌入element,因此第一个list只会为您提供element,而不是第一个list数字'1 2 3 4'的数字。因此,我们输入的示例:print,在这种情况下['1', '2', '3', 4']

strings

请注意,在这段代码中,我们也没有将数字integers转换为strings,因此它们最后仍为<input type="text" name="quantity_box[]" class="form-control" autofocus="" /> <input type="text" name="quantity_box[1]" class="form-control" autofocus="" /> <input type="text" name="quantity_box[2]" class="form-control" autofocus="" />