Je viens de commencer à apprendre Python. J'ai une certaine expérience avec C ++ de l'école. Le problème consiste à écrire du code qui imprime le plus grand nombre impair de l'entrée de l'utilisateur et d'imprimer des commentaires pertinents s'il n'y a pas de nombre impair. Quel est le problème avec ce code et existe-t-il de meilleurs moyens de résoudre ce problème?
3 Réponses :
Peut-être que la logique devient plus facile si vous en faites une petite liste et triez-la:
x = input ("Enter first number: ")
y = input ("Enter second number: ")
z = input ("Enter third number: ")
odds = sorted([ i for i in [x,y,z] if int(i)%2 ],reverse=True)
if not odds:
print("No odd number")
elif odds.count(odds[0]) == len(odds):
print("All odd numbers are equal")
else:
print(f"{odds[0]} is the largest odd number")
2 choses: 1. Convertissez des données. 2. Votre code n'est pas formaté correctement, par l'apparence de celui-ci.
pour 1: p> pour 2- Votre code ne retournera jamais le plus grand nombre impair si le plus grand nombre impair est plus petit que le plus grand nombre même. Par exemple [20, 9, 5]. Pour résoudre ce problème: P> #Create a list to work with
num_li = [x,y,z]
#Get all the odd numbers
num_li = [i for i in num_li if i%2!=0]
#If no odd numbers
if len(num_li) == 0:
print('No odds')
#Print the largest odd number
else:
num_li.sort(reverse = True)
print('The largest odd number is: ' + str(num_li[0]))
Il y a deux problèmes avec la version actuelle du code:
1) TypeError - Vous recevez des chaînes comme des entrées et les traiter comme des entiers p>
2) Erreur logique - Vos conditions ne couvrent pas Tous les cas. P>
J'ai réécrit le code. Les chaînes sont converties en int et tous les cas sont couverts. P>
Exemple de travail: P>
x = int(input ("Enter first number: "))
y = int(input ("Enter second number: "))
z = int(input ("Enter third number: "))
numbers = [x, y, z]
odd_numbers = []
for number in numbers: // loop through the numbers and create an odd number list
if number % 2 != 0:
odd_numbers.append(number)
if odd_numbers: //print out the largest number in the list using max()
print(max(odd_numbers))
else:
print("No odd numbers")// if the list is empty this will be printed
Dupliqué possible de Comment puis-je lire les entrées en tant que chiffres?
Il est possible que le plus grand nombre impair ne soit pas le plus grand nombre de X, Y et Z. Par exemple, considérons le cas où x = 8, y = 5 et z = 3.
Le groupe moyen de
si code> Les instructions ne peuvent jamais être vraies, car elles commencent tous avecsi x% 2! = 0 code>, mais vous êtes déjà à l'intérieur d'unsi x% 2 == 0 code> contexte.