it-swarm-pt.tech

Python max e min

Eu sou bem novo no Python, e o que me deixa com raiva do meu problema é que eu sinto que é muito simples. Eu continuo recebendo um erro na linha 8. Eu só quero que este programa pegue os números que o usuário digitou e imprima o maior número. e menor, e eu quero cancelar o loop se eles entrarem negativos 1.

'int' object is not iterable é o erro.

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

O problema é que number é uma int. max e min ambos requerem listas (ou outras coisas iteráveis) - então, em vez disso, você deve adicionar number a uma lista como:

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)

Apenas como uma nota depois de ler a resposta do dr jimbob - minha resposta assume que você não quer considerar -1 ao encontrar high e low.

17
Nate

Isso é porque cada vez que você passa um argumento inteiro para max e min e python não sabe o que fazer com ele.

Éter passa pelo menos dois argumentos:

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

ou um iterável:

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

Aqui está o doc

8
soulcheck

Você precisa alterar o número para uma lista de números. Por exemplo.,

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

Como mencionado por outra resposta , min e max também pode levar vários argumentos. Para omitir a lista, você pode

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