2012-09-06 90 views
6

Tôi phải yêu cầu người dùng đặt một số số và sau đó in kích thước, tổng, trung bình, tối thiểu và tối đa. Tôi có thể nhận được 3 điều đầu tiên nhưng tôi bị mắc kẹt ở mức tối thiểu và tối đa. Tôi có vấn đề là tôi không thể sử dụng sort() vì tôi cần phải thực hiện danh sách một số nguyên một, nhưng bạn không thể sử dụng một danh sách số nguyên cho split()Tìm số tối thiểu và tối đa trong trăn

Dưới đây là mã của tôi:

number = raw_input('Enter number:') 
    list_of_numbers = number.split() 
    tally = 0 
    sum = 0 
     while number!= '': 
     tally = tally + 1 
     sum = sum + int(number) 
     average = float(sum)/float(tally) 
     number = raw_input('Enter number:') 
    print "Size:", tally 
    print "Sum:", sum 
    print "Average:", average 

Bất kỳ gợi ý ? Cảm ơn

Trả lời

3

Tôi nghĩ bạn có thể sử dụng min() và max() để tìm các giá trị đó.

+0

tôi không nghĩ rằng tồn tại – user1008073

+4

@ user1008073 http://docs.python.org/library/functions.html#min – squiguy

16

Bạn có được phép sử dụng các hàm dựng sẵn của Python không? Nếu có, nó sẽ dễ dàng hơn:

number = raw_input('Enter number:') 
list_of_numbers = number.split() 

numbersInt = map(int, list_of_numbers) # convert string list to integer list 

print "Size:", len(numbersInt) 
print "Min:",  min(numbersInt) 
print "Max:",  max(numbersInt) 
print "Sum:",  sum(numbersInt) 
print "Average:", float(sum(numbersInt))/len(numbersInt) if len(numbersInt) > 0 else float('nan') 

nơi numbersInt = map(int, list_of_numbers) chuyển đổi từng chuỗi số của danh sách thành số nguyên. Mỗi chức năng có ý nghĩa như sau:

  • len tính độ dài của một danh sách
  • min tính tối thiểu
  • max tính tối đa
  • sum tính tổng của một danh sách

Không có hàm trung bình trong thư viện chuẩn Python. Nhưng bạn có thể sử dụng numpy.mean() để thay thế.

+0

Đây là cách pythonic nhất và một hiệu quả nhất. – jurka

1

Bạn có hai lựa chọn:

  • Bạn có thể so sánh số lượng hiện tại để các cực trị trước và cập nhật tối thiểu và tối đa của bạn cho phù hợp;

    import sys 
    tally = 0 
    sum = 0 
    nmax = -sys.maxint 
    nmin = +sys.maxint 
    number = raw_input('Enter number:') 
    while number!= '': 
        number = int(number) 
        if number > nmax: 
         nmax = number 
        elif number < nmin: 
         nmin = number 
        tally = tally + 1 
        sum += number 
        average = float(sum)/float(tally) 
        number = raw_input('Enter number:') 
    

    Chúng tôi sử dụng các số nguyên lớn nhất trên hệ thống của bạn (sys.maxint) để khởi tạo của chúng tôi nminnmax

  • Bạn có thể lưu trữ mỗi số trong một danh sách, sau đó thực hiện tất cả các hoạt động cùng một lúc:

    number = raw_input('Enter number:') 
    numbers = [] 
    while number!= '': 
        numbers.append(int(number)) 
        number = raw_input('Enter number:') 
    numbers.sort() 
    nmin = numbers[0] 
    nmax = numbers[-1] 
    tally = len(numbers) 
    nsum = sum(numbers) 
    avg = nsum/float(tally) 
    
1

Điều này có thể ít phức tạp nhất nếu tôi không sai.

len_min_max_sum=reduce(lambda x,y : (x[0]+1,y,x[2],x[3]+y) if x[0]>y else (x[0]+1,x[1],y,x[3]+y) if x[2]<y else (x[0]+1,x[1],x[2],x[3]+y) ,arr,(0,arr[0],arr[0],0)) 

len_min_max_sum_avg=(len_min_max_sum[0],len_min_max_sum[1],len_min_max_sum[2],len_min_max_sum[3],float(len_min_max_sum[3])/len_min_max_sum[0]) 
1
tally = 0 
sum = 0 
while True: 
number = input('Enter number') 
list_of_numbers = number.split() 
if number == '': 
continue 
else: 
tally = tally + 1 
sum = sum + int(number) 
average = float(sum)/float(tally) 
print('Size:', tally) 
print('Sum:', sum) 
print('Average:', average) 
+1

Vui lòng chỉnh sửa thụt lề của bạn. Nó rất quan trọng đối với Python. – YakovL

Các vấn đề liên quan