基于python中的输入打印字符串长度时的NameError

时间:2013-10-02 18:22:00

标签: python

我是Python的初学者,我需要一些相对简单的“帮助”(对于非初学者)。

我想要做的是一个快速的'程序',它测量输入的字符串的长度。也许我看起来不够努力,但我似乎无法在互联网上找到任何关于此的特定信息。

好的,这就是我到目前为止所做的:

print "Please enter a number or word and I will tell you the length of it."

NR = raw_input()
print len(NR)

* NR没有重要意义,它只是一个随机变量名称

一切都按预期工作。例如,我输入单词“Hello”然后它回复“5”或我输入数字100并回复“3”这很好,但当我尝试输入另一个单词时我得到这个错误:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    hello
NameError: name 'hello' is not defined

然而,当我输入另一个号码(在我输入之后)时,它只重复我输入的号码。例如,当我第一次输入数字“50”时,它回复“2”,但是当我第二次输入“50”时,它只是重复整数给我。

注意:  我认为我理解第一部分的问题:它不能多次工作,因为变量“NR”只计算为输入的第一个字符串。即使我是对的,我仍然不知道解决方案。

1 个答案:

答案 0 :(得分:3)

您的程序只收集一行输入,然后完成。程序完成后,您将回到用于启动程序的任何环境中。如果该环境是python shell,那么您应该期望键入50将打印50,并且键入hello将打印出一个no-such-variable-name错误消息。

要使代码多次运行,请将其置于while循环中:

while True:
    print "Please enter a number or word and I will tell you the length of it."

    NR = raw_input()
    print len(NR)

请注意,raw_input()可以打印提示,因此您不需要print声明:

while True:
    NR = raw_input("Please enter a number or word and I will tell you the length of it: ")
    print len(NR)

此程序片段将永久运行(或者,至少在您使用 Control - C 中断它之前)。

如果您希望能够在不中断程序的情况下停止,请尝试以下操作:

NR = None
while NR != '':
    NR = raw_input("Please enter a number or word (or a blank line to exit): ")
    print len(NR)

如果您想打印一次提示,然后使用可以输入许多字符串,请尝试:

print "Please enter a number or word and I will tell you the length of it."
while True:
    NR = raw_input()
    print len(NR)