首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字典中打印

从字典中打印
EN

Stack Overflow用户
提问于 2015-08-25 01:34:10
回答 1查看 49关注 0票数 0

对于学校的家庭作业,我们必须编写一个代码来完成以下工作:

编写一个程序来测试你对动物的科学名称的认识。您的程序应该从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企鹅‘。

代码语言:javascript
运行
复制
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: ')

我做错了什么导致了这一切,我如何解决它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 01:38:50

您做错了,您总是打印从.txt - cName中读取的最后一个值。您应该从字典中获得关于科学名称的通用名称的信息。例子-

代码语言:javascript
运行
复制
while x:
  if x in animals:
    print("That's the " + animals[x].rstrip() + "!")

还有一些建议,循环处理这样的文件是不太好的-

代码语言:javascript
运行
复制
for i in open('animals.txt'):

您应该显式地打开和关闭文件,您可以在这里使用with语句。例子-

代码语言:javascript
运行
复制
with open('animals.txt') as f:
    for i in f:
        sName, cName = i.split(',')
        animals[sName] = cName

当块结束时,with语句将为您处理文件的关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32194243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档