如何创建重复到条件结束的循环?
我还是个完全的新手。我想让用户输入一个名字,这个名字必须和字典里的某个名字匹配。如果不匹配,程序就会一直让用户重新输入,直到输入一个正确的名字。以下是我的代码:
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.")
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。