input()vs sys.stdin.read()

fog*_*bit 6 python input python-3.x python-3.2

import sys
s1 = input()
s2 = sys.stdin.read(1)

#type "s" for example

s1 == "s" #False
s2 == "s" #True
Run Code Online (Sandbox Code Playgroud)

为什么?我怎样才能input()正常工作?我试图编码/解码s1,但它不起作用.

谢谢.

Mic*_*kis 7

如果您使用的是Windows,则会注意到input()键入"s"和"输入"时的结果"s\r".从结果中删除所有尾随空格,你会没事的.


Dun*_*can 6

你没有说你正在使用哪个版本的Python,所以我猜你是在使用在Microsoft Windows上运行的Python 3.2.

这是一个已知的错误,请参阅http://bugs.python.org/issue11272 "input()在Windows上有尾随回车"

解决方法包括使用不同版本的Python,使用非Windows操作系统,或从任何返回的字符串()中删除尾随回车input().您还应该意识到迭代stdin具有相同的问题.

  • 关于“使用其他版本的Python”建议,我看到已经发布了Python 3.2.1rc1,因此,如果您不介意使用次要点修复的发行候选版本,则可以升级到该版本,而问题是固定。参见http://www.python.org/download/releases/3.2.1/ (2认同)