我应该构建一个Python程序,将用户输入作为字符串接收。此程序需要将输入的每个字符串添加到列表中,直到输入“John”,然后打印出列表。你知道吗
基本上,这个程序将所有输入错误的字符串存储在一个列表中,其中“John”是唯一正确的字符串。你知道吗
但是,我得到以下例外:
Traceback (most recent call last):
File "/home/dwayne/doen.py", line 7, in <module>
if names_entered == "John":
NameError: name 'names_entered' is not defined`
这是我目前掌握的代码:
name = "John"
while name != 'John':
names_entered = raw_input('Enter your name: ')
if names_entered == "John":
print []
缩进不正确;while循环和if的主体必须缩进。你知道吗
在那之后,编译器是非常正确的:由于if与while处于同一级别,因此不能保证输入的名称在那一点上有值。你知道吗
即使你解决了这个问题,你也有其他问题:
我希望这能让你动起来;它仍然不会在列表中累积名字;那是给你的。你知道吗
我可以给你一些逻辑上的帮助。您正在WHILE循环之前将“name”变量设置为“John”,检查“name”变量是否等于“John”。这意味着WHILE条件在您接受任何类型的输入之前就已经满足了。这也意味着while循环中声明的任何内容都不会被触及,因此实际上也不会被声明。因此,当您在WHILE循环下面的IF语句中访问“names\u entered”时,“names\u entered”从未被赋值(它没有被声明),因此您会得到一个错误。你知道吗
我的逻辑解决方案是:
在获取to WHILE循环之前,将“name”变量设置为空字符串。当您命中循环时,条件将不会得到满足(空字符串不等于“John”),因此将考虑循环的内容。你知道吗
你要做的是建立一个名字列表,你知道最终会以“John”结束。因此,在进入WHILE循环之前,需要一个列表(字符串数组)来添加所有这些名称。在声明“name”变量的地方声明一个空字符串数组(您的“names\u entered”)。然后,当您接受来自用户的输入(输入到“name”变量中)时,您将把得到的每个条目添加到“names\u entered”变量中,并最终打印出来。你知道吗
在代码中,您试图将用户输入直接放入列表中。相反,将输入指定给“name”,然后(在您将“name”添加到“names\u entered”之后)由WHILE循环测试它是否等于“John”。当“name”等于“John”时,WHILE条件将被满足,WHILE循环下面的代码将被处理。你知道吗
至于打印出列表,您必须循环遍历已收集的名称数组,并将每个名称打印到控制台。也许是“for”循环?你知道吗
很抱歉缺少代码,但希望逻辑帮助会有所帮助。你知道吗
祝你好运!你知道吗
相关问题 更多 >
编程相关推荐