Python语法基础和数据类型
第1章 Python基础 Day1 基本语法
1.1 编程语言介绍与分类
什么是编程语言?本质上跟人类语言,目的一样。 沟通电流+一堆硬件高电压1 低电压 0高电压1 低电压 0高电压1 低电压 0 8 晶体管0101010101010 play sound10100000 open file机器语言 直接跟硬件打交道汇编语言 开发效率低0101010101010 <--- play_m高级语言对底层硬件的各种指令 做了封装play_music("忽然.mp3")人类代码 ——翻译———— 》机器语言根据翻译方式不同产生了2个流派编译型语言人类代码 ————》一次性把代码给 翻译官(编译器)————》汇编--》机器语言代表 : c,c++,golang优点:执行速度快缺点:跨平台可移植性差硬件 , cpu , 有自己指令规则 0000000001 打印, 1110000 play musicintel ,amd : 复杂指令集 ,高性能高功耗ARM :精简指令集 手机 平板 , 低功耗你的基于intel平台编译出来的程序是没有办法在arm平台上运行软件,你的c程序想在windows,linux,mac同时可以运行,windows invoke_windowlinux,mac call_window解释型语言人类代码 ————》边执行边翻译(解释),陪同翻译(解释器/虚拟机) ————》机器语言代表:python,php,java,ruby,c#优点:跨平台好缺点:翻译需要时间,执行速度 慢机器理解的慢, 1ms, 10ms
大多数情况下, 语言的快慢是我们人类感知不到的。
1.2 Python介绍、发展趋势
Python发展史Guido 龟叔 ,1989 Python2005 - 2012 谷歌大量使用PY,2013 dropbox2005 豆瓣 Python2009 用python ,2012 云计算,1000 = 1000 , Openstack Python2012 讲Python, 自动化开发, 不会开发的运维终将被淘汰。2014 AI兴起 ,2017 大众视野
1.3 Python环境安装
WindowsmacLinuxUnix
1.4 开发你的第一个Python程序
print("hello world!")
1.5 选择最好用的代码编辑器
PyCharm IDE
1.6 变量
y = 6 x =2print(x+y) # 公式 调用>>81. 先定义 变量, 存在内存里2. 代码后调用
修改
1.7 注释
# 当行注释
"""多行注释"""
'''多行注释'''
1.8 基本数据类型
str 'Alex' int 23
01001 010101数字int 整数2**62type(age) 查看变量的数据类型long 无限大python3里,所有的整数都按int类型处理float浮点数 ~ 小数3.14159其它语言里必须在声明变量前先定义 好其类型,强类型弱类型语言字符串定义name = "Alex" #有引号就是字符串,"I'm Alex" 'alex "sdds" '拼接>>> s1="我本将心照明月">>> s2="无奈明月照沟渠"s1+s2段落/多行'''sdfsdfsdfdsf'''bool 布尔a = 3b = 5b > a 正确/成立 真 Trueb < a 错误/不成立 假 Falseif today == raining Trueprint(take unbrealla)else Falseprint(不用带)列表 , 数组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 namesTrue>>> 'Peiqi2' in namesFalse查到元素的下标并返回>>> 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
1.9 读取用户指令
input 方法 接收 到的所有数据 都以字符串的格式处理
1.10 格式化打印
%s 是代表字符串%d 整数%f 浮点
1.11 运算符
1.算术运算:+-*/ 加减乘除 %取模 **幂函数 //取整除
2.比较运算:== != > < >= <=
3.赋值运算:= += -= *= /= %= **= //=
4.逻辑运算:and or not
1.12 流程控制之if…else
单分支today_weather = "sun_day"#单分支if today_weather == "rain_day":print("take your umbrella with you ")双分支#双分支age_of_oldboy = 58if age_of_oldboy > 50 :print("Too old, time to retire..")else:print("还能折腾几年!")缩进Python的缩进有以下几个原则:顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进同一级别的代码,缩进必须一致官方建议缩进用4个空格多分支再来个匹配成绩的小程序吧,成绩有ABCDE5个等级,与分数的对应关系如下A 90-100B 80-89C 60-79D 40-59E 0-39程序启动,提示用户输入分数,根据分数打印等级 。猜随机数
1.13 流程控制之while循环
break # 中止循环
continue # 中止本次循环,继续 下次循环count = 0while count < 100:count += 1if count > 10 and count < 20:continue #print(count)
dead loop
1.14 本章练习题&作业
双色球选购程序
三级菜单
股票查询
第一章总结:
1.主要是讲解了编程语言的分类,2.Python的发展史,发展趋势3.环境搭建4.变量、注释、5.基本数据类型:1.数字:int、float2.字符串:str3.布尔值:bool false or true4.列表:list 增删改查6.用户输入:input()函数7.运算符:1.算术运算:+-*/ 加减乘除 %取模 **幂函数 //取整除2.比较运算:== != > < >= <=3.赋值运算:= += -= *= /= %= **= //=4.逻辑运算:and or not8.流程控制:1.单分支if2.双分支if-else3.多分支if-elif-else4.while循环5.while-else循环
第二章 数据类型&文件操作
1.变量:
例1:name = 'old_boy'身份运算:is 判断两个标识符是不是引用自一个对象例2:x is y ,类似id(x)==id(y),如果引用自同一个对象则返回true 否则falseis 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 cand、or、not的妙用:通过以上的对比逻辑运算的执行顺序 not > and > or
2.二进制
首先,计算机一共就能做两件事:计算和通信二进制的定义:二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。我们发现刚刚我们讲述的狼烟的故事和现在这个新理论出奇相似。假设狼烟点燃用1表示,狼烟灭掉用0表示,那么刚刚我们用狼烟表示百万雄师的理论就可以用在计算机上,这种表示数字的方式就叫做二进制。你可能会觉得发明计算机的人思路轻奇,为什么要多此一举的用这种方式来表达数字,但事实上计算机不像我们这样智能,CPU是一个包含上百万个精巧的晶体管的芯片集合,晶体管表达感情的方式很简单,就是通过高低电压(有电没电),低电压的时候表示0,高电压的时候表示1,因此最终能让计算机理解的就只有0和1而已。二进制和十进制转换:其实刚刚在无形中我们已经将10进制转换成2进制了,现在我们要再总结一遍。刚才我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n次方这个规律填位大法:先把他们代表的值依次写出来,然后再根据10进制的值把数填到相应位置,就好了~~~十进制转二进制方法相同,只要对照二进制为1的那一位对应的十进制值相加就可以了。
3.字符编码
ASCII:ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A的编码是65,小写字母 z的编码是122。后128个称为扩展ASCII码。那现在我们就知道了上面的字母符号和数字对应的表是早就存在的。那么根据现在有的一些十进制,我们就可以转换成二进制的编码串。大小换算:bit 位,计算机中最小的表示单位8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B1KB=1024B1MB=1024KB1GB=1024MB1TB=1024GB1PB=1024TB1EB=1024PB1ZB=1024EB1YB=1024ZB1BB=1024YBGBK和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....
4.数据类型-列表:
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素。列表的增删改查:
增:追加: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()
5.数据类型-元组:
定义:与列表类似,只不过[]改成()
特性:1.可存放多个值2.不可变3._按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
创建:ages = tuple((11, 22, 33, 44, 55))
6.数据类型-字符串:
字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,’ ‘或’’ ‘’或’’’ ‘’’中间包含的内容称之为字符串特性:1.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序2.可以进行切片操作3.不可变,字符串是不可变的,不能像列表一样修改其中某个元素,所有对字符串的修改操作其实都是相当于生成了一份新数据。补充:1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r’l\thf’创建:s = 'Hello,Eva!How are you?'
7. 数据类型-字典:
定义:{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']
8.数据类型-集合:
定义:set() 去重增:a.add('黑姑娘')
删:a.discard('rain') #删除一个存在的值a.pop() #删除并返回a.remove(4)
改:呵呵,不能改。。。
查:'alex' in a
9.hash是什么东西:
hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)
通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散
列值的空间通常远小于输入的空间哈希算法不过是一个更为复杂的运算,它的输入可以是字符串,可以是数据,可以是任何文件,经
过哈希运算后,变成一个固定长度的输出,该输出就是哈希值。但是哈希算法有一个很大的特点,
就是你不能从结果推算出输入,所以又称为不可逆的算法哈希的用途:1.密码,我们日常使用的各种电子密码本质上都是基于hash的,你不用担心支付宝的工作人员会把你的密码泄漏给第三方,因为你的登录密码是先经过 hash+各种复杂算法得出密文后再存进支付宝的数据库里的2.文件完整性校验,通过对文件进行hash,得出一段hash值 ,这样文件内容以后被修改了,hash值就会变。 MD5 Hash算法的”数字指纹”特性,使它成为应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。3.数字签名,数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。此外,hash算法在区块链领域也使用广泛。
10.用Python操作文件:
占硬盘方式的文件修改代码示例
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 = linef_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 = linef_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 ewrite()read()close()r r+ w w+ a a+
Python语法基础和数据类型相关推荐
- Python语法基础在线实验闯关_头歌实践教学平台
Python语法基础在线实验闯关 第1关 基本数据类型 第2关 基本数据结构 第3关 基本数据结构访问 第4关 列表append和extend方法 第5关 字符串连接 第6关 字符串拆分和子串查找 第 ...
- python语法基础知识总结-python语法基础知识
一.数字类型及操作 1.整数类型 可正可负,无取值范围限制pow(x,y):计算x^y 2.浮点数类型 存在不确定尾数round(x,d):对x四舍五入,d为小数截取位数e/E:a*10^b 3.复数 ...
- Python语法基础 三
Python语法基础 一 Python语法基础 二 Python数据结构-列表 Python数据结构-字典 Python数据结构-元组 Python数据结构-集合 Python-函数 1.while循 ...
- Python 语法基础
Python 语法基础 1.代码块缩进 2.注释 3.变量和赋值 4.变量类型 4.1变量类型-数字 4.2变量类型-字符串 4.3变量类型-列表和元组 5.流程控制语句 6.函数 7.类 8.模块 ...
- 【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则
第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符命名风格 文章目录 第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符 ...
- 第02章 Python语法基础,IPython和Jupyter Notebooks
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- 第02章 Python语法基础,IPython和Jupyter Notebooks--Python for Data Analysis 2nd
当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题:我们现在使用的库,比如pandas.scikit-learn和statsmodel ...
- 《利用Python进行数据分析·第2版》第2章 Python语法基础,IPython和Jupyter Notebooks
第 1 章 准备工作 第 2 章 Python 语法基础,IPython 和 Jupyter Notebooks 第 3 章 Python 的数据结构.函数和文件 第 4 章 NumPy 基础:数组和 ...
最新文章
- MongoDB:mongodb在项目开发时的安全验证、分页查询操作
- 【重要】2022年有三AI实战课程讲师招募,只等你来!
- talking web android,Talking Web
- IT行业 侃侃富士康
- 存储专家论IP存储现实可行性
- 什么是 10x 程序员
- listview添加列
- Java Arrays.sort()函数
- 基金行业数据安全保障体系建设探析
- 金士顿 DT101 G2 8GU盘量产全过程图解(群联篇)(2)
- web前端期末大作业 基于HTML+CSS家乡主题毕业设计源码
- 《增长黑客》读书笔记
- 【转】VMware15虚拟机安装教程
- 在VFP中如何调用其它程序
- 顺口溜记23种设计模式
- python输入三角形的三条边、判断能否构成三角形_输入三角形三条边a,b,c,判断他们能否构成三角形...
- 【每日新闻】桥水达里奥:人工智能造成贫富差距 | 国产x86处理器开始生产:基于AMD Zen架构...
- hdu-1878欧拉回路
- 大数据算法_大数据算法解析,如何创建用户画像实现千人千面?
- HTML -超文本标记语言