for i in range (0, 3):
print() # When iterates creates a space from last section
raw_mark = int(input("What was student: " + str(student_id[i]) + "'s raw mark (0 - 100)?: "))
days_late = int(input("How many days late was that student (0 - 5)?: "))
penalty = (days_late * 5)
final_mark = (raw_mark - penalty)
# Selection for validation
if 0 <= raw_mark <= 100 and 0 <= days_late <= 5 and final_mark >= 40:
print("Student ID:", str(student_id[i]))
print() # Spacing for user readability
print("Raw mark was:", str(raw_mark),"but due to the assignment being handed in",
str(days_late),"days late, there is a penalty of:", str(penalty),"marks.")
print()
print("This means that the result is now:", final_mark,"(this was not a capped mark)")
elif 0 <= raw_mark <= 100 and 0 <= days_late <= 5 and final_mark < 40: # Final mark was below 40 so mark must be capped
print("Student ID:", str(student_id[i]))
print()
print("Raw mark was:", str(raw_mark),"but due to the assignment being handed in",
str(days_late),"days late, there is a penalty of:", str(penalty),"marks.")
print()
print("Therefore, as your final mark has dipped below 40, we have capped your grade at 40 marks.")
else:
print("Error, please try again with applicable values")
在else中,我希望循环返回,但没有对下一个值进行迭代,因此它可以是无限的,直到输入所有3个有效输入。。。不能使用while循环,也不能将if-elif-else放在循环之外。我也不能使用函数:(
如果你真的不能使用while循环
这里还有一些额外的问题,例如,如果您不断获得错误的输入值,您需要担心达到最大递归限制的可能性,但是
get_valid_input
理想情况下应该仅在您确定有有效的内容时返回试试这样的。您可以跟踪有效输入的数量,并且只在达到目标数量后停止循环(the
while
)您可以将输入语句放入包含try块的while循环中
相关问题 更多 >
编程相关推荐