这个python问题让我有点麻烦,所以任务的第一部分基本上是从多行输入中读取数据,直到输入一个空行
如果第一个单词是“捕获”,那么它后面会有两个单词:神奇宝贝的名称(例如皮卡丘)和它的当前级别(例如5),所以它看起来像这样:“捕获皮卡丘5”
如果第一个单词是Query,那么下一个单词将是神奇宝贝的名字。您的程序应该打印您以前捕获的神奇宝贝的级别,或者如果它没有跟踪该神奇宝贝名称,它应该警告用户。例如,如果我之前键入“Capture Pikachu 5”,然后在下一行输入中写入“Query Pikachu”,它将返回“Pikachu为5级”。如果我写入“Query Eevee”而不是“Query Pikachu”,它将改为说“您尚未捕获Eevee”
如果我试图“捕获”一个已经捕获的神奇宝贝(例如,我写“捕获皮卡丘5”,然后在下一行写“捕获皮卡丘4”),它会说“你已经在训练皮卡丘了!”
最后,如果我输入除“捕获”和“查询”之外的任何未知命令,那么它将显示“未知命令!”
以下是我目前的代码:
while line:
if 'Capture' in line:
parts = line.split()
name = parts[1]
number = parts[2]
line = input('Command: ')
elif 'Query' in line and parts[1] in line:
print(name, 'is level', number + '.')
line = input('Command: ')
elif 'Capture' in line and parts[1] == name:
part3 = line.split()
notname2 = part3[1]
print('You are already training', notname2 + '!')
line = input('Command: ')
elif 'Query' in line and parts[1] not in line:
part2 = line.split()
notname = part2[1]
print('You have not captured', notname, 'yet.')
line = input('Command: ')
else:
print('Unknown command!')
line = input('Command: ')
除了当你试图捕获一个已经被捕获的神奇宝贝时,一切似乎都正常。例如,如果我写了“Capture Eevee 3”,然后写了“Capture Eevee 5”,我希望它说“你已经在训练Eevee了!”但它什么也没说,只是要求输入下一行内容
我没有在我的代码中使用dictionary函数,但在其他情况下成功地使其工作,但我可能在某个时候不得不使用它,我只是不知道如何实现它
我不太确定我的代码中的问题是什么,因为其他一切似乎都工作得很好,任何帮助都将不胜感激。谢谢!:)
不要直接在冷页上编程:用适合你的图表(例如流程图)设计你的逻辑流程,并从中编码。您编写的代码将不会到达识别先前口袋妖怪的子句,因为您在第一个子句中有一个包含条件。任何
Capture
都将通过第一个if
块,而不管输入行上还有什么试着做一个决策树:在你的
if "Capture" ...
块中,立即检查你是否有那个口袋妖怪:您将需要对“查询”检查执行同样的操作
请注意,我没有修复您的“重新捕获”行,因为您没有正确跟踪您已经捕获的口袋妖怪角色。如果您发布的代码被传递到较低的分支,它将失败或工作不正确,因为您没有正确地为这些其他分支定义
parts
和name
停止尝试一次编写整个程序;您已经犯了足够多的错误,必须一次修复几个错误才能获得预期的输出。相反,先编写一个简单的
if
语句;在添加任何逻辑之前,请确保该选项有效(例如,可以区分命令)然后添加识别重新捕获的内容是的,如果你使用dict,它会更容易
在您的实际代码中,如果您使用类似{pokemon:lvl}的dict,您无法知道捕获了哪个口袋妖怪 范例
因此,您可以检查Eevee是否存在,代码如下:
我刚刚给你写了这封信,应该可以很好地工作
相关问题 更多 >
编程相关推荐