media=float(input('Digite a média do usuario: '))if(media<7.0):
print('Recomendação de 0%')elif(media>=7.0ormedia<=8.0):
print('Recomendação de 5%')elif(media>=8.0ormedia<=9.0):
print('Recomendação de 10%')elif(media>=9.0):
print('Recomendação de 30%')else:
print('Erro. Média incorreta.')
Este é meu código, se eu digitar, por exemplo, 8.5 ele entra na condição de recomendação de 5%
O que eu faço?
O principal problema é que você está usando or ao invés de and
Ainda, há um bug sutil que seus intervalos se sobrepoem: um valor de 8.0 poderia entrar no 5% ou no 10%, dependendo do que vier antes.
Um jeito mais idiomático em python de escrever esses ifs seria
elif7.0<=media<8.0:
Ou se você tem certeza que a ordem dos ifs sempre será a mesma, você pode só testar pelo limite super, já que o if anterior já cobriu o inferior: < 7, < 8, <9, else
A
Ariadne35121 like
AND
Operador lógico no qual a resposta da operação é verdade (1) se ambas as variáveis de entrada forem verdade.
OR
Operador lógico no qual a resposta da operação é verdade (1) se pelo menos uma das variáveis de entrada for verdade.
Seria mais fácil usar o AND
media=float(input('Digite a média do usuario: '))if(media<7.0):
print(‘Recomendaçãode0%’)elif(media>=7.0andmedia<=8.0):
print(‘Recomendaçãode5%’)elif(media>=8.0andmedia<=9.0):
print(‘Recomendaçãode10%’)elif(media>9.0):
print(‘Recomendaçãode30%’)else: