python算法

学习Python第六天

纵然是瞬间 提交于 2019-12-05 17:04:19
前两天浏览了些基础中的基础,譬如如何安装Anacnoda,Notepad++,譬如定义变量,使用函数和方法等等- - 没装pycharm是因为需要破解,以后再说吧qwq 接下来两天,开始做题,也是很拼,算法需要再学习,算法好难- - 于是来记录下,自己做过的目前来说比较困难但已经解决的题: 题目描述: 国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续 n 天每天收到 n 枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。 你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。 一,两个循环 1 n = int(input()) 2 i = 1 3 j = 1 4 kb = 1 5 sum = 0 6 while i <=n: 7 sum =+ kb 8 if i == j: 9 kb += 1 10 j = j + k 11 i+=1 12 print(sum) 二,更直观一些 1 n = int(input()) 2 kb = 0 3 day = 0#获得同等金币的天数 4 sum = 0 5 for i in range

python 进程

自作多情 提交于 2019-12-05 16:33:53
理论 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。[3] 进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况

Leetcode两数相加python(2)

╄→尐↘猪︶ㄣ 提交于 2019-12-05 12:34:30
先贴上题目 给定两个 非空 链表来表示两个非负整数。位数按照 逆序 方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。 这个题目会在前面写一些变量的定义,给你的代码开个头,上面写的是 type l1: ListNode 因为在python里面没有链表的定义,我以为他说的是list,所以就写了一个,如果讲题目中的链表改为list是可以满足条件输出的。 class Solution: def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ l1.reverse()#这行代码运行后,再看l1就是已经逆序的了 l2.reverse() l3=int(''.join(str(i) for i in l1))+int(''.join(str(i) for i in l2)) l4=[int(char) for char in str(l3)]#这里可以用map,list(map(int, str(l3))) l4.reverse() return l4 但是提交后发现 这时候发现ListnNode并非list,再倒回去看,已经给你链表的定义,这题做的就是不对

2018-2019信息安全专业导论第八周教材内容总结——20191205张潇

我们两清 提交于 2019-12-05 12:26:21
计算机概论第九章的教材内容总结: 1.本周了解了形参和实参,形参又有值参和引用参数。 2.学习了面向对象设计,它有四个阶段,分别是头脑风暴,过滤,场景及责任算法。了解了 对象和类的概念。 3.更加了解了编译器与解释器,它们的区别是:编译器是将程序翻译为机器码,而解释器翻 译后会立即执行该代码。 4.了解了范型,有两种主要的范型:命令的和声明的,每种中又有好多的子范型。 5.初步了解了一些高级语言的不同之处,如:Python中可以用缩进来表示代码块。 6.上周存在的小错误: 原因分析:自己由于粗心,没有好好浏览书上面的内容,导致出错的,下次会注意。 来源: https://www.cnblogs.com/zhangxiaoblog/p/11925038.html

2019-2020 20191302《信息安全导论》第八周学习总结

情到浓时终转凉″ 提交于 2019-12-05 12:21:03
教材重点总结 面向对象设计的重点是确定问题的对象,并根据对象的属性和行为把他们抽象成类,分解的四个阶段。 1、集体讨论:为确定问题中的类进行第一次讨论。 2、过滤:检查提出的类。 3、场景:确定每个类的责任。 4、责任算法:为每个责任编写算法。 汇编器可以把汇编语言程序翻译成机器码。 编译器可以把用高级语言编写的程序翻译成汇编语言。 程序中的每个变量都有自己的数据类型。 存在多种高级程序设计语言的模型,分为命令式或声明式 云班课作业完成情况 自己无法独立完成四则运算,只能去网上找相关的程序,也不能完全看懂程序,明白自己python水平还差得多,还要努力。相信自己总有一天能独立完成这样的编程任务的,我会在以后对python的深入学习中以这个程序为例,深入了解python的语法等知识。 来源: https://www.cnblogs.com/dongjiashuai/p/11924826.html

关于Python Profilers性能分析器

老子叫甜甜 提交于 2019-12-05 11:29:42
1. 介绍性能分析器 profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述。Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats。这些分析器提供的是对Python程序的确定性分析。同时也提供一系列的报表生成工具,允许用户快速地检查分析结果。 Python标准库提供了3个不同的性能分析器: cProfile,推荐给大部分的用户,是C的一个扩展应用,因为其合理的运行开销,所以适合分析运行时间较长的。是基于lsprof。 profile,一个纯python模块,它的接口和cProfile一致。在分析程序时,增加了很大的运行开销。如果你想扩展profiler的功能,可以试着继承这个模块 hotshot, 一个试验性的c模块,关注减少分析时的运行开销,但是是以需要更长的数据后处理的次数为代价。不过这个模块不再被维护,也有可能在新的python版本中被弃用。 2. 使用方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 def foo(): sum = 0 for i in range

python-特征/原则/设计模式

