Python 2.7 VSCODE没有获得正确的输入字符串长度

问题描述 投票:0回答:1

在我班上我们正在研究python 2.7。我正在使用vscode来测试练习。

练习1:读取用户输入并打印长度。如果用户写出退出程序完成。

我的代码如下:

myexit=False
while (myexit!=True):
    #read user input
    txt=raw_input("write a string or write exit to go out: ")
    #print the user input string
    print txt
    if (str(txt)=='exit'):
        myexit=True#exit from while
    else:
        print len(txt) #print the string length
print "finish"

当我测试代码时,我总是得到字符串+1的长度

例如:如果我写foo,输出是4而没有3.当我写退出时,我不会从while出去,输出是5。

哪里错了?

我错过了一个模块?

谢谢你的帮助

python python-2.7 visual-studio-code
1个回答
1
投票

我不确定为什么会发生这种情况,我无法访问Windows机器进行测试/验证,但根据上面的评论,看来在你使用的python版本上,raw_input只剥离换行符(\n)而不是回车(\r)。 Windows使用\r\n而unix使用\n。当原始输入返回时,\r仍然在字符串上,因此额外的char。 cli上一个有用的调试技术是在值上使用函数repr()来查看它的确切表示方式。这有助于在字符串中找到任何杂散控件或不可见的字符。

函数rstrip()将从字符串的右侧删除所有空格,在这种情况下应该安全地删除流浪的\r。如果此代码在类似系统的* nix上运行也应该是安全的,因为rstrip()只会删除空格(如果存在)。你也可以指定一组char来剥离,所以如果你想要迂腐,你可以使用rstrip("\r")

txt=raw_input("write a string or write exit to go out: ").rstrip("\r")

应该修复问题,同时仍然保持不同版本的兼容性。

© www.soinside.com 2019 - 2024. All rights reserved.