我有一个执行以下操作(除其他外)的函数:
userinput = stdin.readline()
betAmount = int(userinput)
应该从 stdin 获取输入整数作为字符串并将其转换为整数。
然而,当我调用该函数时,它返回一个换行符(它甚至不等待我输入任何内容)。
在程序的早期,我得到了一些以下形式的输入:
stdin.read(1)
捕获单个字符。
难道这跟这有什么关系吗?我是否以某种方式将换行符写入标准输入的下一行?
我怎样才能解决这个问题?
stdin.read(1)
从中读取一个字符stdin
。如果此时要读取多个字符(例如,读入的一个字符后面的换行符),则该字符或多个字符仍将在缓冲区中等待下一个字符read()
or readline()
.
举个例子,给定rd.py
:
from sys import stdin
x = stdin.read(1)
userinput = stdin.readline()
betAmount = int(userinput)
print ("x=",x)
print ("userinput=",userinput)
print ("betAmount=",betAmount)
...如果我按如下方式运行此脚本(我已输入234
):
C:\>python rd.py
234
x= 2
userinput= 34
betAmount= 34
... 所以2
正在被首先拾取,留下34
以及要拾取的尾随换行符readline()
.
我建议通过使用来解决问题readline()
而不是read()
大多数情况下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)