跳至主要內容

11. while

Ryan原创...大约 6 分钟pythonpython编程教程

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. 求 1~100 的和
i = 0
total = 0
while i <= 100:
    total += i
    i += 1
print(total) # 5050
  1. 获取用户输入一个整数 n,计算 0~n 之和
n = int(input('enter a number: '))
total = 0
i = 0
while i < n+1:
    total += i
    i += 1
print(total)
  1. 猜数字游戏

    编写一个 Python 程序,使用 while 循环来实现一个简单的文本猜数字游戏。游戏的规则如下:

    1. 程序首先生成一个1到100之间的随机整数,让用户来猜测这个数字是多少。
    2. 用户每次输入他们的猜测后,程序需要告诉用户猜测是太高了、太低了还是正确。
    3. 如果用户猜对了数字,程序应打印出用户尝试的次数,并结束循环。
    4. 用户有机会在放弃前最多猜测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}次')
  1. ATM 机系统

    编写一个Python程序,使用 while 循环实现一个基础的ATM机系统。程序应该具备以下功能:

    1. 初始设定: 程序开始时,要求用户设定初始的账户余额。
    2. 交互菜单: 用户可以通过输入选择查看余额、存款、取款或退出。
    3. 存款功能: 用户选择存款后,输入存款金额并更新余额。
    4. 取款功能: 用户选择取款时,先检查账户余额是否足够,足够则扣除相应金额,不够则提示余额不足。
    5. 查看余额: 允许用户随时查看当前余额。
    6. 退出系统: 用户选择退出时,打印一条消息确认并结束程序。

    程序要求:

    • 使用 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
评论
  • 按正序
  • 按倒序
  • 按热度