使用While True循环

2024-06-02 10:56:52 发布

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

我应该写一个代码来检查一个单词的某些音节(例如:中的ex都是)。如果单词仅由这些音节组成,则代码返回“”和“”,否则返回(如果单词还包含其他音节)。这个赋值要求我使用一个while true循环,虽然我想出了一个更简单的方法来让这段代码工作,但我不知道从哪里开始为这个问题创建一个while true循环。

我当前的代码只适用于所有音节都的单词:

def check(word):
    pos = 0
    while True:
        if pos < len(word):
            if word[pos:pos+2] == "in":
                pos += 2 
                break
            if word[pos:pos+2] == "ex":
                pos += 2
                break
            if word[pos:pos+3] == "are":
                pos += 3 
                break
    return "YES"

Tags: 方法代码postrueifdefcheck单词
3条回答

对于重叠的音节,实际上可能需要某种回溯。一个简单的解决方案可以在。。。否则,像这样:

syllables = ["in", "ex"]
word = "exinex"
while word:
    matches = [s for s in syllables if word.startswith(s)]
    if not matches:
        print "unable to find syllable for " + word
        break
    word = word.replace(matches[0], "", 1)
else:
    print "only expected syllables found"

在没有实际代码的情况下,while True循环可用于继续请求用户输入,直到输入了一个特殊的“stop word”。

while True:
    text = input("Enter next word to check, end to exit")
    if text=="end":
        break
    else:
        #... your syllable checking

这将允许用户输入几个单词进行检查,而无需每次重新启动程序。

如果出于某种原因,您决定使用while循环,它将如下所示:

i = 0

while True:

    i += 1
    word = words[i]

    if (syllables in word):
        print('Syllables are in word')
    else:
        print('Syllables not in word')

    if i > len(words):
        break

然而,这可能是解决问题的更糟糕的方法。在迭代一个集合时,使用for循环来防止不必要地检查整个集合是否已被检查,通常效率更高。for循环实现可能如下所示:

for s in syllable_set_1:
    if s in word:
        print('Syllable ' + s + ' is in word')
    else:
        print('Syllable ' + s + ' is not in word') 

相关问题 更多 >