如何在f字符串表达式中将数字格式设置为两位小数?

时间:2018-09-24 14:35:52

标签: python

我正在尝试制作一个程序,该程序向用户询问其成绩并以2个小数位显示其成绩。 -前如果他们的作业获得10/15的分数,则会显示作业1:66.66%

在我的代码中,似乎无法将计算出的数字转换为两位小数。

    print("Please enter your grade on the following pieces of work:")
a1 = int(input("Assignment 1 (/15):"))
a2 = int(input("Assignment 2 (/20):"))
a3 = int(input("Assignment 3 (/25):"))
a4 = int(input("Assignment 4 (/20):"))
a5 = int(input("Assignment 5 (/30):"))
t = int(input("Tutorials (/10):"))
m = int(input("Midterm (/30):"))
fe = int(input("Final Exam (/50):"))


print("Here are your grades: ")

print(f"Assignment 1:{a1/15*100}%")
print(f"Assignment 2:{a2/20*100}%")
print(f"Assignment 3:{a3/25*100}%")
print(f"Assignment 4:{a4/20*100}%")
print(f"Assignment 5:{a5/30*100}%")
print(f"Tutorials:   {t/10*100}%")
print(f"Midterm:     {m/30*100}%")
print(f"Final Exam:  {fe/50*100}%")

这些答案给出了整个十进制答案,例如,不是显示66.66%,而是显示66.666667%。我如何将其变成66.66%? 预先感谢。

编辑:另外,我将如何获得这些答案并创建平均百分比?

3 个答案:

答案 0 :(得分:2)

python支持百分比作为格式选项:

a3 = 7
print(f"Assignment 3:  {a3/25:.2%}")  # 'Assignment 3:  28.00%'

请注意,使用%作为格式说明符时,不需要除以100。

Format Specification Mini-Language

搜索表单percent。有关格式化的更多信息,请访问https://pyformat.info/

答案 1 :(得分:0)

您可以使用以下语法表示您希望使用两位小数点格式。 -您可以阅读更多here

{your_calculation:.2%}

在这种情况下,.2表示您希望使用两位小数点格式。如果要增加或减少小数点,可以进行相应的调整。

答案 2 :(得分:0)

您可能应该将第二个问题作为一个单独的问题提出,但是一种实现方式是创建一个熊猫数据框。

 import pandas as pd
 last_assignment_number = 5
 assignments = ['Assignment {}'.format(i) for i in range(1,last_assignment_number+1)]+
                 ['Tutorials','Midterm','Final Exam']
 scores = pd.DataFrame(index=assignments+['Total'],
                 columns=['score','maximum','percentage'])
 maximum_scores = [15,20,25,20,30,10,30,50]
 scores['maximum'] = maximum_scores+[sum(maximum_scores)]
 for assignment in assignments:
      scores.loc[assignment,'score']=int(input("{} (/{}):").format(assignment,scores.loc[assignment,'maximum'])
 scores.loc['Total','score']=scores.loc[assignments,'score'].sum()
 scores['percentage']=(scores['score']/scores['maximum']).apply(lambda x:f"{x:.2%}")