无法调用字典函数。密钥错误0

2024-05-12 19:56:38 发布

您现在位置:Python中文网/ 问答频道 /正文

为了我的comp-sci课程,我被分配去编一本英语到海盗词典。用户被提示输入一个句子,然后翻译成海盗,但它不工作,我不知道为什么。任何帮助都将不胜感激。你知道吗

eng2pir = {}
eng2pir['sir'] = 'matey'
eng2pir['hotel'] = 'fleabag inn'
eng2pir['restauraunt'] = 'galley'
eng2pir['your'] = 'yer'
eng2pir['hello'] = 'avast'
eng2pir['is'] = 'be'
eng2pir['professor'] = 'foul blaggart'

a = input("Please enter a sentence to be translated into pirate: ")

for x in range(len(a)):
    b = a.replace(x, eng2pir[x])


print(b)

Tags: 用户behotel句子课程词典scisir
3条回答

循环在range(len(a))上迭代,因此x将为输入中的每个字符接受一个整数值。这是出于以下几个原因:

  • 你的目标是迭代单词,而不是字符。你知道吗
  • 为字典编制索引应该用单词,而不是整数(这是导致错误的原因)。你知道吗

最后,请注意.replace()替换字符串中第一个出现的搜索项。若要以仍然使用该方法的方式修改处理此问题的方法,请考虑以下两个主要更改:

  • 迭代字典的键;可能被替换的单词。你知道吗
  • 循环,直到输入中不存在这样的词,因为replace只进行个别更改。你知道吗

对于范围内的x(len(a)): b=a.替换(x,eng2pir[x])

因为for循环x是int 但是eng2pir dict没有int键

so输出错误

#!/usr/bin/env python
# coding:utf-8
'''黄哥Python'''

eng2pir = {}
eng2pir['sir'] = 'matey'
eng2pir['hotel'] = 'fleabag inn'
eng2pir['restauraunt'] = 'galley'
eng2pir['your'] = 'yer'
eng2pir['hello'] = 'avast'
eng2pir['is'] = 'be'
eng2pir['professor'] = 'foul blaggart'

a = input("Please enter a sentence to be translated into pirate:\n ")

lst = a.split()
b = ''
for word in lst:
    b += eng2pir.get(word, "")
print(b)

您正在迭代字符串输入中的每个字符,正如前面的另一个答案所说,replace只替换第一个出现的字符。 你可能想这样做(在你编好字典之后)。你知道吗

a = input("Please enter a sentence to be translated into pirate: ")

for x in eng2pir:
    while x in a:
        a = a.replace(x,eng2pir[x])

print(a)

相关问题 更多 >