如何创建重复到条件结束的循环?

-3 投票
2 回答
54 浏览
提问于 2025-04-14 15:26

我还是个完全的新手。我想让用户输入一个名字,这个名字必须和字典里的某个名字匹配。如果不匹配,程序就会一直让用户重新输入,直到输入一个正确的名字。以下是我的代码:

class Yakuza:
    def __init__(self, name, clan):
        self.name = name
        self.clan = clan
        
    def present(self):
        print(f"Hello! I am {self.name} from the {self.clan} clan!")
        
user1 = Yakuza("Kiryu", "Dojima")
user2 = Yakuza("Nishikiyama", "Dojima")

Startup = input("Welcome to Yakuza 0! Press Enter to start.")

character_dictionary = {"Kiryu" : "Dojima Clan",
                        "Nishikiyama" : "Dojima Clan"}
print(character_dictionary)

character_select = input("Select your character: ")

while character_select in character_dictionary:

    if character_select == "Kiryu":
        user1.present()
            
    elif character_select == "Nishikiyama":
        user2.present()
    
    else:
        print("This character is not available. Try again")

我本以为这个循环会一直运行,直到输入一个正确的名字,但它却一直在不停地运行。另外,character_select这个输入是在循环里还是外面,是否会有影响呢?

2 个回答

1

repeat-until 循环的一般形式是

while True:
    ...

    if <condition>:
        break

这个循环的特点是,它不是在循环开始的时候检查条件(这样可能在进入循环之前就失败),而是“永远”循环下去,直到最后才检查条件(也就是说,if 语句是循环体中的最后一条语句)。如果条件成立,就会明确地退出循环。

0
class Yakuza:
    def __init__(self, name, clan):  # Fixed __init__ typo here
        self.name = name
        self.clan = clan

    def present(self):
        print(f"Hello! I am {self.name} from the {self.clan} clan!")
    
user1 = Yakuza("Kiryu", "Dojima")
user2 = Yakuza("Nishikiyama", "Dojima")

Startup = input("Welcome to Yakuza 0! Press Enter to start.")

character_dictionary = {"Kiryu": "Dojima Clan", "Nishikiyama": "Dojima Clan"}
print(character_dictionary)

while True:  # Changed the condition here
    character_select = input("Select your character: ")  # Moved inside the loop
    if character_select in character_dictionary:
        if character_select == "Kiryu":
            user1.present()
            break  # Exit the loop after successful execution
        elif character_select == "Nishikiyama":
            user2.present()
            break  # Exit the loop after successful execution
    else:
        print("This character is not available. Try again.")

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答