对于学校的家庭作业,我们必须编写一个代码来完成以下工作:
编写一个程序来测试你对动物的科学名称的认识。您的程序应该从animals.txt中读取这些科学动物的名称,然后向用户询问多行输入。下面显示了一个示例animals.txt: 夜光蜘蛛,萤火虫Pongo abelii,苏门答腊Orang-utan Felis Lynx,Lynx Spheniscus,Humboldt Penguin animals.txt将包含零或多行,每一行描述动物。每一行包含两个值,用逗号(,)分隔。逗号的左边包含动物的科学名称,逗号的右边包含动物的通用名称。 您的程序应该从animals.txt中读取这些科学动物的名称,然后向用户询问多行输入。每一次,你的程序应该要求用户输入动物的科学名称。如果这个科学名称存在于您从animals.txt读取的数据中,您的程序应该打印出该动物的通用名称。否则,如果科学名称是未知的,你的程序应该打印出来,它不知道该动物。例如: 科学名称: Humboldti,那是洪堡企鹅!科学名称: Callithrix Pygmaea我不认识那只动物。科学名称:阿奇诺坎巴夜光虫,那是萤火虫!科学名称:
下面是我到目前为止编写的代码。正如你们在这个例子中所看到的,如果动物在列表中,那么它应该打印出动物的共同名称(而不是科学名称)。当我运行我的代码时,它会为示例中的前两个正确地打印出来,但是当我输入'Arachnocampa luminosa‘时,它会发出’那是Humbolt企鹅‘。
animals = {}
for i in open('animals.txt'):
sName, cName = i.split(',')
animals[sName] = cName
x = input('Scientific name: ')
while x:
if x in animals:
print("That's the " + cName.rstrip() + "!")
else:
print("I don't know that animal.")
x = input('Scientific name: ')
我做错了什么导致了这一切,我如何解决它?
发布于 2015-08-24 17:38:50
您做错了,您总是打印从.txt
- cName
中读取的最后一个值。您应该从字典中获得关于科学名称的通用名称的信息。例子-
while x:
if x in animals:
print("That's the " + animals[x].rstrip() + "!")
还有一些建议,循环处理这样的文件是不太好的-
for i in open('animals.txt'):
您应该显式地打开和关闭文件,您可以在这里使用with
语句。例子-
with open('animals.txt') as f:
for i in f:
sName, cName = i.split(',')
animals[sName] = cName
当块结束时,with
语句将为您处理文件的关闭。
https://stackoverflow.com/questions/32194243
复制相似问题