【问题标题】:Why is the user not being prompted to enter values for the variables which have an input() statement tagged with them?为什么没有提示用户为带有 input() 语句标记的变量输入值?
【发布时间】:2015-12-01 18:21:19
【问题描述】:

在下面的这段代码中,当我为变量“x”输入多行输入时,连续的变量会自动为自己分配一个值(即使我希望用户输入它们(我也清楚地写了输入() 声明每个变量))(见下文)。这是怎么发生的?为什么为“x”输入的连续行会自动存储在“y”、“z”和其他变量中?

>>> x=input()
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
>>> print(x)
73167176531330624919225119674426574742355349194934
>>> y=input()
>>> print(y)
96983520312774506326239578318016984801869478851843
>>> z=input()
>>> print(z)
85861560789112949495459501737958331952853208805511
>>> a=input()
>>> print(a)
12540698747158523863050715693290963295227443043557
>>> b=input()
>>> print(b)
66896648950445244523161731856403098711121722383113
>>> c=input()
>>> print(c)
62229893423380308135336276614282806444486645238749

【问题讨论】:

  • 这很不寻常...在我的 REPL 中,似乎不可能为一个 input 提示输入多行。你在使用 IDLE 还是什么?
  • @Kevin 我正在使用 IDLE。
  • 如果您从剪贴板粘贴一行行,可能会出现这种情况。
  • @khelwood 我就是这么做的。但无法理解发生这种情况的机制。
  • 我假设 input() 读取缓冲区直到下一个 \n,所以当你再次调用 input 时,缓冲区不是空的,它会继续从那里读取。

标签: python python-3.x input python-idle


【解决方案1】:

一般的答案是,python 一次读取一行代码和数据。对于交互式解释器和 IDLE 的模拟,详细的行为是不同的。在 Win10 控制台上,粘贴上面的 3 行会执行以下操作(在 3.5.0 中),而无需用户按 Enter。

>>> input()
73167176531330624919225119674426574742355349194934
'73167176531330624919225119674426574742355349194934'
>>> 96983520312774506326239578318016984801869478851843
96983520312774506326239578318016984801869478851843
>>> 85861560789112949495459501737958331952853208805511
85861560789112949495459501737958331952853208805511
>>>

第一行被提取并作为输入响应回显。后续行被解释为代码,尤其是 int 字面量语句。

在 IDLE 中,当用户代码运行时,Enter 键将键入或粘贴的字符作为模拟标准输入发送到用户进程。编译后的代码单独发送给用户进程,标记为代码,而不是数据,因此粘贴为标准输入流的文本不会被视为代码。

【讨论】:

  • 我想我知道你想在这里说什么(请原谅我是 Python 新手)。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多