201903
20190305(2)
c语言:太底层,(人很难理解,计算机很好理解。) 最底层的:汇编语言
python:比较高级语言()
Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。
那Python是一种什么语言?
首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。
比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。
代码量少,运行速度慢。
所以Python是一种相当高级的语言。
你也许会问,代码少还不好?代码少的代价是运行速度慢,C程序运行1秒钟,Java程序可能需要2秒,而Python程序可能就需要10秒。
那是不是越低级的程序越难学,越高级的程序越简单?表面上来说,是的,但是,在非常高的抽象计算中,高级的Python程序设计也是非常难学的,所以,高级程序语言不等于简单。
但是,对于初学者和完成普通任务,Python语言是非常简单易用的。连Google都在大规模使用Python,你就不用担心学了会没用。
用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦。
Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。
如果你是小白用户,满足以下条件:
会使用电脑,但从来没写过程序;
还记得初中数学学的方程式和一点点代数知识;
每天能抽出半个小时学习。
Python简介
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。这是最近10年最常用的10种编程语言的变化图。
Python解释器:将python代码解释给电脑看的一种工具。
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
1.安装python解释器
CPython
当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器。
20190312(2)
扩展名文件:
python的安装
1.直接安装,勾选 add the python 即可
在dos命令窗口输入python命令 —查看python是否安装好。
如果出现:
说明安装成功,Python 3.6.4表示python的版本。也可以通过 python –V ·r查看python版本。
“>>>” 表示:已经进入了python的交互界面。就可以在这写python代码了。
如何退出: exit() 或者 ctrl+z 然后enter
在dos命令窗口下面,输入 python或者pip 命令。系统首先通过系统环境变量去找python.exe的路径,如果找到了上面的python.exe的路径。那么就能识别pip这个命令(python命令也相同。)
第一个 Python程序
在写代码之前,请千万不要用“复制”“粘贴”把代码从页面粘贴到你自己的电脑上。写程序也讲究一个感觉,你需要一个字母一个字母地把代码自己敲进去,在敲代码的过程中,初学者经常会敲错代码,所以,你需要仔细地检查、对照,才能以最快的速度掌握如何写程序。
什么是变量?请回忆初中数学所学的代数基础知识:
设正方形的边长为 a ,则正方形的面积为 a x a 。把边长 a 看做一个变量,我们就可以根据
a 的值计算正方形的面积,比如:
若a=2,则面积为 a x a = 2 x 2 = 4;
若a=3.5,则面积为a x a = 3.5 x 3.5 = 12.25。
在计算机程序中,变量不仅可以为整数或浮点数,还可以是字符串,因此, name 作为一个
变量就是一个字符串
tips:
ctrl+s :保存
ctrl+c :复制
ctrl+v: 粘贴
常量:
所谓常量就是不能变的变量,比如常用的数学常数 π 就是一个常量。在 Python 中,通常用全部大写的变量名表示常量
PI = 3.1415
但事实上 PI 仍然是一个变量,Python 根本没有任何机制保证 PI 不会被改变,所以,用全
部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量 PI 的值,也没人
能拦住你
最后解释一下整数的除法为什么也是精确的
总结:
整数除法永远是整数,即使除不尽。要做精确的除法,只需把其中一个整数换
成浮点数做除法就可以
无论整数做除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。
1.Python 支持多种数据类型。
2.在计算机内部,可以把任何数据都看成一个“对象”。
3.变量就是在程序中用来指向这些数据对象的。
4.变量赋值就是把数据和变量给关联起来。
字符串和编码
字符编码:
首先我们知道,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题!
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理,最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大整数就是255(二进制11111111 = 十进制255),如果要表示更大的整数,就必须用更多的字节。
比如两个字节可以表示的最大整数是65535,4 个字节可以表示的最大整数是4294967295
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些字符,这个编码表被称为ASCII编码,比如大写字母A的编码时候65
小写字母a的编码是97.
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和 ASCII 编码冲
突,所以,中国制定了 GB2312 编码,用来把中文编进去
你可以想得到的是,全世界有上百种语言,日本把日文编到 Shift_JIS 里,韩国把韩文编到 Euc-kr 里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的 文本中,显示出来会有乱码。
因此,Unicode诞生,Unicode把所有语言都统一到一套编码里,这样就不会再出现乱码
Unicode 标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要 4 个字节)。现代操作系统和大多数编程语言都直接支持 Unicode
现在,捋一捋 ASCII 编码和 Unicode 编码的区别:ASCII 编码是 1 个字节,而 Unicode 编码通常是 2 个字节。
字母 A 用 ASCII 编码是十进制的 65,二进制的 01000001;
字符 0 用 ASCII 编码是十进制的 48,二进制的 00110000,注意字符’0’和整数 0 是不同的;
汉字中已经超出了 ASCII 编码的范围,用 Unicode 编码是十进制的 20013,二进制的
01001110 00101101。
你可以猜测,如果把 ASCII 编码的 A 用 Unicode 编码,只需要在前面补 0 就可以,因此,A 的 Unicode 编码是 00000000 01000001。
新的问题又出现了:如果统一成 Unicode 编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用 Unicode 编码比 ASCII 编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把 Unicode 编码转化为“可变长编码”的 UTF8 编码 。
UTF-8 编码把一个 Unicode 字符根据不同的数字大小编码成 1-6 个字节,常用的英文字母被编码成 1 个字节,汉字通常是 3 个字节,只有很生僻的字符才会被编码成 4-6 个字节。如果你要传输的文本包含大量英文字符,用 UTF-8 编码就能节省空间。
总结:
在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要传输的时候,就转换为 UTF8 编码。
用记事本编辑的时候,从文件读取的 UTF8 字符被转换为 Unicode 字符到内存里,编辑完 成后,保存的时候再把 Unicode 转换为 UTF8 保存到文件:
python中字母与ascii码的相互转换
ord©:参数是长度为1的字符串,简称字符。ord(‘a’)返回整形数值97
chr(i):返回一个字符,字符的ascii码等于参数中的整形数值。例如chr(97)返回字符’a’,该方法是ord()的反方法。参数必须是0-255的整形数值,否则会抛出valueError错误
软件工程第二章 : 可行性研究
2.1可行性研究的任务
可行性研究就是要回答“所定义的问题有可行的解决办法吗?”
可行性研究的目的: 用最小的代价在尽可能短的时间内确定问题是否有解,以及是否值得去解。
可行性研究所需时间取决于工程的规模,所需要的成本要占工程总成本的5%-10%。
201904
20190402(2)
pycharm补充:
第一行注释是为了告诉 Linux/OS X 系统,这是一个 Python 可执行程序,Windows 系统会忽略这个注释;
第二行注释是为了告诉 Python 解释器,按照 UTF8 编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码
格式化:
我们经常会输出类似’亲爱的 xxx 你好!你xx 月的话费是 xx,余额是 xx’
之类的字符串
而 xxx 的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。```
举例说明:
print(‘Hello, %s’ % ‘world’)
print(‘Hi, %s, you have $%d.’ % (‘Michael’, 1000000))
说出的是什么
总结: %,%s,%d
% -----------------占位符。
%s ----------------表示字符串的占位符。
%d-----------------表示整数的占位符
常见的占位符: %d %f %s
print(’%2d-%02d’ % (3, 1))
print(’%.2f’ % 3.1415926)
总结:
%2d -----表示两个占位符,如果数不够,用空格来站位
%02d-----也表示两个占位符,如果数不够,用0来站位
%.2f ------保留小数点后面两位。
如果你不太确定应该用什么占位符,
%s 永远起作用,它会把任何数据类型转换为字符串
print(‘Age: %s. Gender: %s’ % (25, True))
print(‘Age: %s. Gender: %s,score: %.5s’ % (25, True,89.786))
eg:89.786
%.3s ------表示3个位置,包括小数点,空格等。
89.
%.3f ------表示小数点后面三位。
89.786
有些时候,字符串里面的%是一个普通字符怎么办?
这个时候就需要转义,用%%来表示一个%
print(‘growth rate: %d %%’ % 7)
7%
format()
另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
print(‘Hello, {0}, 成绩提升了 {1:.1f}%’.format(‘小明’, 17.125)
练习
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出’xx.x%’,只保留小数点后1位:显示类容为: hello, XXX,成绩提高了 xx.x%
s1 = 72
s2 = 85
r =
print(’???’ % r)
s1 = 72
s2 = 85
r = (s2 - s1)/s1*100
name = ‘小明’
print(‘hello, %s, 成绩提高了:%.2f %%’ % (name,r))
print(‘hello, %s, 成绩提高了:%.4s %%’ % (name,r))
使用 list 和 tuple
也是一种python内置的数据类型。
Python 内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中
的元素
语法以及定义方式:
a = [] : []------方括号表示集合;【】[]
len(classmates)-1: 表示列表当中最后一个元素的索引。
L[3] = L[len(classmates)-1]
添加元素方法:
append() : 在列表最后插入元素 (一个参数)
insert():在指定索引处,插入元素。(两个参数)
classmates = [‘张三’, ‘李四’, ‘王五’,‘小明’]
print(len(classmates))
classmates.append(‘小红’)
#如何添加到列表的指定位置,eg:添加到第一个位置
#append(): 只能接受一个参数,我们给了它两个参数,所以会报错
classmates.insert(0,‘小白’)
删除元素:
#pop() :删除列表当中最后一个元素
#pop(index): 删除指定索引的元素
classmates = [‘张三’, ‘李四’, ‘王五’,‘小明’]
print(classmates)
#删除元素
classmates.pop()
print(classmates)
classmates.pop(1)
print(classmates)
列表内置方法:
pop() :删除列表当中最后一个元素
pop(index): 删除指定索引的元素
append(value) : 在列表最后插入元素 (一个参数)
insert(index,value):在指定索引处,插入元素。(两个参数)。
20190409(2)
知识点学习:
1.list复习, tuple学习
list列表: 一种数据类型,有序集合,可以任意添加删除元素。 []
tuple元组:也是一种数据类型,有序,不能添加或删除元素,即:tuple一但初始化就不能修改了。没有list 的添加删除方法(没有append(),insert(), pop()等方法)。 定义:L=() ,其他和list相同,eg:索引表示,计算tuple长度:len()。
classmates = (‘zhangsan’,’lisi’,’wangwu ’,’’sdf”)
money=(3000,4000,5000)
tuple的意义优点:tuple一但初始化就不能修改了,代码更安全。如果可能,能有tuple代替list就尽量用tuple。
list = [[]] : 二维列表。
tuple = ([1,2,3],[4,5,6],[7,8,9])
如果tuple里面有list,那么可以改变list的元素。
tuple = ([1, 2, 3], [4, 5, 6], [7, 8, 9])
print(tuple[0])
print(type(tuple[0]))
print(tuple[0].append(122))
print(tuple)
6 --------- tuple[1][2]
tuple 的缺陷:当你定义一个tuple时,在定义的时候,tuple 的元素就必须被确定下来。
eg:
t = (1,2)
t
(1,2)
1.定义一个空tuple: tuple = ()
2.定义只有一个元素的tuple: tuple = (1,)
2. 请问以下变量哪些是tuple类型:
a = ()
b = (1)
c = [2]
d = (3,)
e = (4,5,6)
2.条件判断语句
age = 20
if age >= 18:
print(‘你的年龄是 %s’ % age)
print(“成人”)
age = 5
if age >= 18:
print(‘你的年龄是 %s’ % age)
print(“成人”)
else:
print(‘你的年龄是 %s’ % age)
print(“未成人”)
注意: 不要少写了冒号 :
age = 16
if age>=18:
print(“adult”)
elif age >= 10:
print(“青少年”)
elif age >=6:
print(“青少年1”)
else:
print(“kid”)
语法
‘’’
if <条件判断1>:
<执行内容1>
elif <条件判断2>:
<执行内容2>
elif <条件判断3>:
<执行内容3>
else:
<执行内容n>
‘’’
说明: 从上往下判断,如果在某个判断上为True,那么把判断对应的语句执行后,
就忽略掉剩下的elif和else。
练习:
小明身高1.75m,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
用if-elif判断并打印结果:
height = 1.75
weight = 80.5
bmi = ???
if ???:
print(“”)
答案:
weight = 80.5
height = 1.75
bmi = weight/(height*height)
if bmi<18.5:
print(“过轻”)
elif bmi<=25:
print(“正常”)
elif bmi<=28:
print(“过重”)
elif bmi<=32:
print(“肥胖”)
else:
print(“严重肥胖”)
改版: 用户自动输入,加格式化练习
name = input(“请输入名字:”)
weight = float(input(“请输入体重:”))
height = float(input(“请输入身高:”))
bmi = weight/(height*height)
if bmi<18.5:
print(name,“的bmi为:%.2f,为 %s” % (bmi,“过轻”))
elif bmi<=25:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “正常”))
elif bmi<=28:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “过重”))
elif bmi<=32:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “肥胖”))
else:
print(name, “的bmi为:%s,为 %s” % (bmi, “严重肥胖”))
改版二: 加上list练习
classmate = [[‘张三’, 67, 1.75],[‘小明’, 77, 1.80],[‘小红’, 88, 1.90]]
name = classmate[0][0]
weight = classmate[0][1]
height = classmate[0][2]
bmi = weight / (height * height)
if bmi < 18.5:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “过轻”))
elif bmi <= 25:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “正常”))
elif bmi <= 28:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “过重”))
elif bmi <= 32:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “肥胖”))
else:
print(name, “的bmi为:%s,为 %s” % (bmi, “严重肥胖”))
预习: python循环
20190423(2)
#!/usr/bin/env python
‘’’
@author:MT
@file: 0423.py
@time: 2019/4/23 8:54
‘’’
‘’’
1.如果全篇(就是python代码)没有缩进“tab”,那说明没有for while if
else eilf 等条件(流程)控制语句和循环控制语句。
‘’’
#定义好字典 {键:值,键:值}键:值,以逗号分隔
d = {“zhangsan”: 89, “lisi”: 90, “wangwu”: 78}
print(d)
print(d[“zhangsan”]) # 取字典里面的某个值
#改变字典当中的值
#方式一
d[“zhangsan”]=99
print(d[“zhangsan”])
#如果键不存在于字典当中会报错。
#判断键是否存在于字典当中
print("----:",d.get(“lisi1”))
#删除字典当中的wangwu元素
d.pop(“wangwu”)
print(d)
print(d[“zhangsan”])
print(d[“zhangsan”])
print(d[“lisi”])
d1 = {“zhangsan”: 89, “lisi”: 90, “wangwu”: 78}
for i in d1: # i 表示的是字典当中的键, d[i]—字典当中的值
print("—",i,d1[i])
‘’’
1.查找和插入的速度快,不会随着key的增加而增加
2.需要占用大量内存,内存浪费
‘’’
‘’’
1.查找和插入的时间,随着元素的增加而增加
2.占用空间小,浪费内存小。
‘’’
#dict的注意事项
‘’’
字典当中的key是不可变对象,唯一,不能重复
通过key计算位置的算法(字典),我们称为: 哈希算法
‘’’
dic1 = {“zhangsan”:[180,87,98]}
#如何取87
l = dic1[“zhangsan”]
l[1]
print(dic1[“zhangsan”][1])
dic2 = {‘lisi’:{“爱好”:[1,2,3],“score”:98}}
#如何取3
a = dic2[‘lisi’][“爱好”][2]
print(a)