分享
三行代码  ›  专栏  ›  技术社区  ›  Remi_Zacharias

SyntaxError:在运行代码以计算字符串中的元音数时,无法将其赋值给literal

  •  0
  • Remi_Zacharias  · 技术社区  · 1 周前

    我正在测试一个计算字符串中元音字母数的代码,但它总是给我一个语法错误。我可能错过了一些很愚蠢的事情,但我不知道它是从哪里来的。 这是我的代码:

    def count_vowels(string):
    num_vowels = 0
    
    
    for 'a' in string:
    
        num_vowels += 1
    
    for 'e' in string:
    
        num_vowels += 1
    
    for 'i' in string:
    
        num_vowels += 1
    
    for 'o' in string:
    
        num_vowels += 1
    
    for 'u' in string:
    
        num_vowels += 1
    
    print(num_vowels)
    
    count_vowels('abracadabra')
    count_vowels("")
    count_vowels("pear tree")
    count_vowels("o a kak ushakov lil vo kashu kakao")
    count_vowels("tk r n m kspkvgiw qkeby lkrpbk u thouonm fiqqb kxe...(This just goes on forever"))
    

    for 'a' in string: (line7)
       ^
    SytntaxError: can't assign to literal
    
    5 回复  |  直到 1 周前
        1
  •  1
  •   John Gordon    1 周前

    for 'a' in string 不是查找 a 在一根绳子里。

    for item in list 要求 item 作为一个变量,你有一个文本值,这就是为什么你会得到那个错误。

    改用这个:

    for char in string:
        if char in "aeiou":
            num_vowels += 1
    
        2
  •  1
  •   Javascript Dev    1 周前

    def count_vowels(string):
        num_vowels = 0
        vowels = ('a', 'e', 'i', 'o', 'u')
        for letter in string:
            if letter in vowels:
                num_vowels += 1
        print(num_vowels)
    
    
    count_vowels('abracadabra')
    count_vowels("")
    count_vowels("pear tree")
    count_vowels("o a kak ushakov lil vo kashu kakao")
    count_vowels("tk r n m kspkvgiw qkeby lkrpbk u thouonm fiqqb kxe...(This just goes on forever"))
    

    你可以看看 here 为了某种理论。

        3
  •  1
  •   Steven Rumbalski    1 周前

    你的问题出在你的for循环中。

    for 'a' in string:
    

    for循环用于遍历iterable。for循环将iterable中的值赋给它的循环变量。试着给你起名字 'a'

    使用python计算字符串中单个字符的最简单方法是使用 .count()

    'reed'.count('e') // returns 2
    

    计算任何元音的更好方法:

    sum(1 for c in string if c in 'aeiou')
    
        4
  •  1
  •   Serge Ballesta    1 周前

    for 需要一个变量,因为它要迭代值的iterable。假设你想数数 不同的 元音,你可以用 if :

    if 'a' in string:
        num_vowels += 1
    

    但惯用的方法是:

    count_vowels = sum(1 if i in string else 0 for i in 'aeiou')
    

    对于该语法)

        5
  •  0
  •   yaho cho    1 周前
    def count_vowels(string):
        num_vowels = 0
        if 'a' in string:
            num_vowels += 1
        if 'e' in string:
            num_vowels += 1
        if 'i' in string:
            num_vowels += 1
        if 'o' in string:
            num_vowels += 1
        if 'u' in string:
            num_vowels += 1
        print(num_vowels)
    
    count_vowels('abracadabra')
    count_vowels("")
    count_vowels("pear tree")
    count_vowels("o a kak ushakov lil vo kashu kakao")
    count_vowels("tk r n m kspkvgiw qkeby lkrpbk u thouonm fiqqb kxe...(This just goes on forever)")
    

    为了完成你的代码,

    def count_vowels(string):
        vowels = ['a', 'e', 'i', 'o', 'u']
        num_vowels = 0
        for vowel in vowels:
            num_vowels += string.count(vowel)
        print(num_vowels)
    
    count_vowels('abracadabra')
    count_vowels("")
    count_vowels("pear tree")
    count_vowels("o a kak ushakov lil vo kashu kakao")
    count_vowels("tk r n m kspkvgiw qkeby lkrpbk u thouonm fiqqb kxe...(This just goes on forever)")
    

    5
    0
    4
    13
    16