代码之家  ›  专栏  ›  技术社区  ›  Ferdinando VISHAL GAIKWAD

pyuthon 2.7 vscode没有获得正确的输入字符串长度

  •  0
  • Ferdinando VISHAL GAIKWAD  · 技术社区  · 6 年前

    在我的课上,我们正在学习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。

    我错在哪里?

    我错过了一个模块?

    谢谢你的帮助

    0 回复  |  直到 6 年前
        1
  •  1
  •   Doon    6 年前

    我不清楚为什么会发生这种情况,而且我没有访问windows机器进行测试/验证的权限,但是根据上面的注释,在python版本上,您使用的是 raw_input 只是拆线而已( \n )而不是马车返回( \r )Windows使用 \r\n 当unix使用 \n . 当原始输入返回 R 仍然在字符串上,因此需要额外的字符。cli中一种有用的调试技术是使用 repr() 在值上查看它的确切表示方式。这有助于定位字符串中的任何杂散控件或不可见字符。

    函数 rstrip() 将删除字符串右侧的所有空白,在这种情况下,应该可以安全地删除 R . 如果此代码在类似*nix的系统上运行 R() 仅当存在空白时才将其删除。您还可以指定一个字符集,以便如果您想学究式的,可以使用。 rstrip("\r") .

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

    应在保持不同版本兼容性的同时解决此问题。