Python:如何正确循环?

2024-06-16 09:35:01 发布

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

我试图让嵌套循环正常工作,但我有很多麻烦。 我有一个列表的工作代码,但我想添加一个else语句,声明一个选项无效,然后再试一次,然后退出并返回到第一个循环,但我似乎无法让它工作,如果它不重复无效的打印代码列表中的每一项。 有人能告诉我我做错了什么吗? 工作原理:

myNames = ["Jim", "Sarah", "Jason", "Lynne", "Ginny", "Joe", "Susan"]
myScores = [88, 92, 95, 84, 85, 92, 89]

print ("Student names: Jim, Sarah, Jason, Lynne, Ginny, Joe, Susan")
name = input("Please enter a students name to find their score or q to quit: ")

while name != 'q':
        for x in range(7):
            if myNames[x] == name:
                print(myNames[x])
                print(myScores[x])
        name = input("Please enter a students name to find their score or q to quit: ")

什么不起作用:

myNames = ["Jim", "Sarah", "Jason", "Lynne", "Ginny", "Joe", "Susan"]
myScores = [88, 92, 95, 84, 85, 92, 89]

print ("Student names: Jim, Sarah, Jason, Lynne, Ginny, Joe, Susan")
name = input("Please enter a students name to find their score or q to quit: ")

while name != 'q':
        for x in range(7):
            if myNames[x] == name:
                print(myNames[x])
                print(myScores[x])
            else:
                print("Invalid name please try again")
        name = input("Please enter a students name to find their score or q to quit: ")

Tags: tonameinputprintenterpleasejoejason
1条回答
网友
1楼 · 发布于 2024-06-16 09:35:01

您的程序将根据每个可接受的名称检查输入的名称,并为每个不匹配的名称打印一条消息。相反,只有在比较失败时才需要打印消息。有一种方法:

myNames = ["Jim", "Sarah", "Jason", "Lynne", "Ginny", "Joe", "Susan"]
myScores = [88, 92, 95, 84, 85, 92, 89]

print ("Student names: Jim, Sarah, Jason, Lynne, Ginny, Joe, Susan")
name = input("Please enter a students name to find their score or q to quit: ")

while name != 'q':
        for x in range(7):
            if myNames[x] == name:
                print(myNames[x])
                print(myScores[x])
                break
        else:
            print("Invalid name please try again")
        name = input("Please enter a students name to find their score or q to quit: ")

break语句在执行时立即退出循环。在Python中for:else:construct,else:分支仅当循环在其元素中一直运行而从未碰到break语句时才执行。因此,只有当比较失败时才会打印错误消息

相关问题 更多 >