2011-12-15 68 views
8

Tôi khá mới với Python, và điều khiến tôi phát điên vì vấn đề của mình là tôi cảm thấy nó thực sự đơn giản. Tôi vẫn gặp lỗi ở dòng 8. Tôi chỉ muốn chương trình này lấy số người dùng đã nhập và in lớn nhất và nhỏ nhất và tôi muốn hủy vòng lặp nếu họ nhập tiêu cực 1.Python max và min

'int' object is not iterable là lỗi.

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.") 

Trả lời

8

Đó là nguyên nhân mỗi khi bạn chuyển một đối số nguyên cho max và min và python không biết phải làm gì với nó.

Ether vượt qua ít nhất hai đối số:

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

hoặc một iterable:

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

Đây là doc

+0

Tôi làm cách nào để chuyển nhiều số tới tối đa và tối thiểu? Cảm ơn lời giải thích là tại sao nó không hoạt động. –

+0

@SpeedyBast chỉnh sửa – soulcheck

15

Vấn đề là number là một int. maxmin cả hai yêu cầu danh sách (hoặc những thứ iterable khác) - vì vậy thay vào đó, bạn phải thêm number vào một danh sách như vậy:

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) 

Cũng giống như một lưu ý sau khi đọc câu trả lời dr jimbob của - câu trả lời của tôi giả định rằng bạn không muốn tính đến -1 khi tìm kiếm highlow.

+8

'int (-1)' là vô ích. '-1' đã là' int' – juliomalegria

+7

Hoàn toàn đúng, và nó phải được sửa. Tuy nhiên, đó là câu hỏi trong câu hỏi, và tôi tin tưởng vào việc cung cấp mã trả lời sai lệch ít nhất có thể từ mã câu hỏi. – Nate

+0

Cảm ơn bạn đã giải thích. –

1

Bạn cần thay đổi số thành danh sách số. Ví dụ:

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.") 
0

Như đã đề cập bởi another answer, minmax cũng có thể mất nhiều tranh cãi. Để bỏ qua danh sách, bạn có thể

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.") 
Các vấn đề liên quan