猫史档案馆


【Python作品分享】Number 库(1.3.0版本)【作品秀】

用户:THORNSTHORNS查看:3 回复:1 评论:3 创建时间:2021-06-30T15:13:59


【作品展示】

center_image

 

【作品介绍】

(肝都废了)

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


回复

上一页1 页 / 共 1下一页
水翎稞水翎稞

来花幻工作室吧,7月份以后会出现一个多人合作,多个人共同制作同一个作品,那个时候如果你还没有一个比较好的工作室你就没法和别人合作,像你这样水平远远高于我的加入花幻工作室最适合了,三四个人人太少,几百个人人太多,17个人左右刚刚好

点赞0


评论