yg飞许 发表于 2023-12-29 17:01:43

定义一个函数,实现计算器功能

定义一个函数,实现计算器功能
例如
用户输入3+2 输出5
若用户继续输入 1+9 输出10

FishC 发表于 2023-12-29 17:01:53

好的,我们可以定义一个计算器函数来实现这个功能。这个函数将接受用户输入的表达式,并返回计算结果。

下面是一个简单的实现:

def calculator():
    while True:
      expression = input("请输入表达式(例如3+2):")
      
      # 检查用户是否想要退出
      if expression.lower() == 'q':
            print("已退出计算器")
            break
      
      # 分割表达式为操作数和运算符
      try:
            num1, operator, num2 = expression.split()
            num1 = float(num1)
            num2 = float(num2)
      except:
            print("请输入有效的表达式!")
            continue
      
      # 根据运算符进行计算
      if operator == '+':
            result = num1 + num2
      elif operator == '-':
            result = num1 - num2
      elif operator == '*':
            result = num1 * num2
      elif operator == '/':
            if num2 != 0:
                result = num1 / num2
            else:
                print("除数不能为零!")
                continue
      else:
            print("请输入有效的运算符(+ - * /)!")
            continue
      
      print("计算结果:", result)

# 调用计算器函数
calculator()

在这个实现中,我们使用一个无限循环来持续接收用户的输入。我们先检查用户是否想要退出计算器,如果用户输入的是"q",我们就结束循环并打印一条退出消息。否则,我们尝试通过`split()`函数将用户输入的表达式分割成操作数和运算符,并将它们转换为浮点数以进行计算。

接下来,我们根据运算符执行相应的计算,并将结果打印出来。如果用户输入的表达式不符合预期,我们会提示用户重新输入。如果用户输入的是除法并且除数为零,我们将给出错误提示。

你可以试着运行这段代码,测试一下它是否可以满足你的需求。希望对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2023-12-29 17:20:11

本帖最后由 jackz007 于 2023-12-30 09:18 编辑

def calc(s):
    return eval(s)

while True:
    s = input() . strip()
    if s:
      print(calc(s))
    else:
      break

      上面的代码利用了 Python 的 eval() 函数来计算表达式的值,下面用自编代码实现了对包含有 +、-、*、/、//、% 的算式进行求值的功能。
def getdat(p) :
    p = p + ' '
    k = 0
    if p == '+' or p == '-' :
      k += 1
    while(k < len(p) and p != '+' and p != '-' and p != '*' and p != '/' and p != '%' and p != ' ') :
      k += 1
    return eval(p[: k]) , k

def calcx(p) :
    result , k = getdat(p)
    while (k < len(p) and (p == '*' or p == '/' or p == '%')) :
      e = 1 if k < len(p) - 1 and p == '//' else 0
      d , m = getdat(p)
      if p == '*' or p == '/' or p == '%' :
            if e :
                result //= d
            else :
                if p == '*' :      
                  result *= d
                elif p == '/' :
                  result /= d
                else :
                  result %= d
            k += m + e + 1
      else :
            break
    return result , k

def calc(p):
    result , k = calcx(p)
    while(k < len(p)) :
      d , m = calcx(p)      
      result = result + d if p == '+' else result - d
      k += m + 1
    return result

while True :
    s = input() . strip()
    if s :
      s = '' . join(s . split())
      print(calc(s))
    else:
      break

liyifeng295641 发表于 2023-12-30 20:04:28

#include <stdio.h>

float result(char ch,float num1, float num2){
        switch(ch){
                case '+':
                        return num1 + num2;
                case '-':
                        return num1 - num2;
                case 'x':
                        return num1 * num2;
                case '/':
                        return num1 / num2;
                default:
                        printf("无效的运算符:\n");
                        return 0.0;
        }
}
int main(){
        float num1,num2;
        char ch;
        printf("请你输入你要计算的两个数:");
        scanf("%f %c %f", &num1, &ch, &num2);

        printf("答案是:%.2f\n",result(ch,num1,num2));
        return 0;
}

刚学,只会写一个加减乘除的。

yg飞许 发表于 2024-1-9 21:59:27

本帖最后由 yg飞许 于 2024-1-9 22:01 编辑

liyifeng295641 发表于 2023-12-30 20:04
刚学,只会写一个加减乘除的。

#include <stdio.h>


int Add(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
////                printf("嘿嘿嘿!!");
        return num1 + num2;        //1.将数据返回2.结束函数
}
int Sub(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
//                printf("嘿嘿嘿!!");
        return num1 - num2;        //1.将数据返回2.结束函数
}
int Mul(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
//                printf("嘿嘿嘿!!");
        return num1 * num2;        //1.将数据返回2.结束函数
}
int Div(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
//                printf("嘿嘿嘿!!");
        return num1 / num2;        //1.将数据返回2.结束函数
}

int fun1(){
        int num1,num2;
        char opa;
        scanf("%d%c%d",&num1,&opa,&num2);
        switch(opa){
                case '+':return Add(num1,num2);break;
                case '-':return Sub(num1,num2);break;
                case '*':return Mul(num1,num2);break;
                case '/':return Div(num1,num2);break;
        }
       
}
main(){
       
        printf("%d",fun1());
       
}

yg飞许 发表于 2024-1-9 22:02:31

本帖最后由 yg飞许 于 2024-1-9 22:49 编辑

#include <stdio.h>
int Add(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
////                printf("嘿嘿嘿!!");
        return num1 + num2;        //1.将数据返回2.结束函数
}
int Sub(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
//                printf("嘿嘿嘿!!");
        return num1 - num2;        //1.将数据返回2.结束函数
}
int Mul(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
//                printf("嘿嘿嘿!!");
        return num1 * num2;        //1.将数据返回2.结束函数
}
int Div(int num1,int num2){
//        int num1,num2;
//        scanf("%d%d",&num1,&num2);
//                printf("嘿嘿嘿!!");
        return num1 / num2;        //1.将数据返回2.结束函数
}

int fun1(){
        int num1,num2;
        char opa;
        intfin;
        scanf("%d%c%d",&num1,&opa,&num2);
        switch(opa){
                case '+':printf("%d",fin = Add(num1,num2));break;
                case '-':printf("%d",fin = Sub(num1,num2));break;
                case '*':printf("%d",fin = Mul(num1,num2));break;
                case '/':printf("%d",fin = Div(num1,num2));break;
        }

        while(1){
                scanf("%c%d",&opa,&num2);
                switch(opa){
                        case '+':printf("%d",fin = Add(fin,num2));break;
                        case '-':printf("%d",fin = Sub(fin,num2));break;
                        case '*':printf("%d",fin = Mul(fin,num2));break;
                        case '/':printf("%d",fin = Div(fin,num2));break;
                        case 'q':return printf("嘿嘿");
                }
        }       
}
main(){
       

//        例如
//用户输入3+2输出 5
//若用户继续输入 +3输出 8

//若用户输入 1+9 输出10       
}
liyifeng295641 发表于 2023-12-30 20:04
刚学,只会写一个加减乘除的。
页: [1]
查看完整版本: 定义一个函数,实现计算器功能