有没有一种更优雅的方式来使用 'while loop',而不必先在'while loop'之外定义变量?



我对Stackoverflow和Python(3(非常陌生,所以请原谅我犯的任何错误!这是我迄今为止写的代码:

print("""You will need to enter your name so we can make a reservation!
(Use Enter ↵ to confirm)""")
user_firstname = str(input("What is your first name? "))
user_lastname = str(input("What is your last name?  "))
confirm_username = str(input("Is your name " + user_firstname + " " + user_lastname + " ? (y/n) "))[0]
while not confirm_username == "y":
user_firstname = str(input("What is your first name? "))
user_lastname = str(input("What is your last name?  "))
confirm_username = str(input("Is your name " + user_firstname + " " + user_lastname + " ? (y/n) "))[0]
else:
user_name = user_firstname + " " + user_lastname

正如您在我的示例中看到的,我必须声明一些变量两次(user_firstname、user_lastname&confirm_username(。while循环之前一次,while循环内一次。我想知道是否有一种更优雅、体积更小的编写代码的方法?任何其他优化建议也非常欢迎!

谢谢!

使用等价于C的do/while的Python,它只是一个以if condition: break:结束的while True:无限循环

while True:
user_firstname = input("What is your first name? ")
user_lastname = input("What is your last name?  ")
confirm_username = input("Is your name " + user_firstname + " " + user_lastname + " ? (y/n) ")[0]
if confirm_username == "y":
break
user_name = user_firstname + " " + user_lastname

注意:我删除了环绕您的input调用的str()input已经返回str,所以包装是没有意义的。

while True无限循环,完成时BREAK!!

print("""You will need to enter your name so we can make a reservation!
(Use Enter ↵ to confirm)""")
user_firstname = str(input("What is your first name? "))
user_lastname = str(input("What is your last name?  "))
while True:
confirm_username = str(input("Is your name " + user_firstname + " " + user_lastname + " ? (y/n) "))[0]
if confirm_username == "y":
user_name = user_firstname + " " + user_lastname
break

最新更新