用户:THORNS查看:0 回复:2 评论:0 创建时间:2021-06-29T18:03:55
【作品展示】

【作品介绍】
Number库1.2.0版本更新公告更新时间:2021年6月29日
更新内容
1.介绍更新:为介绍内容添加了换行符,使画面更加整洁
2.第二部分新增:新增分数运算部分,包括约分、通分两个内容
3.互质数新增:新增互质数判断函数
4.报错信息优化:报错信息由窗口弹出,更简单明了
一只大聪明
2021年6月29日
【作品源代码】
import sys
from PySide2.QtWidgets import *
# 使用PySide2介绍
app = QApplication(sys.argv)
txt = ['本次更新后版本:\n1.2.0版本',
'本次更新时间:\n2021年6月29日',
'本次更新内容:\n1.更改了介绍界面,添加了换行符,使画面更加美观\n2.增加了第二部分:分数运算部分,目前有约分、通分两个功能\n3.第一部分添加了判断几个数是否为互质数的函数comprime()\n4.优化了大多数函数的报错机制,用弹窗提醒错误信息',
'作者:\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
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
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn往期版本网址
1.0.0版本(无第三方库,但是当时的最大公因数、最小公倍数还没有更新,只能求两个数的,用网页版也可以哦):https://shequ.codemao.cn/community/381285
1.0.1版本(有第三方库,time库,最大公因数、最小公倍数已经更新,具体情况见网址,如果用网页版的就把含有time库的代码删了):https://shequ.codemao.cn/community/382085
1.1.0版本(1.2.0版本的雏形,无报错信息与分数部分,其他基本一致):https://shequ.codemao.cn/community/382755
点赞0
评论