如何构造嵌套循环语句以返回到某个状态

2024-09-29 01:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我在创建这个循环时遇到了麻烦,在我声明了“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()

Tags: 名称forinputifdefanotherfloatscore
2条回答

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

比如:

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)")

"...it will come up with the error "referenced before assignment"[...]

这是因为,您可能会将条件指定为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")

相关问题 更多 >