11. while
原创...大约 6 分钟
1. while 循环
while not user_answer_correct:
user_gender = input('请输入您的性别(F/M):')
if user_gender == 'F':
print('您是女生')
user_answer_correct = True
elif user_gender == 'M':
print('你是男生')
user_answer_correct = True
else:
print('wrong')
while循环:在条件满足时,执行里面的程序
根据上面的代码回答下面的问题:
- 为什么一开始需要一个单独的变量
user_answer_correct
来实现 while 循环的条件?直接while True 不行吗?
while True 会一直执行程序
- 上面程序循环的终止条件是什么?
从代码语法层面看: while false
从逻辑层面看:在用户输入 F/M 时结束
为什么变量一开始赋值为 False 为不是直接 True 呢?
逻辑问题,如果输入正确,而 user_answer_correct = False 会很奇怪
2. 循环输出
i = 1
while i < 10:
print(i)
i += 1
# output
1
2
3
4
5
6
7
8
9
3. 练习
- 求 1~100 的和
i = 0
total = 0
while i <= 100:
total += i
i += 1
print(total) # 5050
- 获取用户输入一个整数 n,计算 0~n 之和
n = int(input('enter a number: '))
total = 0
i = 0
while i < n+1:
total += i
i += 1
print(total)
猜数字游戏
编写一个 Python 程序,使用
while
循环来实现一个简单的文本猜数字游戏。游戏的规则如下:- 程序首先生成一个1到100之间的随机整数,让用户来猜测这个数字是多少。
- 用户每次输入他们的猜测后,程序需要告诉用户猜测是太高了、太低了还是正确。
- 如果用户猜对了数字,程序应打印出用户尝试的次数,并结束循环。
- 用户有机会在放弃前最多猜测10次。如果10次都没猜对,程序应告诉用户正确的数字,并结束。
程序要求:
- 使用
while
循环来处理猜测过程。 - 确保程序能够处理非法输入,如非数字输入,应提示用户重新输入有效数字。
- 使用 Python 的
random
模块来生成随机数字。
import random num = random.randint(1, 100) # 生成1到100之间的随机整数
代码实现:
import random
num = random.randint(1, 100) # 生成 1 到 100 的随机整数
guess_correct = False
count = 0
guess_num = 0
while not guess_correct and count < 10:
guess_num = input('请输入一个 1-100 的整数,你共有 10 次机会>>>> ')
if not guess_num.isdigit():
print('请输入纯数字文本')
else:
guess_num = int(guess_num)
count += 1
if guess_num == num:
print(f'你猜对了,一共猜了{count}次')
guess_correct = True
elif guess_num > num:
print(f'你猜的数字太大了,你已经猜了{count}次')
else:
print(f'你猜的数字太小了,你已经猜了{count}次')
ATM 机系统
编写一个Python程序,使用
while
循环实现一个基础的ATM机系统。程序应该具备以下功能:- 初始设定: 程序开始时,要求用户设定初始的账户余额。
- 交互菜单: 用户可以通过输入选择查看余额、存款、取款或退出。
- 存款功能: 用户选择存款后,输入存款金额并更新余额。
- 取款功能: 用户选择取款时,先检查账户余额是否足够,足够则扣除相应金额,不够则提示余额不足。
- 查看余额: 允许用户随时查看当前余额。
- 退出系统: 用户选择退出时,打印一条消息确认并结束程序。
程序要求:
- 使用
while
循环处理用户的多次交互直到用户选择退出。 - 确保所有输入均为有效数字,非数字输入时应提示错误并要求重新输入。
- 实现至少一种方式的用户身份验证,比如初始设定一个PIN码,每次操作前需验证。
代码实现:
user_money = float(eval(input('请设定初始的账户余额:'))) user_pin_correct = False while not user_pin_correct: user_pin = input('请输入您的PIN码以继续:') if user_pin != '1234': print('PIN码错误,请重试') else: user_pin_correct = True log_out = False while not log_out: if user_pin != '1234': print('PIN码错误,请重试') else: print('欢迎使用ATM机系统\n' '1.查看余额\n' '2.存款\n' '3.取款\n' '4.退出\n') command = input('请输入您的选择(1-4):') if command == '1': print(f'您剩余金额为{user_money}$\n') elif command == '2': money = input('请输入您想存入的金额:') if not money.isdigit(): print('请输入有效金额\n') else: user_money += float(money) print(f'存款成功!您现有的余额为:{user_money}$\n') elif command == '3': money = input('请输入您想取出的金额:') if not money.isdigit(): print('请输入有效金额\n') elif float(money) > user_money: print('账户余额不足\n') else: user_money -= float(money) print(f'取款成功!您的余额为:{user_money}$\n') elif command == '4': log_out = True print('感谢使用我们的ATM服务,再见!\n') else: print('请重新输入有效数字(1-4)\n')
设置一个初始的PIN码和账户余额。用户在程序启动时被要求输入。
pin = "1234" balance = float(input("请设定您的初始账户余额: "))
验证用户输入的PIN码。用户有三次机会输入正确的PIN码。
attempts = 0 while attempts < 3: entered_pin = input("请输入您的PIN码以继续:") if entered_pin == pin: break # 如果PIN码正确,退出循环。 print("PIN码错误,请重试。") attempts += 1 # 增加尝试次数。 if attempts == 3: print("PIN码错误次数过多,程序退出。") else: # 如果PIN码验证通过,进入主功能菜单的循环。 while True: print("\n欢迎使用ATM机系统") print("1. 查看余额") print("2. 存款") print("3. 取款") print("4. 退出") choice = input("请输入您的选择(1-4):")
if choice == "1": # 查看余额的选项。 print(f"您的账户余额为:${balance:.2f}") elif choice == "2": # 存款的选项。用户输入存款金额。 while True: try: amount = float(input("请输入存款金额:")) if amount >= 0: balance += amount print(f"存款成功!您的新余额为:${balance:.2f}") break # 成功存款后退出内部循环。 else: print("请输入一个正数。") # 引导用户输入正数金额。 except ValueError: print("无效输入,请输入一个数字。") # 引导用户输入有效数字。 elif choice == "3": # 取款的选项。检查账户余额并进行取款操作。 while True: try: amount = float(input("请输入取款金额:")) if amount >= 0: if amount > balance: print("余额不足,无法完成取款。") else: balance -= amount print(f"取款成功!您的新余额为:${balance:.2f}") break # 完成取款或显示余额不足信息后退出循环。 else: print("请输入一个正数。") except ValueError: print("无效输入,请输入一个数字。") elif choice == "4": # 退出选项。结束程序。 print("感谢使用我们的ATM服务,再见!") break # 退出主循环,结束程序。 else: # 如果输入非1-4的选项,提示无效输入。 print("无效输入,请输入1-4之间的数字。")
你认为这篇文章怎么样?
- 0
- 0
- 0
- 0
- 0
- 0