python缩进和二维列表的解包
这两天博主遇见了一道题目 如下:
现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。
输入
第一行给出整数M(0<M<10)代表多少组测试数据
每组测试数据第一行给你N,代表该组测试数据的数量。
接下来的N个数为要测试的数据,每个数小于1000
输出
每组测试数据结果占一行,输出给出的测试数据的所有素数和
输入
3
5
1 2 3 4 5
8
11 12 13 14 15 16 17 18
10
21 22 23 24 25 26 27 28 29 30
输出
10
41
52
博主在写的过程中是这么想的 既然要素数求和 那就要先求素数 用一些代码求素数(1不是素数)
然后进行第二步 规范输入输出
这里的多组输入我选择用map直接给列表a传参 这个方法我是从学长那学到的 。传参,筛选出素数后求和 把最后结果当成一个列表存进大列表中 。这里博主想用一个二维列表 ,这样就可以存储上多组数据并一起输出, 最后用解包的办法把二维列表里的一维列表遍历出来 。
(我对于解包了解不是太全面 欢迎大神补充 )
这是我第一次的代码
from math import sqrt m = 0 allnum = [] M = int(input()) a = [] # 进来的所有数 while M > 0: M -= 1 N = int(input()) a[0:] = map(int, input().split()) b = [] # 每一组求出的素数 for r in a: if r == 1: continue for i in range(2, int(sqrt(r)) + 1): if r % i == 0: break else: b.append(r) allnum.append([sum(b)]) for r in allnum: print(*r)
但是我在这里遇见了一个问题 我在测试过程中 先一组一组测试 发现没有问题 当我两组一起测试时发现 二维列表里只有一组数据 就是最后一组数据 第一组数据被自动覆盖了 我以为是存储这些数据的b列表位置的错误 但我更改b列表以后还是无法达到题目格式输出 。最后我做了如图调整
from math import sqrt m = 0 allnum = [] M = int(input()) a = [] # 进来的所有数 while M > 0: M -= 1 N = int(input()) a[0:] = map(int, input().split()) b = [] # 每一组求出的素数 for r in a: if r == 1: continue for i in range(2, int(sqrt(r)) + 1): if r % i == 0: break else: b.append(r) allnum.append([sum(b)]) for r in allnum: print(*r)
再测试时 已经可以格式化输出了 。
这里,在素数求和时我对代码进行了一个优化,引入了数学开平方根的方法
总结 :
1.之前只听python缩进严格 这是我第一次亲身经历 python缩进不同 结果不同 这是第一次让我切身体会到python缩进的严格 以后一定会多加注意
2.其实这里可以不用多组输出直接计算完毕后输出也可以 我这么做有些多此一举了 当时以为必须最后输入完毕才允许输出 其实改成如下也可以通过
from math import sqrt m = 0 allnum = [] M = int(input()) a = [] # 进来的所有数 while M > 0: M -= 1 N = int(input()) a[0:] = map(int, input().split()) b = [] # 每一组求出的素数 for r in a: if r == 1: continue for i in range(2, int(sqrt(r)) + 1): if r % i == 0: break else: b.append(r) sumnum=sum(b) print(sumnum)
但是很尴尬 优化代码的目的就是减少时间或者空间或者两者 但是这样改了之后 时间空间都增多了一丢丢 不知道为什么 希望有大神来解答一下。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
为什么道熵分布式存储是PACS存储的更优选择
前言 道熵分布式存储是业界率先实现无人值守自动化运维与数据自修复的分布式存储,采用双重RAID数据保护机制,具备高容错的Fail-in-Place特性,是PACS医疗影像存储的更优选择。 一、医疗PACS影像存储现状 医院存储的数据80%-85%来自于影像数据,随着医疗影像设备的激增、拍片设备单次拍片量的增加,以及拍片设备分辨率的不断提高,医院的医疗PACS数据量预计每年增长15%,五年翻一番,并呈加速增长的态势。PACS系统所收集的B超、X射线、CT、核磁等影像数据飙升,三甲综合性医院或胸科、肺科、骨科等三甲专科医院,一年的新增拍片量在50TB ~ 60TB。并且,根据国家电子病历保存相关规定,医疗机构保管保存医疗影像数据时间要求不少于15年。无论是从业务发展还是合规要求方面,医疗影像数据的存储都对存储系统提出了更高需求。 目前医院的医疗PACS数据普遍采用传统阵列存储FC SAN或NAS,并采用在线、近线、离线的三级存储架构。这种PACS存储架构普遍面临以下问题: 1、性能/容量扩展困难 PACS影像的典型特征是大部分文件都是小文件,其中MR文件平均大小为60KB左右;CT文件平均...
- 下一篇
树莓派opencv手势识别点亮led灯或响蜂鸣器 (附完整代码)
文章目录 前言 一、树莓派引脚介绍 1.1引脚设置 二、代码书写 2.1引入库 2.2示例代码点亮led 响蜂鸣器 三完整代码 图片 前言 材料:树莓派 摄像头 SG90舵机两个 PCA9685拓展板 led小灯 蜂鸣器模块 一、树莓派引脚介绍 树莓派引脚对照表 可以看到一共有三种定义方式 分别是Wiring Pi编码,BCM编码和BOARD物理引脚编码。 1.1引脚设置 在最开始终端输入 sudo raspi-config 进入设置 后找到 Interfacing Options 进入 找到 Remote GPIO 开启GPIO 二、代码书写 2.1引入库 在最开始导入库 import RPi.GPIO as GPIO #1导入引脚库 GPIO.setmode(GPIO.BOARD) # 2定义引脚方式 此处为BOARD编码 GPIO.setup(channel, GPIO.OUT) # 3建立通道 该函数需要两个参数 第一个为引脚编号 第二个为模式定义 #此处为输出 GPIO.output(7, True)#4 驱动通道 GPIO.cleanup()#5清除 释放资源 2.2示例代...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 2048小游戏-低调大师作品
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果