用户:THORNS查看:3 回复:1 评论:3 创建时间:2021-06-30T15:13:59
【作品展示】

【作品介绍】
(肝都废了)2021年6月30日更新公告
功能增加:增加了分数加法、分数乘法、倒数的功能函数
作者温馨提示:分数减法和除法的函数因不明确减数、被减数位置以及括号情况,可能延迟上线或只支持两个数参数的形式上限;后期关于报错信息还会继续优化,请持续关注官方信息
一只大聪明
2021年6月30日
遇到bug什么的记得留言哦
【作品源代码】
import sys
from PySide2.QtWidgets import *
# 使用PySide2介绍
app = QApplication(sys.argv)
txt = ['本次更新后版本:\n1.3.0版本',
'本次更新时间:\n2021年6月30日',
'本次更新内容:\n1.继续更新第二部分,增加了分数加法、分数乘法、倒数三个功能',
'作者:\n一只大聪明',
'温馨提示:\n如有疑问,请登录https://shequ.codemao.cn/community/381285查看详情或进行评价']
window = QMainWindow()
for i in txt:
QMessageBox.information(window,
'Number 库介绍',
i,
QMessageBox.Yes,
QMessageBox.Yes)
'''第一部分:整数运算'''
# 找一个数所有的因数
def factor(num):
factors = []
for i in range(num-1):
i += 1
if num % i == 0:
factors.append(i)
factors.append(num)
return factors
# 判断一个数是否为完全数
def per_num(num):
sum = 0
factors = factor(num)
for i in range(len(factors)-1):
sum += factors[i]
if sum == num:
return True
# 判断一个数是否为质数
def pri_num(num):
if len(factor(num)) == 2:
return True
else:
return False
# 判断一个数是否为偶数
def even_num(num):
if num %2 == 0:
return True
else:
return False
# (最大)公因数
def hcf(num_list):
if type(num_list) == list and len(num_list) > 1:
common_f = []
for i in factor(num_list[0]):
common = True
for j in num_list:
if not i in factor(j):
common = False
if common:
common_f.append(i)
return common_f, max(common_f)
else:
QMessageBox.warning(window, '注意', '请在该函数的参数内传入一个包含两个或以上数字的列表!')
return
# 注意:本函数会返回两个值:两个数的公因数和最大公因数;请在该函数的参数内传入一个包含两个或以上数字的列表!
# (最小)公倍数
def lcm(num_list):
if type(num_list) == list and len(num_list) > 1:
i = 1
common = False
while not common:
common = True
now_num = num_list[0]*i
for j in num_list:
if not now_num % j == 0:
common = False
i += 1
return now_num
else:
QMessageBox.warning(window, '注意', '请在该函数的参数内传入一个包含两个或以上数字的列表!')
return
# 注意:请在该函数的参数内传入一个包含两个或以上数字的列表!
# 分解质因数
def pri_fac(num):
pri_factors = []
now_num = num
while not pri_num(now_num):
pri_factor = factor(now_num)[1]
now_num = int(now_num/pri_factor)
pri_factors.append(pri_factor)
pri_factors.append(now_num)
if pri_factors:
text = '{} = '.format(num)
for i in pri_factors:
text += '{}*'.format(i)
text += '1'
else:
text = '{} = {}'.format(num, num)
return text
# 互质数
def coprime(num_list):
if type(num_list) == list and len(num_list) > 1:
if len(hcf(num_list)) == 1:
return True
else:
return False
else:
QMessageBox.warning(window, '注意', '请在该函数的参数内传入一个包含两个或以上数字的列表!')
return
# 注意:请在该函数的参数内传入一个长度大于1的列表
'''第二部分:分数运算'''
# 注意:在本部分中,分数用[分母,分子]的形式表示,如五分之一表示为[5,1]
# 约分
def red_fr(fraction):
if type(fraction) == list and len(fraction) == 2:
if coprime(fraction):
return fraction
else:
_,common_div = hcf(fraction)
for i in range(2):
fraction[i] = int(fraction[i]/common_div)
return fraction
else:
QMessageBox.warning(window, '注意', '请在该函数参数内填入一个分数,这里的分数用[分子,分母]表示,如五分之一表示为[5,1]')
return
# 注意:请在该函数参数内填入一个分数
# 通分
def den_di(fraction_list):
wrong = False
if type(fraction_list) == list and len(fraction_list) > 1:
all_deno = []
for i in fraction_list:
if type(i) == list and len(i) == 2:
all_deno.append(i[0])
else:
wrong = True
break
if not wrong:
common_deno = lcm(all_deno)
for i in fraction_list:
common_mul = int(common_deno/i[0])
for j in range(2):
i[j] *= common_mul
return fraction_list
else:
wrong = True
if wrong:
QMessageBox.warning(window, '注意', '请在该函数的参数内填入一个分数列表,这里的分数用[分子,分母]表示,如五分之一表示为[5,1]')
return
# 注意:请在该函数的参数内填入一个分数列表
# 分数加法
def fra_ad(plus_fra_list):
wrong = False
result = 0
if type(plus_fra_list) == list and len(plus_fra_list) > 1:
fraction_list = den_di(plus_fra_list)
for i in fraction_list:
if type(i) == list and len(i) == 2:
result += i[1]
else:
wrong = True
break
fraction_sum = [fraction_list[0][0], result]
return red_fr(fraction_sum)
else:
wrong = True
if wrong:
QMessageBox.warning(window, '注意', '请在该函数的参数内填入一个分数列表,这里的分数用[分子,分母]表示,如五分之一表示为[5,1]')
return
# 注意:请在该函数的参数内填入一个分数列表,该函数可算出列表中所有分数之和
# 最简分数
def simp_fr(fraction):
if type(fraction) == list and len(fraction) == 2:
if coprime(fraction):
return True
else:
return False
else:
QMessageBox.warning(window, '注意', '请在该函数参数内填入一个分数,这里的分数用[分子,分母]表示,如五分之一表示为[5,1]')
return
# 注意:请在该函数参数内填入一个分数
# 分数乘法
def fra_mult(fraction_list):
wrong = False
all_deno = []
all_mole = []
if type(fraction_list) == list and len(fraction_list) > 1:
for i in fraction_list:
if type(i) == list and len(i) == 2:
all_deno.append(i[0])
all_mole.append(i[1])
else:
wrong = True
result = []
product = 1
for i in all_deno:
product *= i
result.append(product)
product = 1
for i in all_mole:
product *= i
result.append(product)
return red_fr(result)
else:
wrong = True
if wrong:
QMessageBox.warning(window, '注意', '请在该函数的参数内填入一个分数列表,这里的分数用[分子,分母]表示,如五分之一表示为[5,1]')
return
# 注意:请在该函数的参数内填入一个分数列表,该函数可算出列表中所有分数之积
# 倒数
def opposide(fraction):
fraction_opposide = []
if type(fraction) == list and len(fraction) == 2:
fraction_opposide.append(fraction[1])
fraction_opposide.append(fraction[0])
return fraction_opposide
else:
QMessageBox.warning(window, '注意', '请在该函数参数内填入一个分数,这里的分数用[分子,分母]表示,如五分之一表示为[5,1]')
return
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
水翎稞来花幻工作室吧,7月份以后会出现一个多人合作,多个人共同制作同一个作品,那个时候如果你还没有一个比较好的工作室你就没法和别人合作,像你这样水平远远高于我的加入花幻工作室最适合了,三四个人人太少,几百个人人太多,17个人左右刚刚好
点赞0
评论