从0开始的Python学习
关于Python
python是面向对象的强类型动态脚本语言
python是面向对象的解释型高级编程语言
编写第一个程序
语言学习第一步,编写的第一个程序”你好世界”
1 | print("hello,world") |
关于bug
遇到bug,多看,多思考,多尝试
常见的bug:
- 输入错误(中文符号)
- 缩进错误(print要顶格写,不然就报错)
- 语法错误(syntax error)
- 命名错误(字符串要加引号)
debug调试
- debug中代码为蓝色时表示代码正在运行
- 步过是执行下一条,步出是执行下一个断点
- 可以通过debug的调试看到程序执行的顺序
注释与快捷键
注释可以放在任意位置但是注释的内容不会执行
#是单行注释
“””
三个引号是多行注释
“””
- ctrl+/是快捷注释使用单行注释
- ctrl+z是撤销
- ctrl+y是反撤销
- ctrl+f是查找
- ctrl+h是替换
- ctrl+d是复制到下一行
输出函数
1 | print() |
输出:hello*world
- 输出多个值的时候,用逗号隔开
- separator=分隔符,用来间隔多个值,放在最后
- end=结尾符,用来表示输出的结束,默认为换行符,\n,放在最后
变量
- 计算机中的存储空间,用于保存数据
- 定义变量的格式 变量名=值
- 首次使用变量会在内存中划分空间,再次使用变量便直接修改原空间的值
- 变量可以被反复赋值并且可以是不同类型的值
标识符
标识符就是变量,函数,类,模块的名字
标识符的命名规则:
- 由字母,数字,下划线组成
- 不能以数字开头
- 不能与关键字重名
- 严格区分大小写
- 见名知意
- 标识符被包含在括号内是不会对标识符产生影响
数据类型
数值类型分为:
整数类型:int
任意大小的整数
num=100
检测数据类型的方法type()
浮点数类型:float
num2=1.5
复数类型:complex
固定写法:
z=a+bj
(a是实部,b是虚部,j是虚数的单位不能改成其他的)
布尔类型:bool(通常用判断)
有固定写法,一个为True,一个为False(必须严格区分大小写)
布尔值可以当作整数使用,True为1,False为0
字符串类型:str
特点:
需要加上引号,包含了多行内容可以使用三引号
占位符:
生成一定格式的字符串,类似于c语言
占位符只会占据位置并不会输出内容
%
%s
字符串占位符
%d
整数占位符
1 | name='ay' |
%4d整数占位符
数字设置位数,不足前面补空白
1 | a=123 |
表示输出的整数显示位数,不足的话用0补全,超出的话按原样输出
浮点数占位符
默认后六位小数,遵循四舍五入原则
%%
%% 被解释为一个百分号
1 | print("我是%%的%%" % ()) #我是%的% |
f格式化
格式:f'字符串{表达式}'
1 | name = "***" |
数值运算:+ - * / // * **
/
(商一定是浮点数且除数不能为0)
//
(取整除,取商的整数部分,向下取整忽略小数,若表达式里有浮点数,结果也会用浮点数表示)
%
(取余数,只取余数部分)
**
(幂,m**n:m的n次方)
算术优先级:**幂 > *乘 /除 //取余 %取整> +加 -减
括号可以提升优先级
赋值运算符:= += -= *= /= //= **= %=
(纯数字不能使用而且没有定义的变量也不能使用)
1 | a=10 |
输入函数:input()
1 | input(prompt) #prompt是提示信息 |
转义字符
\n
换行
\t
制表符(通常表示空四个字符,也称缩进)
\r
回车(表示将当前位置移到本行开头)
\
反斜杠
r
原生字符串,表示字符串内的所有转义字符无效
逻辑判断
if判断
if 要判断的条件:
条件成立的时候要做的事情
1 | age=int (input("请输入年龄:")) |
if else(二选一)
基本格式:
if 条件:
条件成立时要做的事情
else:
条件不成立时要做的事情
if elif(多选一)
基本格式:
if 条件1:
条件1成立时要做的事情
elif 条件2:
条件2成立时要做的事情
elif 条件3:
条件3成立时要做的事情
else:
以上条件都不成立时要做的事情
if嵌套
基本格式:
if 条件1:
条件1成立时要做的事情
if 条件2:
条件2成立时要做的事情
else:
以上条件都不满足时要做的事情
内层外层都可以使用if else结构
1 | ticket=True |
运算符
比较运算符:== != > < >= <=
- == 比较的是两个值是否相等,相等的话就返回为真True,不相等就返回为假False
- != 比较两个变量的值是否相等,不相等返回真True,相等返回假False
逻辑运算符 : and,or,not(与 或 非)
- and左右两边都符合才为真
- or左右两边有一个符合就为真
- not表示相反的结果 not True=False, not False=True
三目运算符
为真结果 if 判断条件 else 为假结果
循环
循环的作用:让代码更高效的重复执行
while
while 条件:
条件成立时要做的事情
改变变量
1 | i=1 |
如果条件不是False或者0,就一直循环,直到条件为False或者0时退出循环
1 | i=1 |
while嵌套
1 | 基本格式: |
缩进决定层级,严格控制缩进
1 | i=1 |
外循环执行一次,内循环执行五次
for循环
1 | 基本格式: |
*缩进决定层级,严格控制缩进
(字符串是可迭代对象)
1 | range(start,stop,step) |
range()函数
可以生成一个数据序列,通常在for循环中使用
1
2 for i in range(1,6): #(包前不包后,只写一个数就是循环次数,而且从0开始)
print(i) #输出12345
1 | #for循环从1加到100 |
break和continue
break和continue都是专门在循环中使用的关键字
break表示某一条件满足时立即退出循环
1 | i=1 |
continue表示立即结束本次循环,直接进入下一次循环
1 | i=1 |
1 | for i in range(5): |
字符串编码
字符串编码本质上就是二进制与语言文字的一一对应关系
ASCII码
ASCII码一共规定了128个字符的编码,只用来表示常用的字符
Unicode编码
Unicode编码所有字符都是两个字节,转换速度快但是浪费空间
GB2312编码
GB2312编码是中国制定的一套字符编码,它是对Unicode编码的一种压缩和优化,只包含了6763个常用汉字和符号
UTF-8编码
- UTF-8编码是一种可变长度的Unicode编码,它可以使用1~4个字节表示一个字符,根据字符的不同,使用的字节数也不同
- UTF-8编码的优点是兼容性好,支持所有语言,缺点是编码效率低
字符串编码转换
1 | a=('hello') |
字符串运算符
+
(连接字符串)
*
(重复输出)
成员运算符
- in (判断是否包含,包含返回True,不包含返回False)
- not in (判断是否不包含,不包含返回True,包含返回False)
1 | name = "ay" |
下标
- 下标是用来访问字符串中单个字符的位置,可以快速找到对应的数据
- 从左往右下标从0开始,到字符串长度-1结束
1 | name = "ay" |
切片
切片是指从一个字符串中获取一个子字符串
1
2
3
4
5
6
7
8
9
10
11
12
13 >语法:
>1. 字符串[开始下标:结束下标:步长],包前不包后
>2. 步长默认为1,步长为正数时,从左往右取,步长为负数时,从右往左取
>3. 开始下标默认为0,结束下标默认为字符串长度```
~~~python
name="abcdefg"
print(name[0:4]) #abcd
~~~
>1. 步长的绝对值大小绝定切取的间隔,正负号决定切取方向,默认为1
>2. 正数从左往右切,负数从右往左切
```python
name="abcdefg"
print(name[-1::-1]) #gfedcba
字符串常见操作
查找 find()
检测某个子字符串是否包含在字符串中,如果有那么返回子字符串在字符串中的下标,如果没有则返回-1
语法:字符串.find(子字符串,开始下标,结束下标)
1 | name="abcdefg" |
index()
检测某个子字符串是否包含在字符串中,如果有那么返回子字符串在字符串中的下标,如果没有则报错
语法:字符串.index(子字符串,开始下标,结束下标)
1 | name="abcdefg" |
count()
统计某个子字符串在字符串中出现的次数,没有就返回0
语法:字符串.count(子字符串,开始下标,结束下标)
1 | name="aaaabcdefg" |
startswith()
检测字符串是否以某个子字符串开头,如果是返回True,否则返回False
语法:字符串.startswith(子字符串,开始下标,结束下标)
如果设置了开始下标和结束下标,那么检测的范围就是开始下标到结束下标-1
1 | name="abcdefg" |
endswith()
检测字符串是否以某个子字符串结尾,如果是返回True,否则返回False
1 | name="abcdefg" |
isupper()
检测字符串是否都是大写字母,如果是返回True,否则返回False
1 | name="ABCDEFG" |
islower()
检测字符串是否都是小写字母,如果是返回True,否则返回False
1 | name="abcdefg" |
isalpha()
检测字符串是否都是字母,如果是返回True,否则返回False
1 | name="abcdefg" |
isdigit()
检测字符串是否都是数字,如果是返回True,否则返回False
1 | name="123456" |
isalnum()
检测字符串是否都是字母和数字,如果是返回True,否则返回False
1 | name="abcdefg123456" |
修改元素
replace()
替换字符串中的某个子字符串,如果没有找到则返回原字符串
语法:字符串.replace(旧子字符串,新子字符串,替换次数(默认全部替换))
1 | name="abcdefg" |
split()
按照指定的分隔符将字符串分割成一个列表
语法:字符串.split(分隔符,分割次数),如果不包含分割内容,那么就不会进行分割
1 | name="abccdefg" |
capitalize()
将字符串的首字母大写
1 | name="abcdefg" |
title()
将字符串的每个单词的首字母大写
1 | name="abcdefg" |
ower()
将字符串中的大写字母转换为小写字母
1 | name="ABCDEFG" |
upper()
将字符串中的小写字母转换为大写字母
1 | name="abcdefg" |
join()
将序列中的元素以指定的字符连接生成一个新的字符串
语法:字符.join(序列)
1 | name="abcdefg" |