【问题标题】:Why is there a [ ] in input([prompt])?为什么输入([提示])中有[]?
【发布时间】:2020-05-23 11:51:03
【问题描述】:

https://docs.python.org/3/library/functions.html#input

参见上面的链接。 现在,下面的问题可能很愚蠢,但我想澄清一下

第一个问题: 为什么input([prompt]) 中有[]?有什么意义吗?

该函数然后从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后返回。

第二个问题:为什么需要将输入转换为字符串?来自sys.stdin 的输入不是已经是字符串了吗?

第三个问题:在这种情况下,去除尾随换行符是什么意思?

【问题讨论】:

  • 表示可选

标签: python string input newline prompt


【解决方案1】:

python 文档中的 [] 表示可选参数 - 令人困惑的是,不需要列表作为参数。

现代 UTF-8 终端的输入很可能是字节,因此转换为字符串是为了避免混淆。

stripping a trailing newline 表示它将换行符从末尾移开,因此您不会在字符串中结束它。

【讨论】:

  • “所以转换为字符串是为了避免混淆。” - 它还有助于防止来自 python 2 的用户混淆,其中input 返回了解析的输入,而raw_input 返回字符串输入。
  • 是的,我好像记得raw_input 还保留了换行符?
  • 来自现代 UTF-8 终端的输入很可能是字节,因此转换为字符串以避免混淆。 - 我不明白这一点。请详细说明。
  • sys.stdininput 读取的等价物是 bytes 流 - 因此它被转换为字符串。
  • @match 最后一个问题:input() 何时停止从sys.stdin 读取?
【解决方案2】:
  1. 在 Python 文档中,方括号内的参数是可选的

  2. sys.stdin 是一个字节流,因此需要解码才能将字节转换为str

  3. 单击“ENTER”时,将向sys.stdin 发送一个换行符。 input 使用换行符来分隔输入的结尾。尾随 newlien 是设计决策,通常很有用。例如,print(input("Enter your name")) 不会产生两个换行符。

【讨论】:

    【解决方案3】:

    为什么输入([提示])中有[]?有什么意义吗?

    你可以忽略括号。你可以像这样使用 input()。

    a = input("Type your age here")

    第二个问题:不再需要转换。用户输入的内容将是一个字符串。

    【讨论】:

      猜你喜欢
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2015-06-26
      • 2021-05-08
      • 2016-06-07
      • 1970-01-01
      相关资源
      最近更新 更多