数字统计练习

简介: 数字统计练习

本人研究生阶段,Python程序设计与科学计算的大作业

基本要求

以列表形式输入一组数字(整数),统计其中的正数个数、负数个数、零个数、奇数个数(正负总共的)、偶数个数(正负总共的,也包括零),并打印这些统计结果;

高级要求

在上述输入的一组数字中,以加‘+’和减‘-’进行组合运算,找出所得运算结果中绝对值最小的一种组合方式,并将这组数字连同加减运算符号、以及加减运算结果一同打印出来。

实例

例如,输入列表 [2, -3, 5, 6], 使这些数绝对值最小的一个组合方式是:+,-,+, 组合结果是:0,则程序将打印出: 2 + -3 – 5 + 6 = 0

Python实现

import itertools
# 进行数字统计的函数
def number_count(user_input):
    # 统计正数
    positive_num = 0
    # 统计负数
    negative_num = 0
    # 统计零的个数
    zero_num = 0
    # 奇数个数
    odd_num = 0
    # 偶数个数
    even_num = 0
    for i in user_input:
        if i > 0:
            positive_num = positive_num + 1
        if i < 0:
            negative_num = negative_num + 1
        if i == 0:
            zero_num = zero_num + 1
        if i % 2 == 0:
            even_num = even_num + 1
        if i % 2 != 0:
            odd_num = odd_num + 1
    print("正数的个数是{},负数的个数是{},零的个数是{},奇数的个数是{},偶数的个数是{}.".format(
        positive_num, negative_num, zero_num, odd_num, even_num))
    return True
def calc(user_input):
    # 列表长度
    list_len = len(user_input)
    # 计算正负号的长度
    symbol_len = list_len - 1
    # 列出正负号的所有可能性
    flag = 0
    result_list = []
    j = 0
    i_flag = 0
    flag_dic = {}
    # xxx = itertools.product('+-', repeat=symbol_len)
    for i in itertools.product('+-', repeat=symbol_len):
        # print(i)
        flag_dic[i_flag] = i
        i_flag = i_flag + 1
        # for k in i:
        # for j in range(len(user_input)):
        for k in i:
            if j == (len(user_input) - 1):
                break
            if (k == '+') & (j == 0):
                flag = user_input[j] + user_input[j+1]
            if (k == '-') & (j == 0):
                flag = user_input[j] - user_input[j+1]
            if (k == '+') & (j != 0):
                flag = flag + user_input[j+1]
            if (k == '-') & (j != 0):
                flag = flag - user_input[j+1]
            j = j + 1
        result_list.append(flag)        
        flag = 0
        j = 0
        # result_list.append(flag)
    # print(flag)
    # print(result_list)
    # print(flag_dic)
    for x in range(len(result_list)):
        result_list[x] = abs(result_list[x])
    print("绝对值最小的组合结果是{}".format(min(result_list)))
    # 用来存储最小绝对值的下标
    flag2 = 0
    for x in range(len(result_list)):
        if result_list[x] == min(result_list):
            flag2 = x
    for q in flag_dic.keys():
        if q == flag2:
            stry = ''
            flag3 = 0
            for t in range(len(user_input)):
                if t == len(user_input) - 1:
                    stry = stry + ' ' +str(user_input[t])
                else:
                    stry = stry + ' ' + str(user_input[t]) + ' ' + str(flag_dic[q][flag3])
                    flag3 = flag3 + 1
            stry = stry + ' = ' + str(min(result_list))
            print("运算公式可以表示为:{}".format(stry))
    # print("运算公式可以表示为:{}".format())
    return True
if __name__ == "__main__":
    user_input = eval('['+input("请输入一组数字以逗号隔开:")+']')
    number_count(user_input)
    calc(user_input)

实现截图

image.png

相关文章
|
IDE Java 开发工具
导入jar包后无法找到`com.aliyun.teaopenapi.models.Config`这个类
导入jar包后无法找到`com.aliyun.teaopenapi.models.Config`这个类
1803 3
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
|
关系型数据库 数据库 数据安全/隐私保护
Docker-10:Docker安装PostgreSQL
通过容器化Docker 安装 postgrel
6142 0
Docker-10:Docker安装PostgreSQL
|
机器学习/深度学习
基于RBF-PID控制器的风力发电系统simulink建模与仿真
本研究基于MATLAB2022a,使用Simulink对风力发电系统进行了建模与仿真,旨在对比PID与RBF-PID控制器的性能。RBF-PID控制器通过引入径向基函数神经网络,实现了PID参数的在线自适应调整,显著提升了对非线性风电系统的控制效果。仿真结果显示,相较于传统PID,RBF-PID能更有效地应对系统不确定性和参数变化,提高系统的鲁棒性和稳定性。
|
安全 Java 数据安全/隐私保护
|
机器学习/深度学习 安全 网络协议
网络安全公开数据集Maple-IDS,恶意流量检测数据集开放使用!
【8月更文挑战第29天】Maple-IDS 是东北林业大学网络安全实验室发布的网络入侵检测评估数据集,旨在提升异常基础入侵检测和预防系统的性能与可靠性。该数据集包含多种最新攻击类型,如 DDoS 和 N-day 漏洞,覆盖多种服务和网络行为,兼容 CIC-IDS 格式,便于直接使用或生成 csv 文件,适用于多种现代协议。
1132 1
|
算法 Java 开发者
深入理解死锁的原因、表现形式以及解决方法,对于提高Java并发编程的效率和安全性具有重要意义
【6月更文挑战第10天】本文探讨了Java并发编程中的死锁问题,包括死锁的基本概念、产生原因和解决策略。死锁是因线程间争夺资源导致的互相等待现象,常由互斥、请求与保持、非剥夺和循环等待条件引起。常见死锁场景包括资源请求顺序不一致、循环等待等。解决死锁的方法包括避免嵌套锁、设置锁获取超时、规定锁顺序、检测与恢复死锁,以及使用高级并发工具。理解并防止死锁有助于提升Java并发编程的效率和系统稳定性。
698 0
|
XML Java 数据格式
AOP:组合使用多个切入点表达式(Combining pointcut expressions)
AOP:组合使用多个切入点表达式(Combining pointcut expressions)
|
机器学习/深度学习 自然语言处理 TensorFlow
Long Short-Term Memory,简称 LSTM
长短期记忆(Long Short-Term Memory,简称 LSTM)是一种特殊的循环神经网络(RNN)结构,用于处理序列数据,如语音识别、自然语言处理、视频分析等任务。LSTM 网络的主要目的是解决传统 RNN 在训练过程中遇到的梯度消失和梯度爆炸问题,从而更好地捕捉序列数据中的长期依赖关系。
416 4
|
域名解析 C# 数据安全/隐私保护
阿里云域名新注、续费、转入收费政策及价格表(2023最新版价格)
阿里云的域名注册业务由万网提供接口,因此,也可以说目前阿里云是目前国内最大的域名注册商,阿里云域名价格表包括域名注册、域名续费及域名转入价格,不同时期的收费价格是不一样的,例如2022年在阿里云注册.com域名的新注价格是63元,续费是75元,到了2023年,由于各大注册商纷纷都涨价了,阿里云也涨到了69元,续费价格也上涨到了79元,下面是小编整理的2023年最新版的阿里云域名新注、续费、转入收费价格表。
11637 19
阿里云域名新注、续费、转入收费政策及价格表(2023最新版价格)