You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python计算器开发求助:输入范围限制等功能实现问题

计算器代码功能完善指导

我是Python新手,重新编写计算器代码后,仍无法完成以下功能需求(尤其卡在第1点),恳请指导:

  • 将每个输入数字限制在-70至80范围内;
  • 避免除以零(禁止使用try-except语句);
  • 允许用户自定义输入范围,而非硬编码-70到80;
  • 验证下限范围小于上限范围。

以下是我编写的Python代码:

while True:

    print("what do you want to do?")
    print("1 Addition")
    print("2 Subtraction")
    print("3 Multiplication")
    print("4 Division")
    print("Enter Q to Quit.")



    def addition(firstNumber,secondNumber):
        result = firstNumber + secondNumber
        print("{0} + {1} = {2}".format(firstNumber,secondNumber,result))

    def subtraction(firstNumber,secondNumber):
        result = firstNumber - secondNumber
        print("{0} - {1} = {2}".format(firstNumber,secondNumber,result))    

    def multiplication(firstNumber,secondNumber):
        result = firstNumber * secondNumber
        print("{0} * {1} = {2}".format(firstNumber,secondNumber,result))

    def divide(firstNumber,secondNumber):
        if secondNumber == 0.0:
            print("You no divide by Zero my friend")
        else:
            result = firstNumber / secondNumber
            print("{0} / {1} = {2}".format(firstNumber,secondNumber,result))

    choice = input("Enter your choice: ")
    if choice == "q" or choice == "Q":
        break
    
    firstNumber = float(input("enter the firstNumber: "))
    secondNumber = float(input("enter the secondNumber: "))
    
    if firstNumber <= -70 or firstNumber >= 80:
        print("invalid choice enter the input again")
        firstNumber =float(input())
    else :
        print("\n")

    if secondNumber <= -70 or secondNumber >= 80:
        print("invalid choice enter the input again")
        secondNumber =float(input())
    else :
         print("\n")
    if choice == "1":
        addition(firstNumber,secondNumber)
    elif choice == "2":
        subtraction(firstNumber,secondNumber)
    elif choice == "3":
        multiplication(firstNumber,secondNumber)
    elif choice == "4":
        divide(firstNumber,secondNumber)
    else:
        print("Invalid Choice")

问题分析与修复方案

核心问题拆解

  1. 你当前的范围验证只检查一次输入,若用户再次输入错误值,无法继续校验,需要用循环强制用户输入符合要求的数值。
  2. 硬编码的范围无法满足自定义需求,需要在程序启动时让用户输入范围,并先验证下限小于上限。
  3. 函数定义放在while True循环内会导致每次循环重复定义函数,浪费资源,需移到循环外部。
  4. 中英文混合的提示信息体验不佳,建议统一为中文。

修改后的完整代码

# 定义运算函数,放在循环外部避免重复定义
def addition(a, b):
    result = a + b
    print(f"{a} + {b} = {result}")

def subtraction(a, b):
    result = a - b
    print(f"{a} - {b} = {result}")

def multiplication(a, b):
    result = a * b
    print(f"{a} * {b} = {result}")

def divide(a, b):
    if b == 0.0:
        print("错误:不能除以零")
    else:
        result = a / b
        print(f"{a} / {b} = {result}")

# 获取并验证用户自定义的数值范围
def get_valid_range():
    while True:
        try:
            lower = float(input("请输入数字下限:"))
            upper = float(input("请输入数字上限:"))
            if lower < upper:
                return lower, upper
            else:
                print("错误:下限必须小于上限,请重新输入")
        except ValueError:
            print("错误:请输入有效的数字")

# 获取符合范围要求的输入数字,循环校验直到输入正确
def get_valid_number(prompt, lower, upper):
    while True:
        try:
            num = float(input(prompt))
            if lower <= num <= upper:
                return num
            else:
                print(f"错误:输入数字必须在{lower}到{upper}之间,请重新输入")
        except ValueError:
            print("错误:请输入有效的数字")

# 主程序逻辑
def main():
    print("=== 自定义范围计算器 ===")
    lower, upper = get_valid_range()
    
    while True:
        print("\n请选择操作:")
        print("1. 加法")
        print("2. 减法")
        print("3. 乘法")
        print("4. 除法")
        print("输入 Q 退出程序")
        
        choice = input("请输入你的选择:").strip().upper()
        if choice == "Q":
            print("程序已退出")
            break
        
        if choice not in ["1", "2", "3", "4"]:
            print("错误:无效的选择,请重新输入")
            continue
        
        first_num = get_valid_number(f"请输入第一个数字(范围:{lower}~{upper}):", lower, upper)
        second_num = get_valid_number(f"请输入第二个数字(范围:{lower}~{upper}):", lower, upper)
        
        if choice == "1":
            addition(first_num, second_num)
        elif choice == "2":
            subtraction(first_num, second_num)
        elif choice == "3":
            multiplication(first_num, second_num)
        elif choice == "4":
            divide(first_num, second_num)

if __name__ == "__main__":
    main()

代码说明

  • 范围校验:通过get_valid_range循环确保用户输入的下限小于上限,不符合要求则重新输入。
  • 数值校验:get_valid_number函数循环检查输入数值是否在指定范围内,同时处理非数字输入的情况。
  • 函数优化:运算函数移到循环外部,避免重复定义,提升运行效率。
  • 体验优化:统一中文提示,错误信息明确,操作流程更清晰。

内容的提问来源于stack exchange,提问作者defaultJohnSmith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:54:35