[英]Python: (Count positive and negative numbers and compute the average of numbers)
[英]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.