【问题标题】:Why input() takes string and [input().split()] takes number?为什么 input() 需要字符串而 [input().split()] 需要数字?
【发布时间】:2017-10-21 07:38:33
【问题描述】:

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

【问题讨论】:

  • “在代码 2 中它已经在 int 中” - 这是完全错误的。
  • 你知道代码2在做什么吗?提示:这不是你想的那样。
  • 它从用户那里获取输入并与这些空间分开并添加到数组中??
  • []它的功能使列表正确!
  • n = list(map(int, input("输入号码:").split())) print(n[0]) 这有效... @cᴏʟᴅsᴘᴇᴇᴅ

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


【解决方案1】:

在这两段代码中,您都使用了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']

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

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

代码 2

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

在这里,我们像以前一样获取输入的string 和立即split。这意味着我们现在正在处理 strings 中的 list,这是通过在每个空格处拆分 string 获得的。

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

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

那么,你就是printinga[0]。因为a 是数字strings 的嵌入list,所以取第一个element 只会给你数字list,而不是数字list 的第一个element。所以我们的输入示例:'1 2 3 4',在本例中为print

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

请注意,在这段代码中,我们也没有将数字 strings 转换为 integers,因此它们最后仍为 strings

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多