安全矩阵

 找回密码
 立即注册
搜索
查看: 13516|回复: 49

周家敏学习日记

[复制链接]

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
发表于 2020-2-17 22:02:57 | 显示全部楼层 |阅读模式
第一章:程序设计与计算思维
1.    程序设计:
(1)步骤:
分析问题——设计算法——程序编写——对源程序进行编辑、编译和连接——运行程序,分析结果——文档编写
(2)分类:
1. 按照结构性质分类:结构化程序设计
非结构化程序设计
2.    按照用户的要求分类:过程式程序设计
非过程式程序设计
3.    按照程序设计的成分性质分类:顺序程序设计
并发程序设计
并行程序设计
分布式程序设计
4.  按照程序设计风格分类:逻辑式程序设计
函数式程序设计
对象式程序设计
2. 计算机语言:机器语言、汇编语言、高级语言
3. Python
(1)    特点:
1.可运行在多种计算机平台和操作系统中
2.自动内存回收
3.面向对象特性(object_oriented),支持多重继承(multiple inheritance)、重载(override)
4.强大的动态数据类型支持,不同数据类型相加会引发一个异常。
5.强大的类库支持,使编写文件处理、正则表达式,网络连接等程序变得相当容易。
6交互命令行模块能方便地进行小代码调试和学习。
7.可以通过C或C++编写的模块进行功能扩展。
(2)应用:
1. 系统编程,提供大量系统接口API,能方便进行系统维护和管理。
2. 图形处理,有PIL、Tkinter等图形库支持,能方便进行图形处理。
3. 数学处理,NumPy扩展提供大量与许多标准数学库的接口。
4. 文本处理,提供re模块支持正则表达式,提供SGML,XML分析模块。
5. 数据库编程,程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server、Oracle、Sybase、DB2、Mysql等数据库通信。Python自带有一个Gadfly模块,提供了一个完整的SQL环境。
6. 网络编程,提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。
7. 作为Web应用的开发语言,支持最新的XML技术。
8. 可用于多媒体应用。
9. Pygame是Python开发游戏的一个库(http://www.pygame.org
(3)编辑与环境
1.解释程序可以作为计算器使用;IDE环境
2.程序:一、print(“hello”)
      二、input:a=input("请输入一个数字:\n")
print(a)
print(a+a)

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-18 22:26:33 | 显示全部楼层
本帖最后由 Anatasha 于 2020-2-18 22:56 编辑

第二章:算法概述

一、计算机程序与算法:
1、程序的开发过程:
问题分析——算法设计——编写程序——测试程序
               \数据类型分析/
二、算法的描述:
(可用流程图、伪代码、自然语言等)
例子1:摄氏度转华氏度:
问题分析:华氏度=1.8*摄氏度+32
算法设计:输入摄氏度——计算华氏度——输出
编写程序:


测试程序:


例2:有一串随机数列,要找到这个数列中最大的数。
问题分析:逐一比较,取最大值
算法分析:创建列表——比较大小——输出最大值
编写程序:


测试程序:



三、 常用算法简介
1、简单算法:使用公式
2、复杂算法:用简单问题的解逐步逼近原始问题解,适合于计算机求解。
例子:求252和105的最大公约数
解法一:
问题分析:使用辗转相除法
算法设计:设定函数——while循环求两数求余均为0——输入数字——输出
编写程序:
   
测试:


解法二:
问题分析:欧几里得算法
算法设计:设定函数——递归p、q的最大公约数=q与p%q的最大公约数——输入——输出
编写:


测试:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-19 21:04:32 | 显示全部楼层
第三章:数据表示和计算

一、数据和数据类型的概念
1.数据的表示:数值数据、文本数据、复合类数据

2.概念:内存中存储和处理数据需要区分数据类型,不同的数据类型占用不同的字节数,并有着不同的编码和运算机制。
例:进制之间的转换:
a = int(input("输入数字:"))
print ("转换为二进制为:", bin(a))  
print ("转换为八进制为:", oct(a))
print ("转换为十六进制为:", hex(a))

3.python内置数据类型
简单数据类型:整型 int ,浮点型 float,复数 complex,布尔类型bool
序列对象:字符串str,元组tuple,列表list
其他类型:集合类型set,字典类型 dict

4.常量和变量:
标识符:为一些特定对象的命名
关键字:不可改变
例:求解三边为3厘米,4厘米,5厘米三角形面积的表达式,其中求平方根的函数为sqrt。
import math
a,b,c = 3,4,5  #同时为多个变量赋值
s = (a+b+c)/2  #再添加变量
m=math.sqrt( s * ( s-a) * (s-b) * (s-c) )
print(m) #6.0

5.动态类型:变量使用前根据中变量存放的数据不同,决定其数据类型
例:
a, b, c, d = 10,10.5,True,4+3j  #同时赋值
print(type(a), type(b), type(c), type(d))  # type() 函数可查询变量所指的对象类型
#<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-20 21:52:43 | 显示全部楼层
第三章:数据表示和计算
二、数值数据的表示与计算
1、数值数据的常量表示
整型数据int:0o123(八进制),0b123(二进制),0xff(十六进制)
浮点型数据float:小数和指数
布尔类型数据bool:Ture、False
复数类型数据complex:real+ imag(J/j后缀)
2、数值数据的计算
(1)表达式:
例:计算半径为4.5的球的体积
T = 3.1415926  #赋值
r = 4.5
V = (4/3)*T*r*r*r  #公式计算
print(V) #输出
(2)运算:
a. 运算符://:整除,%:求余,**:求乘方,!=:不等于等等
b. 例:浮点数的误差
  
#不能用==来判断是否相等,而是要检查两个浮点数的差值是否足够小,是则认为是相等的。
c. 逻辑运算:and or not
例:判断某年是否为闰年
   
3、内置函数、模块和标准库:
(1)内置函数:
#reper()将任意值转为字符串
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = ' x is ' + repr(x) + ',and y is ' + repr(y)
>>> print( s )
#round()四舍五入
>>> round(78.3456)
78.35
# len( )计算字符串的长度
>>> len("Good morning")
12
(2)非内置模块:
导入:import [模块名]或者from [模块名] import [函数名]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-21 22:29:50 | 显示全部楼层
第三章:数据的计算和表示
三、文本数据的表示和操作:
1、文本的表示:
(1)转义字符·:
\+字符可转义
如:\a响铃;\b退格;\t横向制表符;\n换行;\oyy八进制yy代表的字符
(2)字符串对象标识示例:
  #id() 函数用于获取对象的内存地址。
2、字符串类型数据的基本计算:
(1)连接和复制操作
#连接
>>>’ac’+’bd’
‘acbd’
#复制
>>>s=’ab’
>>>t=s*2
>>>print(t)
abab
(2) 索引操作
3、字符串(str)对象的方法:
S.capitalize():返回首字符大写后的字符串,S对象不变
S.strip():返回删去前后空格后的字符串,S对象不变
S.count(sub[,start[,end]]): 计算子串sub在S对象中出现的次数,start和end定义起始位置。
S.find(sub[,start[,end]]): 计算子串sub在S对象中首次出现的位置
S.join(iterable): 将序列对象中所有字符串合并成一个字符串,S对象为连接分隔符。
S.split(sep=None): 将S对象按分隔符sep拆分为字符串列表,默认为空格。
S.lower/upper():返回所有字符改小/大写后的字符串,S对象不变

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-24 22:14:58 | 显示全部楼层
第三章  数据表示和计算
批量数据表示与操作
1、批量数据的构造
(1)列表(list)、元组(tuple)、字典(dict)、集合(set)、字符串(str)
(2)序列基本操作
例:
a = input("字符串:" )
print(len(a)) #计算序列成员个数
print(a[2]) #引用序列第三个成员
print(a[2:7]) #引用序列第三个到第六个成员
print(a[2:7:2]) #引用序列第三个到第七个,间隔2的子序列
测试结果:
  
2、元组和列表:
(1)元组:
>>>t7=tuple('Python')  #tuple()可以生成一个空的元组,也可以将字符串、列表、集合等转化为元组
>>> t7
('P', 'y', 't', 'h', 'o', 'n')
>>>t7[2]  #元素访问
‘t’
(2)列表:【list()与tuple()相似用法】
例:家庭用电量维护和分析
t = [ ]  #初始列表,盛放月份用电量数据
t.append(271)   #在列表t尾部添加对象
t1 = [151,78,92,83,134,357,421,210,88,92,135]
t.extend (t1)  #将列表t1的表项扩充到t
t.remove(421)  #移除为“421”的表项
t.insert(7,425)  #在第“7+1”处添加表项
print(t)
Max = t.index(max(t))+1  #求取最大值
print(Max)
s = t.copy()  #返回t的备份的新对象
s.sort() #在列表中从高到低排列
print(s)
s.reverse() #倒置列表,以求最大的三个月份用电量值
m1,m2,m3=t.index(s[0])+1,t.index(s[1])+1,t.index(s[2])+1 #计算某值在元组中出现的次数
print(m1,m2,m3)
测试结果:
  


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-25 22:57:00 | 显示全部楼层
第四章 基本控制结构的程序设计
1、顺序结构
2、分支结构:
(1)简单分支与双分支:
例如:
numA=3
numB=4
if numA <= numB:
   print ("numB是比较大的数")  #简单分支
else:
   print ("numA是比较大的数")  #双分支
(2)分支嵌套与多分支
例如:求三个数最大值:
解1:分支嵌套
numA=3
numB=4
numC=5
if numA <= numB:
   if numC<numB:
       print ("numB是最大的数")
   else:
       print ("numC是最大的数")
else:
   if numC<numA:
       print ("numA是最大的数")
   else:
        print ("numC是最大的数")
解2:多分支
numA=3
numB=4
numC=5
if  numA>=numB and numA>=numC:
   print("numA是最大值")
elif numB>=numC and numB>=numA:
   print("numB是最大值")
else:
    print("numC是最大值")
3、循环结构:
(1)for循环语句:
例:输出武将名字
name = ["李元霸","宇文成都","秦琼"]
for i in name:
print("武将姓名:", i )
(2)range()函数:遍历数字序列
例子:鸡兔同笼,35个头,94只脚。
for x in range(1,23):  #兔子数量极端化
    y= 35 - x
   if 4*x + 2*y == 94:   #二元一次方程求解
       print('兔子有%s只,鸡有%s只'%(x, y))
(3)while循环:
例:已知银行存款利率为1.9%,编写程序计算并输出需要存多少年,10000的存款本金才会连本带利翻一番
m = 10000
while m<20000:
      years+=1
      m=m*(1+0.019)
print(years,"年以后,存款会翻番")
(5)应用:
例:输出星号
for i in range(1,11):
   s=""
   for j in range(0,i):
       s +="*"
   print (s)
结果:
*
**
***
****
*****
******
*******
********
*********
**********

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-26 21:56:01 | 显示全部楼层
本帖最后由 Anatasha 于 2020-2-26 22:01 编辑

第四章:基本控制结构的程序设计
3、约瑟夫环:
例:一共有三十个人,从1-30依次编号。每个人开始报数,报到9的人自动出列,当有人出列后,从后一个人开始重新从1报数,以此类推,求出列的前十五个人的号码。
list=[x for x in range(1,31)]
for x in list:
print(x)
del_number=-1
print("被剔除:")
for i in range(1,15):    #生成编号
  j=0;
  k=del_number+1
  while j<9:
    if(k==len(list)):
      k=0
    if(list[k]!=-1):
      j=j+1
    k=k+1
   del_number = k-1
  print(list[del_number])
  list[del_number]=-1    #用-1标记被踢出的位置

4、字符串数据操作:
(1)字符串和list的相互转化:
例:某字符串mystr存储的内容是一串数字“0122202341020303”,现在要求把该数奇数位置上的数字用‘-’代替。
mystr="0122202341020303"
li=list(mystr)
for i in range(1,len(li),2):  #步长为2
     li='-'
mystr="".join(li)   #join将列表转化为字符串
print(mystr)
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-2-27 22:07:44 | 显示全部楼层
第四章:基本控制结构的程序设计
4、字符串数据操作:
(2)字符查找:
例:在一个输入的字符串中查找是否有字符“梦”存在。
while True:
   str=input("请输入:(quit退出)\n")
   if(str=="quit"):
       break
   else:
       find=False
       for i in str:
         if i=="梦":
              find=True
              break
       if find:
           print("找到")
       else:
           print("没有找到")
结果:
      
(3)字符串遍历:
例:输入任何一个数字,如果数字中的每位数字之和(最高位除外),等于最高位上的数,则输出找到了,否则输出找不到。
while True:
   sum=0
   str=input("请输入一个数字(quit退出)\n")
   if(str=="quit"):
       break
   else:
       for i in range(1,len(str)):
         sum=sum+int(str)
       if sum==int(str[0]):
           print("找到")
       else:
           print("没找到")
结果:
      
(4)字符串截取:
例:输入产品编号,输出生产日期(编号=两位数字+出厂日期)
while True:
    str=input("请输入一个产品编码quit退出)\n")
   if(str=="quit"):
       break
   else:
       year=str[2:6]+"年"
       month=str[6:8]+"月"
       day=str[8:10]+"日"
       print("商品的出厂日期是"+year+month+day)
结果:
      

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-3-1 23:04:22 | 显示全部楼层
第三章  数据表示和计算
补充集合:
1、 列表去重:
list = [1,1,1,2,2,3,4,4]
s = set(list)  #可变合集
print(s)
2、 集合运算:
s1 = {'a'}
s2 = {'b','c'}
s1 |= s2 #将s2并入s1
print(s1)
s3 = s1 | s2  #求其并集
print(s3)
s4 = s1 & s2  #求其交集
print(s4)
s5 = s1 - s2  #求其差集
print(s5)
3、集合对象的方法:
s1.update(s2):将s2的元素并入s1
s1.union(s2 ):s1|s2,返回一个新的集合对象
s1.difference(s2):s1-s2,返回一个新的集合对象
s1.intersection(s2):s1&s2,返回一个新的集合对象
4、应用:
两个小队举行活动评测投票,按队员序号投票,第一小队队员序号为1、2、3、4、5,第二小队队员的序号为6、7、8、9、10,可以对投票数据进行分析,投票数据为1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,5,9(建立集合s2表示第一小队队员序号,s3表示第二小队队员序号)
s1={1,5,9,3,9,1,1,7,5,7,7,3,3,3,1,5,7,4,4,5,4,9,5,5,9}
s2={1,2,3,4,5}
s3={6,7,8,9,10}
print(s1) #集合去重复后表示获得选票的队员
a = s1 - s3 #第一队获得票
print(a)
b = s2-(s1-s3)  #第一队没有获票
print(b)
c = s1-s2   #第二队获得票
print(c)
d = s3-(s1-s2)  #第二队没有获票
print(d)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 01:30 , Processed in 0.025146 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表