☆樱花仙子☆ 提交于 2019-12-05 11:21:15
面向对象总结: 面向对象 概述 面向过程:关心解决问题的步骤(实现)。 算法 + 数据结构 面向对象:关心解决问题的人。 对象 + 交互 抽象:从多个事物中,舍弃个性非本质的特征, 抽离出共性与本质的过程。 类和对象 对象:大杯子 小杯子 中杯子 具体的 实例(个体) 类:杯子(数据:高度 行为:盛水) 抽象的 概念(类别) 成员: 实例成员(变量、方法):对象的 类成员(变量、方法):大家的 静态方法:略 三大特征: 封装:【分】 分而治之、变(行为)则疏之. 标准:高内聚低耦合 继承:【隔】抽象 --> 统一 --> 隔离 多态:【执】重写(覆盖) 通过调用父,执行子。 六大原则: 开闭原则:(目标) 增加新功能,不修改客户端代码. 单一职责:一个有且只有一个改变的原因. 依赖倒置:调用父(稳定、抽象),不要调用子(多变,具体). 组合复用:不要用继承(是一种)复用,多用组合(有一个)复用。 组合关系连接客户端代码与多变的功能 人 火车/飞机..等交通工具 员工管理器 程序员/测试员..等员工 继承关系抽象多变的功能 员工 --> 程序员/测试员 里氏替换:看见爸爸可以传递儿子 儿子替换爸爸后依然可以工作(扩展重写) 迪米特法则:低耦合 单列模式: class A: #同一个对象,可修改属性数据 后续实例化属性数据,相当于修改的对象都是第一个对象 多个变量指向一个对象 def

Python实现的几个算法

青春壹個敷衍的年華 提交于 2019-12-05 09:37:48
一、冒泡排序 arr = [5,3,1,2,4] n = len(arr) for i in range(n - 1): for j in range(n - 1 - i): print(i,j) if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] print(arr) print(arr) arr为要排序的列表 该代码实现的分析过程 这是我在本子上的具体推导过程。 需要注意的是,嵌套for循环,会先把子循环里的i执行到条件结束后再进行外循环的i值变量 即当i = 0的时候, j第一次循环为0. j=0的代码执行结束后,j = 1,i=0不变 然后j=2,j=3, 因为range(n-1-i),n=5,即为range(4) ---->0,1,2,3。 执行结束后,i 才会变成1.再次 进入j循环。 j = range(n-1-1) = range(3) ----->0,1,2 具体的推到过程图上很清晰易懂 二、移动数组 输入 :[1,2,3,4,5,6,7] k = 3 输出 : [5,6,7,1,2,3,4] k = 3 arr = [1, 2, 3, 4, 5, 6, 7] lens = len(arr) k = k % lens #因为K不一定小于lens,所以当k>lens时,位移k

python高阶函数的使用

点点圈 提交于 2019-12-05 08:45:05
python高阶函数的使用 [TOC] 1、map Python内建了map()函数,map()函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素上,并把结果作为新的Iterator返回。 举例说明,比如我们有一个函数f(x)=x*2,要把这个函数作用在一个list[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现。 >>> def f(x): ... return x*2 ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list(r) [2, 4, 6, 8, 10, 12, 14, 16, 18] map()传入的第一个参数是f,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。 你可能会想,不需要map()函数,写一个循环,也可以计算出结果: L = [] for i in [1, 2, 3, 4, 5, 6, 7, 8, 9]: L.append(f(i)) print(L) 的确也可以,但是,从上面的循环代码,能一眼看明白”把f(x)作用在list的每一个元素并把结果生成一个新的list“吗? 所以,map()作为高阶函数

脚本代码混淆-Python篇-pyminifier(1)

大城市里の小女人 提交于 2019-12-05 05:49:36
前言 最近研究了一下脚本语言的混淆方法,比如 python,javascript 等。脚本语言属于动态语言,代码大多无法直接编译成二进制机器码,发行脚本基本上相当于暴露源码,这对于一些商业应用是无法接受的。因此对脚本代码进行加固,成为很多应用的首选。代码加固的一项措施是代码混淆,增加逆向人员阅读代码逻辑的难度,拖延被破解的时间。 今天讲解一下Python代码的混淆方法,Python代码一般用作web,提供服务接口,但也有一些桌面的应用,这一部分就需要对代码进行混淆保护。以一个开源项目pyminifier (https://github.com/qiyeboy/pyminifier)来说明混淆的技巧方法,这个项目已经有4年没更新,有一些bug,但是依然值得我们学习和入门。 项目结构 框架详情: analyze.py - 用于分析Python代码 compression.py - 使用压缩算法压缩代码 minification.py - 用于简化Python代码 obfuscate.py - 用于混淆Python 代码 token_utils.py - 用于收集Python Token    从项目代码中,可以看到pyminifier的混淆方法是基于Token的,即基于词法分析,假如大家之前做过混淆的话,这应该属于混淆的初级方案,因为这样的混淆并不会修改代码原有的逻辑结构。