大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在Python中,=是赋值的意思,==是用于判断是否相等。
创新互联从2013年开始,是专业互联网技术服务公司,拥有项目网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元咸宁做网站,已为上家服务,为咸宁各地企业和个人服务,联系电话:13518219792
他们之间的区别就是代表的含义有所不同。
一个等号代表的含义是赋值,将某一个数值赋给某个变量,比如a=3,将3这个数值赋予给a。
两个等号是判断是否相等,返回True和False,比如1==1,他们是相等的,那么就返回true;1==2,他们是不相等的,那么就返回false。
【造成这个问题的原因分析】:在计算机中,所有的数都是二进制保存,十进制的小数在和二进制数字相互转化的时候,就会出现误差,也就是浮点数的精确度。由于浮点数的精确度不可能完全精准,所以出现这样的情况在所难免。所以会出现问题的截图中所示的状态。
【解决方法】:可以通过将小数减法变为整数减法降低误差。如下图所示:
import random
max_n = 100
i = 0
while True:
i += 1
# 随机运算,0+,1-
op = random.randint(0, 1)
# +
if op == 0:
x1 = random.randint(0, max_n)
x2 = random.randint(0, max_n - x1)
result = x1 + x2
qst = str(x1) + "+" + str(x2) + "="
question = [qst, result]
# -
elif op == 1:
x1 = random.randint(0, max_n)
x2 = random.randint(0, x1)
result = x1 - x2
qst = str(x1) + "-" + str(x2) + "="
question = [qst, result]
x = input("第{:2d}题:{}".format(i + 1, question[0]))
if int(x) == int(question[1]):
print("回答正确!")
else:
print("回答错误!{}{}".format(question[0], question[1]))
是利用原来的向下取整的机制如果原来是
实际上Python的round()函数可以接受两个参数round(value,ndigits),第一个参数为实际操作数,第二个参数为实际保留几位,如果第二个参数不填,则默认保留到整数位。
Python3.X对于浮点数默认的是提供17位数字的精度。
#定义函数
class myCalc:
def __init__(self,a,b):
self.a=a
self.b=b
def addition(self,Retain):
return round(self.a + self.b ,Retain)
def subtraction(self,Retain):
return round(self.a - self.b,Retain)
def multiplication(self,Retain):
return round(self.a * self.b,Retain)
def division(self,Retain):
return round(self.a / self.b,Retain)
while True:
get_num1 = input("请输入第一个数字:")
opera = input("请输入运算符:")
get_num2 = input("请输入第二个数字:")
get_retain = input("请输入保留小数位数:")
num1 = float(get_num1)
num2 = float(get_num2)
retain = int(get_retain)
result = 0.00
if opera == "+":
result = myCalc(num1,num2).addition(retain)
elif opera == "-":
result = myCalc(num1,num2).subtraction(retain)
elif opera == "*":
result = myCalc(num1,num2).multiplication(retain)
else:
result = myCalc(num1,num2).division(retain)
print("输出结果是:",result)
def add(a,b):#加法运算return a+bdef sub(a,b):#减法运算return a-bdef mul(a,b):#乘法运算return a*bdef div(a,b=1):#除法运算return a/b