while int(input("choose a number")) != 5 :
说我想看看输入了什么号码。是否有间接的方式来实现这一目标?
编辑我可能不是很清楚哈哈。 。我知道在调试器中,您可以单步执行并查看输入的数字。是否可能存在记忆破坏或类似事件,让您在事后获得“旧”数据?答案 0 :(得分:7)
不 - 你必须分配它......你的例子可以使用双参数样式iter
来编写:
for number in iter(lambda: int(input('Choose a number: ')), 5):
print number # prints it if it wasn't 5...
答案 1 :(得分:2)
做这样的事情。您不必分配,只需组成一个附加功能,并在每次需要时使用它。希望这会有所帮助。
def printAndReturn(x): print(x); return(x)
while printAndReturn(int(input("choose a number"))) != 5 :
# do your stuff
答案 2 :(得分:1)
不,没有办法以你的方式访问该输入,你必须存储它。这是一个“hello world”级别的例子
val = int(input("choose a number"))
while val != 5 :
val = int(input("choose a number"))
答案 3 :(得分:1)
半相关的hacky解决方案,从技术上回答你的问题但不是真的:
如果你在交互式python环境(带有>>>
的东西)中运行它,你可以这样做
>>>while int(input("choose a number: ")) != 5 :
... print _
...
choose a number: 2
2
choose a number: 5
>>>
答案 4 :(得分:0)
不简单。如果您尝试从 stdin 读取过去的值,它会给您一个 UnsupportedOperation 异常。您可以使用自定义文件缓冲区对象包装 stdin,该对象可在您需要时读取 stdin 并让您查找。
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)))