定义一个函数,实现计算器功能
定义一个函数,实现计算器功能例如
用户输入3+2 输出5
若用户继续输入 1+9 输出10 好的,我们可以定义一个计算器函数来实现这个功能。这个函数将接受用户输入的表达式,并返回计算结果。
下面是一个简单的实现:
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-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 #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 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: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]