函数中的数字相加不正确



例如,如果我输入数字'5'、'5','3'和'4',我得到'5534'。我想考"17",有人能给我解释一下怎么了吗?

def grade_lab(lab_number, student_id):
student = student_id
lab_count = lab_number
step1 = '1'
gradeforstep1 = problem_solving(step1)
step2 = '2'
gradeforstep2 = problem_solving(step2)
step3 = '3'
gradeforstep3 = problem_solving(step3)
step4 = '4'
gradeforstep4 = problem_solving(step4)
scoregrade = gradeforstep1 + gradeforstep2 + gradeforstep3 + gradeforstep4
points_earned = f"Student: {student} earned {scoregrade} points on lab {lab_count}."
return points_earned
def problem_solving(step_graded):
stepgrade=input(f'Please enter a score 0 - 5 earned for understanding step {step_graded}:')
finalstepgrade = stepgrade
return finalstepgrade
def main():
labgrade = grade_lab(3, 12345)
print (labgrade)
step = input()
gradeforstep = problem_solving(step)
print(gradeforstep)
main()

在将数字相加之前,需要将其转换为整数。例如:

scoregrade = int(gradeforstep1) + int(gradeforstep2) + int(gradeforstep3) + int(gradeforstep4)

编辑

或者,您可以使用int():包装输入

stepgrade=int(input(f'Please enter a score 0 - 5 earned for understanding step {step_graded}:'))

完整代码

def grade_lab(lab_number, student_id):
student = student_id
lab_count = lab_number
step1 = '1'
gradeforstep1 = problem_solving(step1)
step2 = '2'
gradeforstep2 = problem_solving(step2)
step3 = '3'
gradeforstep3 = problem_solving(step3)
step4 = '4'
gradeforstep4 = problem_solving(step4)
scoregrade = gradeforstep1 + gradeforstep2 + gradeforstep3 + gradeforstep4
points_earned = f"Student: {student} earned {scoregrade} points on lab {lab_count}."
return points_earned
def problem_solving(step_graded):
stepgrade=int(input(f'Please enter a score 0 - 5 earned for understanding step {step_graded}:'))
finalstepgrade = stepgrade
return finalstepgrade
def main():
labgrade = grade_lab(3, 12345)
print (labgrade)
step = input()
gradeforstep = problem_solving(step)
print(gradeforstep)
main()

您的问题是对变量类型和重铸的误解。

也许可以仔细阅读一些免费资源,比如这些课堂笔记,并确保您理解这些概念:Python101:Input and Casting

Input返回一个字符串,将其转换为整数进行数字运算。由于你有一个混乱的代码,我在我的解决方案中清理了它:

def grade_lab(lab_number, student_id):
scoregrade = 0
for i in range(1,5):
scoregrade += int(input(f'Please enter a score 0 - 5 earned for understanding step {i}:'))
return f"Student: {student_id} earned {scoregrade} points on lab {lab_number}."
if __name__ == "__main__":
print(grade_lab(3,12345))

最新更新