赞
踩
什么是编程语言? 本质上跟人类语言,目的一样。 沟通 电流+一堆硬件 高电压1 低电压 0 高电压1 低电压 0 高电压1 低电压 0 8 晶体管 0101010101010 play sound 10100000 open file 机器语言 直接跟硬件打交道 汇编语言 开发效率低 0101010101010 <--- play_m 高级语言 对底层硬件的各种指令 做了封装 play_music("忽然.mp3") 人类代码 ——翻译———— 》机器语言 根据翻译方式不同产生了2个流派 编译型语言 人类代码 ————》一次性把代码给 翻译官(编译器)————》汇编--》机器语言 代表 : c,c++,golang 优点:执行速度快 缺点:跨平台可移植性差 硬件 , cpu , 有自己指令规则 0000000001 打印, 1110000 play music intel ,amd : 复杂指令集 ,高性能高功耗 ARM :精简指令集 手机 平板 , 低功耗 你的基于intel平台编译出来的程序是没有办法在arm平台上运行 软件,你的c程序想在windows,linux,mac同时可以运行, windows invoke_window linux,mac call_window 解释型语言 人类代码 ————》边执行边翻译(解释),陪同翻译(解释器/虚拟机) ————》机器语言 代表:python,php,java,ruby,c# 优点:跨平台好 缺点:翻译需要时间,执行速度 慢 机器理解的慢, 1ms, 10ms 大多数情况下, 语言的快慢是我们人类感知不到的。
Python发展史
Guido 龟叔 ,1989 Python
2005 - 2012 谷歌大量使用PY,2013 dropbox
2005 豆瓣 Python
2009 用python ,
2012 云计算,1000 = 1000 , Openstack Python
2012 讲Python, 自动化开发, 不会开发的运维终将被淘汰。
2014 AI兴起 ,
2017 大众视野
Windows
mac
Linux
Unix
print("hello world!")
PyCharm IDE
y = 6
x =2
print(x+y) # 公式 调用
>>8
1. 先定义 变量, 存在内存里
2. 代码后调用
修改
# 当行注释
"""多行注释"""
'''多行注释'''
str 'Alex' int 23 01001 010101 数字 int 整数 2**62 type(age) 查看变量的数据类型 long 无限大 python3里,所有的整数都按int类型处理 float浮点数 ~ 小数 3.14159 其它语言里必须在声明变量前先定义 好其类型,强类型 弱类型语言 字符串 定义 name = "Alex" #有引号就是字符串, "I'm Alex" 'alex "sdds" ' 拼接 >>> s1="我本将心照明月" >>> s2="无奈明月照沟渠" s1+s2 段落/多行 '''sdf sdfsdfdsf ''' bool 布尔 a = 3 b = 5 b > a 正确/成立 真 True b < a 错误/不成立 假 False if today == raining True print(take unbrealla) else False print(不用带) 列表 , 数组 Alex Egon OldVillageMaster Peiqi BlackGirl >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'BlackGirl'] >>> names[4] 'BlackGirl' 增 插入 >>> names.insert(4,"Alex") >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'Alex', 'BlackGirl'] 追加 , 把元素抛入列表最后面 >>> names.append("小强") >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'Alex', 'BlackGirl', '小强'] 删 >>> names[-1] '小强' >>> del names[-1] >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'Alex', 'BlackGirl'] 改 >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'Alex', 'BlackGirl'] >>> names[-1] 'BlackGirl' >>> names[-1] = "黑姑娘" >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'Alex', '黑姑娘'] 查 >>> names ['Alex', 'Egon', 'OldTownMaster', 'Peiqi', 'Alex', '黑姑娘'] >>> >>> >>> 'Peiqi' in names True >>> 'Peiqi2' in names False 查到元素的下标并返回 >>> names.index("Peiqi") 3 >>> >>> >>> names.index("Peiqi2") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 'Peiqi2' is not in list 命令嵌套 >>> del names[names.index("Peiqi")] >>> names ['Alex', 'Egon', 'OldTownMaster', 'Alex', '黑姑娘'] dict , set tuple
input 方法 接收 到的所有数据 都以字符串的格式处理
%s 是代表字符串
%d 整数
%f 浮点
1.算术运算:+-*/ 加减乘除 %取模 **幂函数 //取整除
2.比较运算:== != > < >= <=
3.赋值运算:= += -= *= /= %= **= //=
4.逻辑运算:and or not
单分支 today_weather = "sun_day" #单分支 if today_weather == "rain_day": print("take your umbrella with you ") 双分支 #双分支 age_of_oldboy = 58 if age_of_oldboy > 50 : print("Too old, time to retire..") else: print("还能折腾几年!") 缩进 Python的缩进有以下几个原则: 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格 多分支 再来个匹配成绩的小程序吧,成绩有ABCDE5个等级,与分数的对应关系如下 A 90-100 B 80-89 C 60-79 D 40-59 E 0-39 程序启动,提示用户输入分数,根据分数打印等级 。 猜随机数
break # 中止循环
continue # 中止本次循环,继续 下次循环
count = 0
while count < 100:
count += 1
if count > 10 and count < 20:
continue #
print(count)
dead loop
双色球选购程序
三级菜单
股票查询
1.主要是讲解了编程语言的分类, 2.Python的发展史,发展趋势 3.环境搭建 4.变量、注释、 5.基本数据类型: 1.数字:int、float 2.字符串:str 3.布尔值:bool false or true 4.列表:list 增删改查 6.用户输入:input()函数 7.运算符: 1.算术运算:+-*/ 加减乘除 %取模 **幂函数 //取整除 2.比较运算:== != > < >= <= 3.赋值运算:= += -= *= /= %= **= //= 4.逻辑运算:and or not 8.流程控制: 1.单分支if 2.双分支if-else 3.多分支if-elif-else 4.while循环 5.while-else循环
例1:name = 'old_boy' 身份运算: is 判断两个标识符是不是引用自一个对象 例2:x is y ,类似id(x)==id(y),如果引用自同一个对象则返回true 否则false is not 判断两个标识符是不是引用自不同对象 例:x is not y, 类似id(x)!=id(y).如果引用的不是同一个对象则返回true 否则false 空值None: 代表什么都没有的意思。 三元运算: 显的很NB的代码写法。 name = "Eva" sex = None # 普通写法 if name == "Eva": sex = "Female" else: sex = "Male" # 用三元运算来写 sex = "Female" if name == "Eva" else "Male" a = b if b==0 else c and、or、not的妙用: 通过以上的对比逻辑运算的执行顺序 not > and > or
首先,计算机一共就能做两件事:计算和通信 二进制的定义: 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则 是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基 本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关, 用“开”来表示1,“关”来表示0。 我们发现刚刚我们讲述的狼烟的故事和现在这个新理论出奇相似。假设狼烟点燃用1表示,狼烟灭掉用0表示,那么 刚刚我们用狼烟表示百万雄师的理论就可以用在计算机上,这种表示数字的方式就叫做二进制。 你可能会觉得发明计算机的人思路轻奇,为什么要多此一举的用这种方式来表达数字,但事实上计算机不像我们 这样智能,CPU是一个包含上百万个精巧的晶体管的芯片集合,晶体管表达感情的方式很简单,就是通过高低电压 (有电没电),低电压的时候表示0,高电压的时候表示1,因此最终能让计算机理解的就只有0和1而已。 二进制和十进制转换: 其实刚刚在无形中我们已经将10进制转换成2进制了,现在我们要再总结一遍。 刚才我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n次方这个规律 填位大法: 先把他们代表的值依次写出来,然后再根据10进制的值把数填到相应位置,就好了~~~ 十进制转二进制方法相同,只要对照二进制为1的那一位对应的十进制值相加就可以了。
ASCII: ASCII(American Standard Code for Information Interchange, 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代 英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英 文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A的编码是65,小 写字母 z的编码是122。后128个称为扩展ASCII码。 那现在我们就知道了上面的字母符号和数字对应的表是早就存在的。那么根据现在有的一些 十进制,我们就可以转换成二进制的编码串。 大小换算: bit 位,计算机中最小的表示单位 8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB 1PB=1024TB 1EB=1024PB 1ZB=1024EB 1YB=1024ZB 1BB=1024YB GBK和GB2312 显然,对于我们来说能在计算机中显示中文字符是至关重要的,然而刚学习的ASCII表里连 一个偏旁部首也没有。所以我们还需要一张关于中文和数字对应的关系表。之前我们已经看 到了,一个字节只能最多表示256个字符,要处理中文显然一个字节是不够的,所以我们需 要采用两个字节来表示,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码, 用来把中文编进去。 Unicode 因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符, 就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。 现在,捋一捋ASCII编码和Unicode编码的区别: ASCII编码是1个字节,而Unicode编码通常是2个字节。 字母A用ASCII编码是十进制的65,二进制的01000001; 字符0用ASCII编码是十进制的48,二进制的00110000; 汉字“中”已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。 你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码 是00000000 01000001。 UTF-8....
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素。 列表的增删改查: 增: 追加:names.append("rain") 插入:names.insert(2,"黑姑娘") 合并:names.extend(n2) 嵌套:names.insert(2,[1,2,3]) 删: del 直接删: del names[2] pop 删:names.pop(1) #删除指定元素 clear 清空:n2.clear() 改: names[0] = "金角大王" 查: names.index("eva") #返回从左开始匹配到的第一个eva的索引 names.count("eva") #返回eva的个数 切片:names[1:4] #不包含下标4的元素 倒着切:names[-5:-1] 步长:a[::3] #按步长3打印列表,第1个:是省略掉的start:end 列表反转:a[::-1] #通过把步长设置成负值,可达到列表返转的效果 排序: a.sort() 反转: names.reverse()
定义:与列表类似,只不过[]改成()
特性:
1.可存放多个值
2.不可变
3._按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
创建:
ages = tuple((11, 22, 33, 44, 55))
字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,
’ ‘或’’ ‘’或’’’ ‘’’中间包含的内容称之为字符串
特性:
1.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序
2.可以进行切片操作
3.不可变,字符串是不可变的,不能像列表一样修改其中某个元素,所有对字符串的
修改操作其实都是相当于生成了一份新数据。
补充:
1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均
取消特殊意义,在引号前面加r,如name=r’l\thf’
创建:
s = 'Hello,Eva!How are you?'
定义:{key1:value1,key2:value2} 1.键与值用冒号":"分开; 2.项与项用逗号","分开; info = {"name":"小猿圈","age":18} 创建 person = dict(name='server', age=20) 增 info["佩奇"] = [26,"讲师",400] --- 还有 setdefault("server", [1,2,3]) 删 del info["name"] 删除指定的key,同pop方法 info.pop("佩奇") 删除指定key info.popitem() 随便删除一个key info.clear() 清空dict 改 info["name"]="new_data" 如果key在字典中存在,"new_data"将会替代原来的value值 dic.update(dic2) 将字典dic2的键值对添加到字典dic中 查 info['key']
定义:set() 去重
增:
a.add('黑姑娘')
删:
a.discard('rain') #删除一个存在的值
a.pop() #删除并返回
a.remove(4)
改:
呵呵,不能改。。。
查:
'alex' in a
hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image) 通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散 列值的空间通常远小于输入的空间 哈希算法不过是一个更为复杂的运算,它的输入可以是字符串,可以是数据,可以是任何文件,经 过哈希运算后,变成一个固定长度的输出,该输出就是哈希值。但是哈希算法有一个很大的特点, 就是你不能从结果推算出输入,所以又称为不可逆的算法 哈希的用途: 1.密码,我们日常使用的各种电子密码本质上都是基于hash的,你不用担心支付宝的工作人员 会把你的密码泄漏给第三方,因为你的登录密码是先经过 hash+各种复杂算法得出密文后 再存进支付宝的数据库里的 2.文件完整性校验,通过对文件进行hash,得出一段hash值 ,这样文件内容以后被修改了, hash值就会变。 MD5 Hash算法的”数字指纹”特性,使它成为应用最广泛的一种文件完整性校 验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。 3.数字签名,数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收 者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要 信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改, 否则说明信息被修改过,因此数字签名能够验证信息的完整性。 此外,hash算法在区块链领域也使用广泛。
占硬盘方式的文件修改代码示例 f_name = "兼职白领学生空姐模特护士联系方式.txt" f_new_name = "%s.new" % f_name old_str = "刘诺涵" new_str = "[黑姑娘]" f = open(f_name,'r') f_new = open(f_new_name,'w') for line in f: if old_str in line: new_line = line.replace(old_str,new_str) else: new_line = line f_new.write(new_line) f.close() f_new.close() 上面的代码,会生成一个修改后的新文件 ,原文件不动,若想覆盖原文件 import os f_name = "兼职白领学生空姐模特护士联系方式.txt" f_new_name = "%s.new" % f_name old_str = "刘诺涵" new_str = "[黑姑娘]" f = open(f_name,'r') f_new = open(f_new_name,'w') for line in f: if old_str in line: new_line = line.replace(old_str,new_str) else: new_line = line f_new.write(new_line) f.close() f_new.close() #把新文件名字改成原文件 的名字,就把之前的覆盖掉了,windows使用os.replace # 帮助文档说明replace会覆盖原文件 os.rename(f_new_name,f_name)
1.变量的创建:赋值和修改、内存地址的指向 2.身份运算:三元运算 3.列表:增删改查、切片、反转、插入、步长、遍历、排序 4.元组:增删改查:呵呵 不能改 元组不可变 5.字符串:切片、字母大小写、替换、查找 6.字典:增删改查、长度、循环字典 7.集合:交集并集、去重、增删改查、关系运算 8.二进制、十进制、十六进制:相互转换 9.字符编码 10.hash算法 11.操作文件: open() with open() as e write() read() close() r r+ w w+ a a+
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。