python实验二报告_20193417 2019-2020-2 《Python程序设计》实验二报告

1.首先建立一个用于计算的Cal()类,并在其中定义好储存运算结果的属性result,用于加减乘除、平方、n次方、取倒数、取百分号、清零的方法

9b66f12321cec9b06e1b7d48ab0d8781.png

12709328.html

2.定义变量ult_result作为对象,利用while True死循环进行多次运算,让用户通过数字指定运算操作符,并通过if-else语句判断用户要求的运算

b6ff0c289e7aff4b72f234883847a733.png

12709328.html

3.当用户输入字符时,利用break语句跳出循环,结束计算

源代码:

#定义计算类

class Cal:

result = 0

def plus(self, num1): #加法

self.result += num1

print('=',self.result)

def minus(self, num1): #减法

self.result -= num1

print('=',self.result)

def times(self, num1): #乘法

self.result *= num1

print('=',self.result)

def devide(self, num1): #除法

try:

self.result /= num1

except:

print("MathError!") #不能除以零

self.result = 0

print('=',self.result)

def square(self, num1): #平方

self.result = pow(num1,2)

print('=',self.result)

def nth_power(self, num1, num2): #n次方

self.result = pow(num1 , num2)

print('=',self.result)

def reciprocal(self, num1): #取倒数

self.result = 1 / num1

print('=',self.result)

def percent_sign(self, num1): #百分号

self.result = num1 * 0.01

print('=',self.result)

def clear(self): #清除数据

self.result = 0

print('0')

opr = {1:'+',2:'-',3: '*',4: '÷',5: 'x²',6: 'x^n',7: '1/x',8: '%',9: 'CLEAR','p': '()'} #用户输入代号,如何立刻返回对应符号

numget1 = float(input('计算开始\n'))

ult_result = Cal()

ult_result.result = numget1

while True:

print('='*20,"\n1. +\t2. -\t3. *\n4. ÷\t5. x²\t6. x^n\n7. 1/x\t8. %\t9. CLEAR\n'p':()\n",'='*20)

try:

signget1 = int(input())

print(ult_result.result,opr[signget1])

if 1<=signget1<= 4:

numget2 = input()

if numget2 == 'p': #如果输入括号的情况

print('()')

num_emptybox = ult_result.result #将原值储存

sign_emptybox = signget1 #将原操作符储存

ult_result.result = float(input())

print('='*20,"\n1. +\t2. -\t3. *\n4. ÷\t5. x²\t6. x^n\n7. 1/x\t8. %\t9. CLEAR\n'p':()\n",'='*20)

signget1 = int(input())

print(ult_result.result,opr[signget1])

if (1<=signget1) and (signget1 <= 4):

numget2 = float(input())

if signget1 == 1 :

print(ult_result.result,'+',numget2)

ult_result.plus(numget2)

elif signget1 == 2:

print(ult_result.result,'-',numget2)

ult_result.minus(numget2)

elif signget1 == 3:

print(ult_result.result,'x',numget2)

ult_result.times(numget2)

elif signget1 == 4:

print(ult_result.result,'÷',numget2)

ult_result.devide(numget2)

elif signget1 == 5:

ult_result.square(ult_result.result)

elif signget1 == 6:

nth = float(input("n = "))

ult_result.nth_power(ult_result.result,nth)

elif signget1 == 7:

ult_result.reciprocal(ult_result.result)

elif signget1 == 8:

ult_result.percent_sign(ult_result.result)

num2_emptybox = ult_result.result ##将新值储存

ult_result.result = num_emptybox ##将原值重新调用

signget1 = sign_emptybox #将原操作符重新调用

numget2 =num2_emptybox ##将新值调用

numget2 = float(numget2)

if signget1 == 1 :

print(ult_result.result,'+',numget2)

ult_result.plus(numget2)

elif signget1 == 2:

print(ult_result.result,'-',numget2)

ult_result.minus(numget2)

elif signget1 == 3:

print(ult_result.result,'x',numget2)

ult_result.times(numget2)

elif signget1 == 4:

print(ult_result.result,'÷',numget2)

ult_result.devide(numget2)

elif signget1 == 5:

ult_result.square(ult_result.result)

elif signget1 == 6:

nth = float(input("n = "))

ult_result.nth_power(ult_result.result, nth)

elif signget1 == 7:

ult_result.reciprocal(ult_result.result)

elif signget1 == 8:

ult_result.percent_sign(ult_result.result)

elif signget1 == 9:

ult_result.clear()

continue

except :

print('计算结束')

break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值