您好,我在制作此循环时遇到问题,而不是在声明"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)")