RicardoM.Lu1 2024-01-28 19:30 采纳率: 80.6%
浏览 6
已结题

在做python题的时候出现了问题

#做一个python练习题的时候,代码要求是:判断语句if判断,满足条件后break退出循环。
但是运行的时候出现了如下问题:break退出循环后任然需要输入一遍所需要判断的条件程序才结束(目前看最后这次输入的内容不会影响判断结果)
#需求:满足判断条件break后直接退出程序 把多余的一次输入去除
#代码如下:

money = 50000
name = input("请输入用户姓名:")


def inquire(show_header):
    """
    查询余额函数
    :return: 无返回值
    """
    if show_header:
        print("查询余额")
    print(f"用户{name}当前剩余余额为{money}")


def deposit(number):
    """
    存款函数
    :return:存钱之后所剩余的金钱
    """
    global money
    money += number
    inquire(False)
    return money


def withdrawal(number):
    """
    取款函数
    :return:取钱之后所剩余的金钱
    """
    global money
    if number <= money:
        money -= number
    else:
        print("你的钱不够了")
    inquire(False)
    return money


def main_menu():
    """
    主菜单函数,无返回值
    """
    print("输入1查询余额\n输入2存款\n输入3取款\n若输入错误则退出主菜单")
    return int(input("请输入编号:"))


while True:
    number = main_menu()
    if number == 1:
        inquire(True)
        continue
    elif number == 2:
        money1 = int(input("请输入你想存入的金钱:"))
        deposit(money1)
        continue
    elif number == 3:
        money2 = int(input("请输入你想取出的金钱:"))
        withdrawal(money2)
        continue
    else:
        print("编号有误")
        break

main_menu()


  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-28 19:37
    关注

    引自免费微信小程序:皆我百晓生

    在你提供的代码中,问题在于while True循环之后还调用了main_menu()函数。当满足条件后执行了break跳出循环时,程序会继续执行下一行的main_menu()调用,这导致了额外的一次输入提示。

    要解决这个问题,只需移除循环外的main_menu()调用即可:

    # 移除这一行
    # main_menu()
    
    while True:
        number = main_menu()
        if number == 1:
            inquire(True)
            continue
        elif number == 2:
            money1 = int(input("请输入你想存入的金钱:"))
            deposit(money1)
            continue
        elif number == 3:
            money2 = int(input("请输入你想取出的金钱:"))
            withdrawal(money2)
            continue
        else:
            print("编号有误")
            break
    

    现在,当用户输入错误编号并触发break语句后,程序将直接结束而不会再显示主菜单。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月5日
  • 已采纳回答 1月28日
  • 赞助了问题酬金15元 1月28日
  • 创建了问题 1月28日

悬赏问题

  • ¥15 用matlab或python实现多个表格合并单元格
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题