例如,如果我输入数字'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))