簡體   English   中英

Python:編寫一個程序,對正負數進行計數,並計算數字的平均值

[英]Python: Write a program that counts positive and negative numbers and computers the average of numbers

我看到了類似的帖子,但其中包含函數,而我的卻沒有。

目標 :編寫一個程序,讀取不確定數量的整數,確定已讀取多少個正值和負值,並計算輸入值的總和和平均值(不計0),而該程序將停止為0。

我遇到的問題 :使用以下測試值1、2,-1、3時

我得到以下內容:

正數:1
底片數量:2
使用的總數:3
平均值是1.33這是4/3

應該是:正數:1
底片數量:3
使用的總數:4
平均值是1.25,即5/4

我的嘗試如下:

positive_number = 0                    
negative_number = 0                      
average = 0                        
count = 0                          
new_number = 0                     


user_input = eval(input("Enter enter as many integers as you want, 0     will halt: "))
if user_input == 0:
    print("You didn't enter any number, code ended")
else:
  while user_input != 0:
    user_input = eval(input("Enter enter as many intergers as you want, 0 will halt: "))

    if user_input == 0:
        print("You didn't enter any number, code ended")

    elif user_input != 0 and user_input > 0:
        new_number += user_input
        positive_number += 1
        count += 1

    else:
        user_input != 0 and user_input < 0
        new_number += user_input
        negative_number += 1
        count += 1


    average = (new_number / count)
    print("\nThe number of positives:",  positive_number)
    print("The number of negatives:", negative_number)
    print("The total amount of numbers used:", count)
    print("The average is", format(average,".2f"), "which is", str(new_number), "/", str(count))

是什么導致這種錯誤? 我只能認為這是次要解決方案?

首先,當您測試user_input != 0作為循環條件時,第一個if語句是多余的。 其次,出問題的原因是因為在您的第一個輸入上,您立即覆蓋了user_input的值,因此我將重新提示代碼放在循環的末尾。 最后,我清理了if elif else語句,因為它用更少的字符完全相同。 一旦退出循環,結束行的print語句也將執行-sinc eby定義意味着user_input == 0

positive_number = 0                    
negative_number = 0                      
average = 0                        
count = 0                          
new_number = 0                     

user_input = eval(input("Enter enter as many integers as you want, 0     will halt: "))
while user_input != 0:
    if user_input > 0:
        new_number += user_input
        positive_number += 1
        count += 1

    else:
        new_number += user_input
        negative_number += 1
        count += 1


    average = (new_number / count)
    print("\nThe number of positives:",  positive_number)
    print("The number of negatives:", negative_number)
    print("The total amount of numbers used:", count)
    print("The average is", format(average,".2f"), "which is", str(new_number), "/", str(count))
    user_input = eval(input("Enter enter as many intergers as you want, 0 will halt: "))

print("You didn't enter any number, code ended")

我已經解決了代碼中的問題,並進行了重構以捕獲錯誤情況並消除了不必要的復雜性:

positive_number = 0
negative_number = 0
average = 0
count = 0
total = 0

user_input = None

while user_input != 0:
    try:
        user_input = int(input("Enter enter as many intergers as you want, 0 will halt: "))
    except ValueError:
        user_input=0

    if user_input > 0:
      total += user_input
      positive_number += 1
      count += 1
    elif user_input<0:
      total += user_input
      negative_number += 1
      count += 1

if count==0:
    print("You didn't enter any number, code ended")
else:
    average = total / count
    print("\nThe number of positives:",  positive_number)
    print("The number of negatives:", negative_number)
    print("The total amount of numbers used:", count)
    print("The average is", format(average,".2f"), "which is", str(total), "/", str(count))

就像評論中所說的一樣,您的第一個輸入將被忽略。 這是一種可行的替代方法。 我排除了一些多余的檢查語句。

positive_number = 0                    
negative_number = 0                      
average = 0                        
count = 0                          
new_number = 0
user_input = 1                  

while user_input != 0:
    user_input = eval(input("Enter enter as many integers as you want, 0 will halt: "))

    if user_input == 0:
        print("You didn't enter any number, code ended")

    elif user_input > 0:
        new_number += user_input
        positive_number += 1
        count += 1

    else:
        new_number += user_input
        negative_number += 1
        count += 1

average = (new_number / count)
print("\nThe number of positives:",  positive_number)
print("The number of negatives:", negative_number)
print("The total amount of numbers used:", count)
print("The average is", format(average,".2f"), "which is", str(new_number), "/", str(count))

您的代碼有很多問題。 首先,代碼不會評估用戶提示的第一個數字。 一旦進入while循環,它就會被覆蓋。 有多種解決方法,但是最好的方法是:

續=真

當cont為True時:

user_input = int(input(“提示用戶”))

如果user_input == 0:

續=假

您也可以做一個break語句,沒關系。

因此,這可以解決為什么不讀取第一個數字,以及代碼為何認為只有3個輸入(以及計數已關閉)的問題。 現在,這兩個底片呢? 我不知道你為什么得到那個。 輸入您列出的數字時,我得到一個負數和兩個正數。 再試一次,看看現在是否可以使用,我懷疑您一定輸錯了字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM