像这样的简单代码:
for input in sys.stdin:
if input=='#': break . #this is considered false even if I type # and wont break
print(input) #it prints #
我希望用户键入#来停止循环,但是即使我键入#,该语句仍被认为是错误的。
不仅是“#”,而且是“!”或“ @”等。
有人知道为什么吗?谢谢。
答案 0 :(得分:0)
由于您询问了原因,我认为它实际上是您在输入末尾添加的折线。如果您使用此代码,则它实际上可以工作:
import sys
for input in sys.stdin:
input = input.strip()
if input=='#':
break
print(input)
在这里您可以看到折线在字符串中:
import sys
for user_input in sys.stdin.detach():
print(user_input)
答案 1 :(得分:0)
从用户那里获取输入的通常方法是使用input
函数:
inp = input('Type something')
if inp!='#':
print(inp)
使用除#
以外的任何输入运行将回显您的输入,否则将无济于事(如您所说的break
,但是由于它不在循环)
答案 2 :(得分:0)
n
上面的代码无法正常运行,因为sys.stdin是文件句柄,并且不会到达某些'...'。
但是您可以使用下面的代码,它会破坏您的期望:
for something in sys.stdin:
...