我试图找出单词中第一个元音的位置,但它一直输出'-1'。当我将aLow = word.find(vowel)
更改为aLow = word.find("a")
时,它工作正常。你知道吗
vowels = ['a','e','i','o','u']
while True:
letters = []
pGWord = ""
word = raw_input("Type word to 'Pig Latin' it: ")
low = len(word)
for vowel in vowels:
aLow = word.find(vowel)
if aLow < low:
low = aLow
print low
好吧,问题的根源是:
这意味着当
aLow
是-1
时,low
被设置为-1
,然后保持不变,因为没有索引小于-1
。你知道吗所以不管
aLow
是什么,输出总是最低的索引-1
,除非所有元音都找到了,否则此时它将是0。你知道吗相反,我将避免您使用的结构,即启动
low
和len(word)
,然后找到比它小的索引。相反,不妨尝试以下方法:它给出:
正如br1ckb0t's answer所解释的,问题是-1比所有索引都小。因此,通过正确返回找到的最低索引,您将返回-1,除非找到所有,而不是只有未找到。你知道吗
你可以很容易地解决这个问题。只要换一行:
…至:
还有其他方法可以解决这个问题。你知道吗
例如,您可以将
find
包装到一个函数中,该函数将-1
推到底:这似乎有点愚蠢,直到您意识到它允许您用以下内容替换整个函数:
或者您根本不能使用
find
,而是查找元音集中的每个字母:最简单的答案是添加
continue
:原因:
如果在不改变
low
变量的情况下找不到匹配项,则搜索需要continue
。你知道吗相关问题 更多 >
编程相关推荐