Python元音统计函数报local variable 'rta'未赋值错误如何解决
错误产生原因
你的代码中三个条件分支存在逻辑重复,导致部分场景下rta变量没有被提前赋值就被返回:
- 第一个分支
if impares > pares和第二个分支elif pares < impares是完全等价的判断,两个分支永远只会触发第一个 - 当出现奇数位置元音数小于偶数位置元音数的场景时,三个判断条件都不满足,
rta变量没有被赋值,执行return rta时就会抛出local variable 'rta' referenced before assignment错误
修复方案
你原本的逻辑应为:奇数位置元音更多返回1,偶数位置元音更多返回2,两者相等返回0,修正判断逻辑即可,可选两种修复方式:
方案1:修正第二个判断条件
把第二个elif的条件改为pares > impares,同时可以把第三个判断简化为else减少冗余判断:
def conteo_vocales(cadena: str)->int: numero_vocales = 0 longitud = len(cadena) i = 0 pares = 0 impares = 0 while i<longitud : if cadena[i] == "a" or cadena[i] == "e"or cadena[i] == "i"or cadena[i] == "o"or cadena[i] == "u": numero_vocales += 1 if i %2 == 0 : pares +=1 else: impares +=1 i += 1 if impares > pares: rta = 1 elif pares > impares: rta = 2 else: rta = 0 return rta h = conteo_vocales("hormigas") print(h)
方案2:给rta设置默认值
可以在判断前先给rta赋初始值0(即两者相等时的返回值),避免分支漏判的问题:
def conteo_vocales(cadena: str)->int: numero_vocales = 0 longitud = len(cadena) i = 0 pares = 0 impares = 0 rta = 0 # 提前设置默认值 while i<longitud : if cadena[i] == "a" or cadena[i] == "e"or cadena[i] == "i"or cadena[i] == "o"or cadena[i] == "u": numero_vocales += 1 if i %2 == 0 : pares +=1 else: impares +=1 i += 1 if impares > pares: rta = 1 elif pares > impares: rta = 2 return rta h = conteo_vocales("hormigas") print(h)
内容的提问来源于stack exchange,提问作者Andres Torres
相关产品推荐
相关产品推荐

