4
while int(input("choose a number")) != 5 :

假设我想看看输入了什么数字。有没有间接的方法来解决这个问题?

编辑我可能不是很清楚,哈哈。. 我知道在调试器中,您可以单步执行并查看输入的数字。是否有内存破解或类似的东西可以让您在事后获取“旧”数据?

4

5 回答 5

7

不-您必须分配它...您的示例可以使用两个参数样式编写iter

for number in iter(lambda: int(input('Choose a number: ')), 5):
    print number # prints it if it wasn't 5...
于 2013-07-19T17:05:07.960 回答
2

做这样的事情。您不必分配,只需编写一个附加功能并在每次需要执行此操作时使用它。希望这可以帮助。

def printAndReturn(x): print(x); return(x)

while printAndReturn(int(input("choose a number"))) != 5 :
      # do your stuff
于 2013-07-19T17:25:06.030 回答
1

不,没有办法以您的方式访问该输入,您将不得不存储它。这是一个“hello world”级别示例

val = int(input("choose a number"))
while val != 5 :
  val = int(input("choose a number"))
于 2013-07-19T17:20:54.707 回答
1

半相关的 hacky 解决方案,从技术上回答你的问题,但不是真的:

如果你在交互式 python 环境中运行它(带有 的东西>>>),你可以这样做

>>>while int(input("choose a number: ")) != 5 :
...  print _
...
choose a number: 2
2
choose a number: 5
>>>

请注意,这只适用于交互式环境。

于 2013-07-19T18:27:47.190 回答
0

不简单。如果您尝试从标准输入读取过去的值,它会给您一个 UnsupportedOperation 异常。您可以使用自定义文件缓冲区对象包装标准输入,该对象在您需要时读取标准输入并让您搜索。

import sys
from io import StringIO


class InputHistoryBuffer(StringIO):
    def __init__(self):
        super().__init__()
        self._stdin = sys.stdin
        sys.stdin = self

    def readline(self) -> str:
        value = self._stdin.readline()
        self.writelines([value])
        return value


input_history = InputHistoryBuffer()
x = input(":")

sys.stdin.seek(0)
print(sys.stdin.read(len(x))) 
于 2021-06-24T14:01:16.337 回答