刚刚学习了两个关于循环的案例,来分享一下:
一、根据输入的账号和密码执行登录操作
具体要求如下:
1.设定正确的账号和密码 2.输入正确的账号和密码则登录成功,输入错误的则继续输入直到正确为止 3.输入的账号和密码不能为空
接下来是完整代码块:
while True: username = input('请输入用户账号:') password = input('请输入用户密码:') if username == '' or password == '': print('输入的账号或密码不得为空!') continue if username == '1839632447' and password == 'wytlike688': print('登录成功!') break elif username == '18806092052' and password == 'wytlike688': print('登录成功!') break else: print('用户名或者密码输入错误,请重新输入:')这里需要注意:
username = input('请输入用户账号:') password = input('请输入用户密码:')这两行代码必须写在循环内部,如果写在循环外部会出现错误,程序将会无限循环输入账号密码这一步。以下是我和 DeepSeek 交流后它给我的分析:
如果循环条件涉及用户输入,那么输入语句必须放在循环体内,这样每次循环都能获取新的输入,用户才有机会改变条件。
如果放在循环外,输入只执行一次,条件判断结果不变,要么直接退出(如果第一次就正确),要么无限循环(如果第一次错误)。
二.猜数字游戏
具体要求如下:
系统随机生成一个数字,用户输入一个数字,系统判断输出“大了”,“小了”或者“猜对了”三个字样,以下是代码:
import random random_num = random.randint(1,100) #随机生成一个1到100的随机数 while True: num = int(input('请输入你猜的数字:')) if num > random_num: print('猜大了') elif num < random_num: print('猜小了') else: print('恭喜!猜对了') break print('随机生成的数字是:',random_num)但是这个猜数字游戏我个人不是很满意,后续我根据和deepseek的交流重新改进了一下整个代码块:
import random while True: # 外层循环:控制是否开始新一局 random_num = random.randint(1, 100) # 每局重新生成随机数 print('新一局开始!我已经想好了一个1到100之间的数字。') while True: # 内层循环:猜数字 try: num = int(input('请输入你猜的数字:')) except ValueError: print('请输入有效的整数!') continue if num > random_num: print('猜大了') elif num < random_num: print('猜小了') else: print('恭喜!猜对了') break # 询问是否继续 while True: # 这个循环用于确保玩家输入有效的选项 choice = input('是否再玩一次?(y/n):').strip().lower() if choice in ['y', 'yes']: break # 跳出询问循环,继续外层循环(开始新一局) elif choice in ['n', 'no']: print('感谢游玩,再见!') exit() # 或者 break 两次,但 exit() 直接结束程序更简单 else: print('请输入 y 或 n。')改进说明:这个代码引入了三个循环,一个大循环,两个小循环,大循环内的两个小循环优先级平等,执行分先后,这个代码块实现了让用户拥有选择是否再来一局猜数字游戏的权利,当第一次运行程序猜对数字后,用户会进入选择界面,输入y/n来选择是否再进行一局游戏或者直接退出,如果输入y,那么又会进入一开始的小循环继续进行数字游戏,如果输入n,这里还引入了exit()语句,直接结束程序。
补充说明:代码还引入了try-except语句来避免用户在输入整数时误触造成的程序崩溃或者无法继续进行后面代码的问题。