簡體   English   中英

如何在 Python 中舍入為整數?

[英]How do I round to a whole number in Python?

我有一個任務,我遇到了一些麻煩。

這是我的問題:

編寫一個程序,使用兩個單獨的輸入(“輸入男性人數:”、“輸入女性人數:”)詢問用戶在 class 中注冊的男性人數和女性人數。
程序應按以下格式顯示男性和女性的百分比(四舍五入到最接近的整數):

Percent males: 35%
Percent females: 65%

使用字符串格式。

我的問題是我無法計算男性和女性的百分比。 例如,我用來對代碼輸入進行評分的程序有 150 名男性和 250 名女性。 我的計划獲得了 37% 的男性比例,而不是 38%。

這是我現在擁有的代碼

number_of_males = int(input("Enter number of males:"))
number_of_females = int(input("Enter number of females:"))
    
total = (number_of_males + number_of_females)
    
percentage_male = ((number_of_males/total)*100)
percentage_female = ((number_of_females/total)*100)
    
print("Percent males: " + str( int(percentage_male )) + '%')   
print("Percent females: " + str( int(percentage_female )) + '%')

到目前為止,我已經嘗試過了,但它給了我一個錯誤。 我可能打錯了圓形 function。

line 9, in <module>
    print("Percent males: " + str( (round(int(percentage_male ))) + '%'))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
number_of_males = int(input("Enter number of males:"))
number_of_females = int(input("Enter number of females:"))
    
total = (number_of_males + number_of_females)
    
percentage_male = ((number_of_males/total)*100)
percentage_female = ((number_of_females/total)*100)
    
print("Percent males: " + str( (round(int(percentage_male ))) + '%')) 
print("Percent females: " + str( int(percentage_female )) + '%')

是的,正如您已經猜到的那樣,您正在嘗試對已經是 integer 的數字進行四舍五入。

例如: int(10.6)返回數字“10.6”的截斷 integer 部分。 在這種情況下返回10

因此,如果我們使用round(int(10.6))會發生什么,我們只是試圖四舍五入10 這類似於round(10)

相反,您想做的是round(10.6)返回 11。

此外,line9 中使用了一些額外的括號,導致類型錯誤。

在你的場景中,

number_of_males = int(input("Enter number of males:"))
number_of_females = int(input("Enter number of females:"))

total = (number_of_males + number_of_females)

percentage_male = ((number_of_males/total)*100)
percentage_female = ((number_of_females/total)*100)

print("Percent males: " + str(round(percentage_male)) + '%')

print("Percent females: " + str(round(percentage_female)) + '%')

將完成這項工作。

此外,您可以通過刪除不必要的括號來重新排列代碼。

number_of_males = int(input("Enter number of males:")) 
number_of_females = int(input("Enter number of females:"))

total = number_of_males + number_of_females

percentage_male = number_of_males/total*100 
percentage_female = number_of_females/total*100

print("Percent males: " + str(round(percentage_male)) + '%')
print("Percent females: " + str(round(percentage_female)) + '%')

您不能添加數字和字符串'%' 你可以用

print("Percent males: " + str( (round(int(percentage_male )))) + '%')

但是您也不需要int function。 舍入 integer 是沒有意義的。 int刪除小數部分(向零舍入)。 你應該跳過它:

print("Percent males: " + str(round(percentage_male)) + '%')

並得到相同的結果。

number_of_males = int(input("Enter number of males:"))
number_of_females = int(input("Enter number of females:"))

total = number_of_males + number_of_females

percentage_male = number_of_males / total * 100
percentage_female = number_of_females / total * 100

print("Percent males: {}%".format(round(percentage_male)))

print("Percent females: {}%".format(round(percentage_female)))

Python 具有內置格式,包括格式作為演示文稿,例如:

>>> p = 0.45
>>> format(p, '.0%')
'45%'
>>> f"{p:.0%}"
'45%'

所以在你的情況下,它將是:

percentage_male = number_of_males / total
percentage_female = number_of_females / total

print(f"Percent males: {percentage_male:.0%}")

print(f"Percent females: {percentage_female:.0%}")

暫無
暫無

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

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