我正在对Codecademy的pyglatin.py做一个变体,使一个译者可以接受和翻译多个单词。然而,我在翻译多个单词时遇到了困难。我已经能够将原始输入转换成一个列表并翻译第一个,但是我不知道如何引用列表中的下一个条目。任何帮助都将不胜感激。
def piglatin1():
pig = 'ay'
original = raw_input('Enter a phrase:').split(' ')
L = list(original)
print L
i = iter(L)
item = i.next()
for item in L:
if len(item) > 0 and item.isalpha():
word = item.lower()
first = word
if first == "a" or first == "e" or first == "i" or first == "o" or first =="u":
new_word = word + pig
print new_word
else:
new_word = word[1:] + word[0:1] + pig
# first word translated
L = []
M = L[:]
L.append(new_word)
print L # secondary list created.
again = raw_input('Translate again? Y/N')
print again
if len(again) > 0 and again.isalpha():
second_word = again.lower()
if second_word == "y":
return piglatin()
else:
print "Okay Dokey!"
else:
print 'Letters only please!'
return piglatin1()
我最近也在研究这个问题,并提出了以下解决方案(不是使用range,而是使用enumerate来获取索引)。
此示例显示如何访问当前索引、当前项,然后访问列表中的下一项(如果它存在于列表的边界中)。
代码有一些小问题,但我认为有一个主要原因是它不会重复。
为了处理整个字符串
接下来的几行应该放在for语句之外。 此外,您似乎还在循环中将L设置为空字符串:
下面是代码的修改版本,它将循环遍历整个句子,然后请求另一个句子。
所做的更改:
希望这有帮助。
这里有几点需要注意,可能会有帮助。
i = iter(L)
和item = i.next()
是不必要的。它们在这个方法中没有效果,因为您正在紧接着在for item in L
行中重新定义item
。继续并注释掉这两行,看看它是否对您的输出做出了任何更改。for item in L
将遍历列表中的每个项。在此循环中编写的任何代码都将针对列表中的每个项执行一次。变量item
是迭代的list元素的句柄。for i in range(0,len(L))
。然后L[i]
将是当前项,L[i+1]
将给出后续项。相关问题 更多 >
编程相关推荐