如何创建嵌套循环语句以返回到某个语句



您好,我在制作此循环时遇到问题,而不是在声明"nameone"变量后它返回到行,我希望它返回到输入"*"或名称我尝试将循环放在输入之前,但它会出现错误"赋值前引用",我明白为什么,但我找不到一种方法来制作它可以让您输入新名称

def GetPosInt():
nameone = str(input("Please enter a student name or '*' to finish: "))
while nameone != "*":
scoreone = int(input("Please enter a score for " + nameone +": "))
if scoreone < 0:
print("positive integers please!")
break
else:
scoretwo = float(input("Please enter another score for "+nameone+": "))
scorethree = float(input("Please enter another score for "+nameone+": "))
testscores = scoreone + scoretwo + scorethree    
avg = testscores / 3    
print("The average score for",nameone,"is ",avg)
if nameone == "*":
print("no bueno")

主要

def main():
GetPosInt()

">...它将出现错误"分配前引用"[...]

这是因为,您可能指定了要while nameone != '*':的条件,但在进入循环之前不会声明nameone。您可以轻松解决此问题。试试这个:

nameone = None
while nameone != "*":
nameone = str(input("Please enter a student name or '*' to finish: "))
... # everything else remains the same
if nameone == "*":
print("no bueno")

如果我对你的问题的理解是正确的,那么你需要一个外循环。

像这样:

cont = 'y'
while cont=='y':
# Do your thing
cont = input("continue?(y/n)")

代码示例为:

cont = 'y'
while cont=='y':
nameone = str(input("Please enter a student name or '*' to finish: "))
while nameone != "*":
scoreone = int(input("Please enter a score for " + nameone +": "))
if scoreone < 0:
print("positive integers please!")
break
else:
scoretwo = float(input("Please enter another score for "+nameone+": "))
scorethree = float(input("Please enter another score for "+nameone+": "))
testscores = scoreone + scoretwo + scorethree    
avg = testscores / 3    
print("The average score for",nameone,"is ",avg)
if nameone == "*":
print("no bueno") # I have no idea what that means.
cont = input("continue?(y/n)")

最新更新