web-dev-qa-db-fra.com

Python max et min

Je suis assez nouveau dans Python, et ce qui me rend fou de mon problème, c’est que j’ai l’impression que c’est très simple. Je continue à avoir une erreur à la ligne 8. Je veux juste que ce programme prenne les chiffres saisis par l’utilisateur et imprime le plus grand et le plus petit, et je veux qu'il annule la boucle s'ils entrent négatif 1.

'int' object is not iterable est l'erreur.

print "Welcome to The Number Input Program."

number = int(raw_input("Please enter a number: "))

while (number != int(-1)):
    number = int(raw_input("Please enter a number: "))

high = max(number)
low = min(number)

print "The highest number entered was ", high, ".\n"
print "The lowest number entered was ", low, ".\n"

raw_input("\n\nPress the enter key to exit.")
8
Speedy Bast

Le problème est que number est une int. max et min nécessitent tous deux des listes (ou autres éléments itérables) - vous devez donc ajouter number à une liste comme celle-ci:

number = int(raw_input("Please enter a number: "))
num_list = []

while (number != int(-1)):
    num_list.append(number)
    number = int(raw_input("Please enter a number: "))

high = max(num_list)
low = min(num_list)

Juste comme une note après avoir lu la réponse de dr jimbob - ma réponse suppose que vous ne voulez pas vouloir rendre compte de -1 lorsque vous trouvez high et low.

17
Nate

En effet, chaque fois que vous passez un argument entier à max et min et que python ne sait pas quoi en faire.

Ether passe au moins deux arguments:

least_number = min(number1, number2,...,numbern)

ou un iterable:

least_number = min([number1, number2, ...,numbern])

Voici le doc

8
soulcheck

Vous devez changer le numéro en une liste de numéros. Par exemple.,

print "Welcome to The Number Input Program."

numbers = []
number = int(raw_input("Please enter a number: "))

while (number != -1):
    numbers.append(number)
    number = int(raw_input("Please enter a number: "))

high = max(numbers)
low = min(numbers)

print "The highest number entered was ", high, ".\n"
print "The lowest number entered was ", low, ".\n"

raw_input("\n\nPress the enter key to exit.")
1
dr jimbob

Comme mentionné par une autre réponse , min et max peut également prendre plusieurs arguments. Pour omettre la liste, vous pouvez

print "Welcome to The Number Input Program."

number = int(raw_input("Please enter a number: "))
high = low = number


while (number != int(-1)):
    number = int(raw_input("Please enter a number: "))
    high = max(high, number)
    low = min(low, number)

print "The highest number entered was ", high, ".\n"
print "The lowest number entered was ", low, ".\n"

raw_input("\n\nPress the enter key to exit.")
0
serv-inc