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