老师布置的封装计算器的函数方法问题
问题描述:
封装计算器的函数方法,当calc_times 大于 1做非第一次运算的时候,请问如何能够带上calc_times = 1时第一次的计算结果参与运算?
相关代码:
calc_times = 1;
while True:
if calc_times == 1:
first_num = float(input("请输入第一个数:"));
operator = input("请输入操作符号:");
if operator in ["+" , "-" , "*" , "/" , "c" , "C" , "q" , "Q"]:
right_operator = operator;
else:
print("您输入的操作符有误,请重新输入!");
continue;
if right_operator == "c" or right_operator == "C":
print("计算器清零,请重新输入!");
first_num = 0;
calc_times = 1;
continue;
elif right_operator == "q" or right_operator == "Q":
print("退出计算器运算!");
break;
second_num = float(input("请输入第二个数:"));
def calc(first_num , right_operator , second_num):
if right_operator == "+":
first_num += second_num;
print("计算的结果是:" + str(first_num));
elif right_operator == "-":
first_num -= second_num;
print("计算的结果是:" + str(first_num));
elif right_operator == "*":
first_num *= second_num;
print("计算的结果是:" + str(first_num));
elif right_operator == "/":
first_num /= second_num;
print("计算的结果是:" + str(first_num));
calc(first_num , right_operator , second_num);
calc_times += 1;
else:
operator = input("请输入操作符号:");
if operator in ["+" , "-" , "*" , "/" , "c" , "C" , "q" , "Q"]:
right_operator = operator;
else:
print("您输入的操作符有误,请重新输入!");
continue;
if right_operator == "c" or right_operator == "C":
print("计算器清零,请重新输入!");
first_num = 0;
calc_times = 1;
continue;
elif right_operator == "q" or right_operator == "Q":
print("退出计算器运算!");
break;
second_num = float(input("请输入第二个数:"));
def calc1(first_num , right_operator , second_num):
if right_operator == "+":
first_num += second_num;
print("计算的结果是:" + str(first_num));
elif right_operator == "-":
first_num -= second_num;
print("计算的结果是:" + str(first_num));
elif right_operator == "*":
first_num *= second_num;
print("计算的结果是:" + str(first_num));
elif right_operator == "/":
first_num /= second_num;
print("计算的结果是:" + str(first_num));
calc1(first_num , right_operator , second_num);
calc_times += 1;
尝试过的解决方式:
如我写的代码,无法带入第一次的计算结果,请老师指点
13
收起
正在回答
2回答
同学,你好!同学代码存在以下几个问题:
1、第一次运算后的结果是result
第二次运行加减乘除时,应用第一次的result 值继续操作,同学第二次计算使用的是first_num第一次输入的数字,并且没有返回值。第二次调用函数时第一个参数应该写result
2、程序报错是因为第二次封装的函数中使用了result 变量,在该函数里result 属于局部变量,并不能获取第一次计算结果的result值,可以理解为没有定义变量,就使用,是错的。同学第二次定义函数时,将first_num改为result 就可了,将result 作为参数传递并使用
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | calc_times = 1 ; while True : if calc_times = = 1 : first_num = float ( input ( "请输入第一个数:" )); operator = input ( "请输入操作符号:" ); if operator in [ "+" , "-" , "*" , "/" , "c" , "C" , "q" , "Q" ]: right_operator = operator; else : print ( "您输入的操作符有误,请重新输入!" ); continue ; if right_operator = = "c" or right_operator = = "C" : print ( "计算器清零,请重新输入!" ); first_num = 0 ; calc_times = 1 ; continue ; elif right_operator = = "q" or right_operator = = "Q" : print ( "退出计算器运算!" ); break ; second_num = float ( input ( "请输入第二个数:" )); def calc(first_num , right_operator , second_num): if right_operator = = "+" : result = first_num + second_num; return result; elif right_operator = = "-" : result = first_num - second_num; return result; elif right_operator = = "*" : result = first_num * second_num; return result; elif right_operator = = "/" : result = first_num / second_num; return result; result = calc(first_num , right_operator , second_num); print ( "计算的结果是:" + str (result)); calc_times + = 1 ; else : operator = input ( "请输入操作符号:" ); if operator in [ "+" , "-" , "*" , "/" , "c" , "C" , "q" , "Q" ]: right_operator = operator; else : print ( "您输入的操作符有误,请重新输入!" ); continue ; if right_operator = = "c" or right_operator = = "C" : print ( "计算器清零,请重新输入!" ); first_num = 0 ; calc_times = 1 ; continue ; elif right_operator = = "q" or right_operator = = "Q" : print ( "退出计算器运算!" ); break ; second_num = float ( input ( "请输入第二个数:" )); #def calc(first_num, right_operator, second_num): def calc(result , right_operator , second_num): if right_operator = = "+" : result = result + second_num; return result; elif right_operator = = "-" : result = result - second_num; return result; elif right_operator = = "*" : result = result * second_num; return result; elif right_operator = = "/" : result = result / second_num; return result; #calc(first_num , right_operator , second_num); result = calc(result, right_operator, second_num); print ( "计算的结果是:" + str (result)); calc_times + = 1 ; |
祝学习愉快~
泰斯塔罗莎
2023-08-26 06:19:41
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | calc_times = 1 ; while True : if calc_times = = 1 : first_num = float ( input ( "请输入第一个数:" )); operator = input ( "请输入操作符号:" ); if operator in [ "+" , "-" , "*" , "/" , "c" , "C" , "q" , "Q" ]: right_operator = operator; else : print ( "您输入的操作符有误,请重新输入!" ); continue ; if right_operator = = "c" or right_operator = = "C" : print ( "计算器清零,请重新输入!" ); first_num = 0 ; calc_times = 1 ; continue ; elif right_operator = = "q" or right_operator = = "Q" : print ( "退出计算器运算!" ); break ; second_num = float ( input ( "请输入第二个数:" )); def calc(first_num , right_operator , second_num): if right_operator = = "+" : result = first_num + second_num; return result; elif right_operator = = "-" : result = first_num - second_num; return result; elif right_operator = = "*" : result = first_num * second_num; return result; elif right_operator = = "/" : result = first_num / second_num; return result; result = calc(first_num , right_operator , second_num); print ( "计算的结果是:" + str (result)); calc_times + = 1 ; else : operator = input ( "请输入操作符号:" ); if operator in [ "+" , "-" , "*" , "/" , "c" , "C" , "q" , "Q" ]: right_operator = operator; else : print ( "您输入的操作符有误,请重新输入!" ); continue ; if right_operator = = "c" or right_operator = = "C" : print ( "计算器清零,请重新输入!" ); first_num = 0 ; calc_times = 1 ; continue ; elif right_operator = = "q" or right_operator = = "Q" : print ( "退出计算器运算!" ); break ; second_num = float ( input ( "请输入第二个数:" )); def calc(first_num , right_operator , second_num): if right_operator = = "+" : result = result + second_num; return result; elif right_operator = = "-" : result = result - second_num; return result; elif right_operator = = "*" : result = result * second_num; return result; elif right_operator = = "/" : result = result / second_num; return result; calc(first_num , right_operator , second_num); print ( "计算的结果是:" + str (result)); calc_times + = 1 ; |
尝试用了return改造了一下,第二次计算仍旧是报错,请老师指点
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