Python 当在前一个循环中发现某个字符时,如何开始新的循环?

Python 当在前一个循环中发现某个字符时,如何开始新的循环?,python,methods,boolean,Python,Methods,Boolean,具体来说,用户输入一个单词。我想汇编一份所有使用的元音和辅音的列表(没有重复,只是每个使用的元音和辅音的注释)。然而,我只想在找到单词中最后一个元音后开始计算辅音 例如,如果输入为“hello”,则应计算e,o,但不计算辅音,因为在最后一个元音后有non,计数元音=2,辅音=0。如果输入为“swarm”,则应计算a、r、m、元音=1、辅音=2。“Book”会给你o,k,元音=1,辅音=1 我还希望该计划满足其他条件,但这是第一步,也是最重要的一步 这是我所拥有的,但它并没有按照我需要的那样工作(

具体来说,用户输入一个单词。我想汇编一份所有使用的元音和辅音的列表(没有重复,只是每个使用的元音和辅音的注释)。然而,我只想在找到单词中最后一个元音后开始计算辅音

例如,如果输入为“hello”,则应计算e,o,但不计算辅音,因为在最后一个元音后有non,计数元音=2,辅音=0。如果输入为“swarm”,则应计算a、r、m、元音=1、辅音=2。“Book”会给你o,k,元音=1,辅音=1

我还希望该计划满足其他条件,但这是第一步,也是最重要的一步

这是我所拥有的,但它并没有按照我需要的那样工作(因为字母表中的每个字母都有一行,我将使用引号来表示语句的延续):

我尝试过缩进辅音部分,使其仅在元音搜索完成后才开始,但是,这似乎不起作用。我需要索引最后一个元音的位置,然后开始辅音循环


另一方面,我们只执行相当基本的命令,如布尔、连接和字符串方法。没有字典、清单或诸如此类的东西。我很确定有一个简单的方法可以做到这一点,但我似乎不明白。当你在单词上循环时,你也可以使用你的
I
值向后循环它的字符。然后,我们使用一个布尔值来确定我们的向后搜索是否命中了一个元音,并且只在命中第一个元音之前计算辅音:

vowels = 'aeiou'

VL=''
VC=0

CL=''
CC=0

word = 'hello'
count_cons = True
for i, c in enumerate(word):
    if c in vowels and c not in VL:
        VL += c
        VC += 1

    if word[-i-1] in vowels:
        count_cons = False
    elif count_cons:
        CL += word[-i-1]
        CC += 1

print(VL)
print(VC)
print(CL)
print(CC)
这张照片是:

eo
2

0
如果您想缩短此时间,可以执行以下操作:

VL = set(c for c in word if c in vowels)
CL = set(c for i, c in enumerate(word) 
         if c not in vowels and all(x not in vowels for x in word[i+1:]))
VC = len(VL)
CC = len(CL)

print(VL)
print(CL)
print(VC)
print(CC)

与其只计算第一个元音后的辅音,为什么不每次都进行计数,而是在找到元音时重置结果

    if ch=="a" and ch not in VL:
        VL=VL+"a"
        VC+=1
        CL = ""  # add these two lines to each condition
        CC = 0
由于我无法抗拒,代码可以变得更短、更高效:

VL = set()
CL = set()

for ch in word:
    if ch in VOWELS:
        VL.add(ch)
        CL = set()
    else:
        CL.add(ch)

VC = len(VL)
CC = len(CL)

不能和更短更高效的人争论!我将尝试重置所有内容,并查看它是否适用于我需要添加的其他一些条件。其他的比较容易,所以这应该可以解决更多的问题。啊!使用VL为VC计数要比每次单独向其添加命令要好得多。这无疑缩短了代码。倒循环应该可以做到,尽管我必须以相反的顺序打印它们。。。它们需要在书写时按顺序出现在印刷品中。但是这可以通过:print(CL[-1:],对吗?应该是print(CL[:-1])是的,你确实可以这样做。你也可以将
CL+=word[-i-1]
改为
CL=word[-i-1]+CL
VL = set()
CL = set()

for ch in word:
    if ch in VOWELS:
        VL.add(ch)
        CL = set()
    else:
        CL.add(ch)

VC = len(VL)
CC = len(CL)