[英]How do I use a for loop here?
除了创建更多成绩变量之外,有没有办法可以使用 for 循环来创建这些变量,然后将它们输入到 def_calc 函数中? 我不允许在这个作业中使用列表,我很好奇是否有办法让我的代码看起来更漂亮、更快。
另外,对不起,如果代码不好,我对 python 真的很陌生。
def main():
grade1 = int(input('Enter a grade: '))
grade2 = int(input('Enter another grade: '))
grade3 = int(input('Enter even another grade: '))
grade4 = int(input('Enter another another grade: '))
grade5 = int(input('Enter one last grade: '))
calc_average(grade1 , grade2 , grade3 , grade4 , grade5)
print('your average test grade is' , average)
def calc_average(grade1,grade2,grade3,grade4,grade5):
global average
average = (grade1 + grade2 + grade3 + grade4 + grade5) / 5
return average
main()
如果你不需要使用calc_average
function,你可以尝试这样的事情:
def main():
total = 0
for i in range(5):
total += int(input('Enter a grade: '))
print('your average test grade is' , total / 5)
当然,您可以使用for
循环来执行此操作。 您可以编写一个get_grades
function ,其中包含用户应输入多少等级的参数:
def get_grades(num_grades):
pass
然后使用for
循环num_grades
次数来将新成绩添加到运行总计中(如果您不打算将成绩用于检查平均值以外的任何事情)。 这是一些伪代码:
grades_total
grades_total
num_grades
次grades_total
除以num_grades
如果您确实需要将成绩用于任何其他计算,那么如果不使用list
或tuple
之类的集合,这是不可能的。
您还可以使用while loop
来添加更多成绩:
import numpy as np
def main():
n = 0
grade_list = []
while True:
n = n + 1
grade_str = input(f'Enter grade {n}, or Enter `c` to stop: ')
if grade_str == 'c':
if len(grade_list) > 0:
average = np.mean(grade_list)
print('your average test grade is' , average)
break
grade_list.append(int(grade_str))
main()
您可以使用 for 循环来避免手动一遍又一遍地重复某些内容。 因此,在您的代码中,您可以将其设置为 for 循环,而不是输入 5 次:
def grade_average(n_grade = 5):
sum_of_grades = 0
for i in range(n_grade):
grade = int(input('Enter a grade({} out of {}):'.format(i+1,n_grade)))
sum_of_grades += grade
average_grade = sum_of_grades / n_grade
print('your average test grade is' , average_grade)
grade_average()
您还可以通过不显示每个步骤并使其更短来摆脱一些行。 例如,查看@epsilonmajorquezero 提供的响应。
这是一种添加一些输入验证的方法:
def get_number_input(prompt):
num = -1
while True:
try:
num = float(input(prompt))
break
except:
print('Error: Enter a number, try again...')
return num
def main():
number_of_grades = 5
total = 0
for g in range(1, number_of_grades + 1):
total += get_number_input(f'Please enter grade {g} of {number_of_grades}: ')
average_grade = total / number_of_grades
print(f'The average of the {number_of_grades} grades you entered is: {average_grade:.2f}')
if __name__ == '__main__':
main()
示例用法:
Please enter grade 1 of 5: 45
Please enter grade 2 of 5: a
Error: Enter a number, try again...
Please enter grade 2 of 5: 98
Please enter grade 3 of 5: 58
Please enter grade 4 of 5: 78.40
Please enter grade 5 of 5: 96.89
The average of the 5 grades you entered is: 75.26
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.