Python巧算s=a+aa+aaa+…………+aa…a的和

5 篇文章 0 订阅
4 篇文章 0 订阅
本文介绍了一个Python函数,用于解析字符串中的数学表达式,特别是涉及加减法的整数部分,同时处理浮点数并进行整数运算。代码中包含`defparse_str_number`和`remove_font_sign`等函数,用于处理字符串输入和符号转换。
摘要由CSDN通过智能技术生成

数学推导

求和公式

S=\frac{10^{^{n+1}}-9n-10}{81}

完整代码

def parse_str_number(str_):
    def remove_font_sign(ifm_, minus_number_, str__):
        if isinstance(str__, str) and isinstance(minus_number_, int) and isinstance(str__, str):
            cast_str_ = str(str__)
            while cast_str_[0] == '+' or ifm_:
                cast_str_ = cast_str_[1:len(cast_str_)]
                if ifm_:
                    minus_number_ += 1
                ifm_ = cast_str_[0] == '-'
            return {'minus_number_': minus_number_, 'str__': cast_str_}
        return None

    if isinstance(str_, str):
        cast_str = str(str_)
        if not cast_str:
            return None
        minus_number = 0
        if cast_str == "-" or cast_str == "+":
            return None
        removed = remove_font_sign(cast_str[0] == '-', minus_number, cast_str)
        minus_number = removed.get('minus_number_')
        cast_str = removed.get('str__')
        while cast_str[0] == '(' and cast_str[len(cast_str) - 1] == ')':
            cast_str = cast_str[1:len(cast_str) - 1]
            removed = remove_font_sign(cast_str[0] == '-', minus_number, cast_str)
            minus_number = removed.get('minus_number_')
            cast_str = removed.get('str__')
        if ((cast_str[0] == '(' and cast_str[len(cast_str) - 1] != ')') or
                (cast_str[0] != '(' and cast_str[len(cast_str) - 1] == ')')):
            return None
        removed = remove_font_sign(cast_str[0] == '-', minus_number, cast_str)
        minus_number = removed.get('minus_number_')
        cast_str = removed.get('str__')
        if cast_str[0] == '.':
            cast_str = "0" + cast_str
        split_number = cast_str.split('.', 3)
        if len(split_number) > 2:
            return None
        for each_part in split_number:
            if not each_part.isdigit():
                return None
        if minus_number % 2 == 1:
            cast_str = "-" + cast_str
        return cast_str
    return None


def head_float_int_part(float_str):
    if not isinstance(float_str, str):
        return None
    return float_str.split(".")[0]


def assert_float(num_str: str | int):
    if not isinstance(num_str, str):
        return False
    int_part = head_float_int_part(num_str)
    float_num_str = float(num_str)
    if float_num_str != math.floor(float_num_str):
        print("您输入了浮点数", num_str, "将按整数", int(int_part), "运算")
    return int_part


def main():
    input_contexts = []
    info_s = ["Enter a[1, 9]:", "Enter n:"]
    logic = [lambda n: n in range(1, 10), lambda n: n > 0]
    for i in range(len(info_s)):
        input_contexts.append("")
        ic = ""
        while (not ic) or (ic and not logic[i](int(ic))):
            ic = parse_str_number(input(info_s[i]))
            if ic:
                input_contexts[i] = assert_float(ic)
                break
            ic = head_float_int_part(ic)
    digit = input_contexts[0]
    times = int(input_contexts[1])
    print((10 ** (times + 1) - 9 * times - 10) // 81 * int(digit))


if __name__ == "__main__":
    main()

运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值