Python零基础入门
本文参考书籍:Python编程从入门到实践
一)变量和简单数据类型
1.1变量的命名
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打
头。 - 变量名不能包含空格,但可使用下划线来分隔其中的单词。
- 不要将Python关键字和函数名用作变量名。
- 变量名应既简短又具有描述性,name比n好。
- 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
就目前而言,应使用小写的Python变量名(文件名也用小写字母)。在变量名中使用大写字母虽然不会导致错误,
但避免使用大写字母是个不错的主意。
- 首字母大写的名称指的是类。
程序无法成功地运行时, 解释器会提供一个traceback。traceback是一条记录,指出了解释器尝试运行代码时,在什么地方陷入了困境。
1.2字符串
-
用引号括起的都是字符串,其中的引号可以是单引号, 也可以是双引号
-
能够在字符串中包含引号和撇号。
-
title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写
-
可以使用单引号或双引号来表示字符串。可以使用三引号 ‘’’ 或 “”" 来表示多行字符串。
-
title()方法,仅仅首字母大写,其他小写。
name="abb_ba"
print(name.title())#print是输出打印
输出:
Abb_Ba
- upper()字符串改为全部大写
name="abb_ba"
print(name.upper())
输出:
ABB_BA
- lower()字符串改为全部小写,存储数据时,方法lower()很有用。
name="ABB_ba"
print(name.lower())
输出:
abb_ba
字符串首位相连
name="abcdef"
print(name[0] + name[-1])
输出结果:
af
判断一个单词是否以s结尾
name="defs"
print(name.endswith('s'))
运行结果:
True
1.3合并(拼接)字符串
- Python使用加号(+)来合并字符串。
- " "是空字符串。
下面这种合并字符串的方法称为拼接(print是输出打印)
xing="张"
ming="华"
name=xing+ming
print(name)
print("zhang".title()+" "+"hua"+"!")
输出:
张华
Zhang hua!
1.4使用制表符或换行符来添加空白
- 在编程中,空白泛指任何非打印字符,如空格、制表符和换行符。
- 制表符,可使用字符组合\t,代表着四个空格,也就是一个tab。
- 制表符也属于“写法是两个字符的组合,但含义上只是一个字符”的情形。
制表符添加空白:
name="彰化"
print(name)
print("\t彰化")
print(name+"\t"+"你好")
输出结果:
彰化
彰化
彰化 你好
\n是换行符:
name="彰化"
print(name+"\n"+"你好")
输出:
彰化
你好
1.5删除字符串中的空白,但都是暂时的
- rstrip(),删除字符串中末尾多余的空白,但是暂时的,要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中。
- lstrip():剔除字符串开头的空白。 strip():同时剔除字符串两端的空白。
name=" 彰化 "
print(name)
print(name.rstrip())
print(name.lstrip())
print(name.strip())
print(name)
输出:
彰化
彰化
彰化
彰化
彰化
1.6 数字
1.6.1 整数
- 整数、浮点数和复数都属于Python数字的范畴。在Python中,它们被定义为 int、float 和 complex类
- 整数:数执行加(+)减(-)乘(*)除(/)运算。
- Python使用两个乘号表示乘方运算。
- 还支持运算次序,可以使用括号来修
改运算次序,让Python按你指定的次序执行运算
a,b,c=1,2,3
h1=a+b
h2=b**b
h3=(a+b)*c
print(h1+h2+h3)
输出:16
1.6.2浮点数
- 浮点数:带小数点的数字都称为浮点数,但需要注意的是,结果包含的小数位数可能是不确定的:
a=0.1
b=0.2
print(a+b)
输出:
0.30000000000000004
- 用函数 str()避免类型错误
a=0.1
b=0.2
c=a+b
print("结果:"+c)
输出会报错: print(“结果:”+c)。TypeError: must be str, not float
a=0.1
b=0.2
c=a+b
print("结果:"+str(c))
输出结果:
结果:0.30000000000000004
- Python 2 中的整数,在Python 2中,整数除法的结果只包含整数部分,小数部分被删除(请注意,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直接删除)。若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数。
- Python 3中整数除法是正常的。
a=4
b=3
print(a/b)
print("结果:"+str(a/b))
输出如下:
1.3333333333333333
结果:1.3333333333333333
1.6.3 复数
# 复数以 x + yj 形式书写,其中x是实部,y是虚部
c=1+2j
print(c)
输出如下:
(1+2j)
1.6.4 注释
- 单行注释用#来标识,多行注释使用三引号,‘’’ 或者 “”"。这些三引号通常用于多行字符串。但是它们也可以用作多行注释。
a=4
b=3
print(a/b)#灰色的我就是注释,#后面的内容都是注释,这是单行注释
"""
这是一个
多行注释
"""
1.6.5 python之禅
要得到一些有关编写优秀Python代码的指导原则,需在解释器中执行命令import this。
import this
a=" nihao "
print(a)
二)python列表
- 列表由一系列按特定顺序排列的元素组成
2.1 列表的定义
- 用方括号[]来表示liebiao1变量是一个列表列表,列表中元素用逗号隔开。可以把整数、浮点数、字符串、列表等任何东西加入列表中。
# coding=utf-8
import this
liebiao2=[11,22,33]
liebiao3=["1",2,"3",'你好',liebiao2]
print(liebiao3)
输出如下:
['1', 2, '3', '你好', [11, 22, 33]]
2.2 列表的修改
2.2.1 访问(调用)列表元素
- 访问列表元素,访问列表第n个元素:列表名[n-1],[]里面的数字是列表元素的索引,列表根据索引找到元素的位置。索引是从0开始排列。第一个元素的索引是0。
import this
liebiao1=[]#空列表
liebiao2=[11,22,33]
liebiao3=["1",2,"3",'你好',liebiao2]
print(liebiao3[0])#访问列表第一个元素,索引是从0开始
输出:
1#列表只返回元素本身,不返回[]或者引号
- 索引为-1,则是python列表最后一个元素。这是python自身的特殊语法。仅当列表为空时,这种访问最后一个元素的方式才会导致错误
- 索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推。
2.2.2 修改、添加、删除列表元素
- 把列表中第3个元素修改成1
import this
liebiao2=[11,22,33]
liebiao3=["1",2,"3",'你好',liebiao2]
liebiao3[2]=1#把列表中第3个元素修改成1
print(liebiao3)
输出如下:
['1', 2, 1, '你好', [11, 22, 33]]
- 用方法append(),在列表末尾添加一个字符串元素nihao
import this
liebiao2=[11,22,33]
liebiao3=["1",2,"3",'你好',liebiao2]
liebiao3.append("nihao")
print(liebiao3)
输出如下:
['1', 2, '3', '你好', [11, 22, 33], 'nihao']
- 用方法insert()可在列表的任何位置添加新元素。需要指定新元素的索引和值。
liebiao2=[11,22,33,"nihao"]
liebiao2.insert(0,"1")
print(liebiao2)
输出如下:
['1', 11, 22, 33, 'nihao']
- 用del语句删除列表元素,需要知道你要删除的元素的位置,也就是索引。
liebiao2=[11,22,33,"nihao"]
del liebiao2[0]#删除第一个元素
print(liebiao2)
输出如下:
[22, 33, 'nihao']
- 用pop语句删除列表元素,方法pop()可删除列表末尾的元素,并让你能够接着使用它。
- 可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。
# coding=utf-8
liebiao2=[11,22,33,"nihao"]
a=liebiao2.pop()#删除最后一个元素
print(a)#使用删除的元素
print(liebiao2)
liebiao2.pop(0)#删除列表第一个元素
print(liebiao2)
输出如下:
nihao
[11, 22, 33]
[22, 33]
-
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop()。
-
根据值删除列表元素用方法remove():可以确定值为22的元素的位置并删除列表值为22的元素。remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
# coding=utf-8
liebiao2=[11,22,33,"nihao"]
liebiao2.remove(22)#删除列表中值为22的元素。
print(liebiao2)
输出如下:
[11, 33, 'nihao']
- list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list=[1,2,3,4]
list1=[5,6,7,8,9]
list.extend(list1[:2])
print(list)
输出:
[1, 2, 3, 4, 5, 6]
- 清空列表:list.clear()
list=[1,2,3,4]
list.clear()
print(list)
输出:
[]
- 复制列表:list.copy()
list=[1,2,3,4]
list1=list.copy()
print(list1)
输出:
[1, 2, 3, 4]
2.2.3 列表排列
- sort()方法对列表进行永久性排序,按字母顺序或倒序。
# coding=utf-8
liebiao2=["abn","bac","cbd"]
liebiao2.sort()#按首字母的顺序排序
print(liebiao2)
liebiao2.sort(reverse=True)#按首字母逆序排序
print(liebiao2)
输出如下:
['abn', 'bac', 'cbd']
['cbd', 'bac', 'abn']
- sorted()函数对列表进行临时的排序,临时的
# coding=utf-8
liebiao2=["bcc","abb","ccc"]
print(sorted(liebiao2))#按字母顺序正序排序,临时
print(sorted(liebiao2,reverse=True))#按字母顺序逆序排序,临时
print(liebiao2)
输出如下:
['abb', 'bcc', 'ccc']
['ccc', 'bcc', 'abb']
['bcc', 'abb', 'ccc']
- 列表倒序排序reverse()函数,永久性的。
# coding=utf-8
liebiao2=["你好","步步","身高"]
liebiao2.reverse()
print(liebiao2)
输出如下:
['身高', '步步', '你好']
- 列表长度用函数len()
# coding=utf-8
liebiao2=["你好","步步","身高"]
a=len(liebiao2)
print(a)
输出如下:
3
2.3 列表的高级操作
2.3.1 遍历整个列表用for
- Python根据缩进来判断代码行与前一个代码行的关系,for语句末尾的冒号告诉Python,下一行缩进的代码是循环体的第一行。
# coding=utf-8
liebiao2=["你好","步步","身高"]
for a in liebiao2 :#这行之后,每个缩进的代码行都是这行循环的一部分。
print(a)
print("结束了")
输出如下:
你好
步步
身高
结束了
2.3.2 range函数和List函数
- 函数range(a,b)左闭右开。
- list()函数把range函数转换成列表
# coding=utf-8
liebiao2=list(range(1,6))
print(liebiao2)
liebiao3=list(range(1,10,2))#从1开始,每次加2,不能超过10
print(liebiao3)
输出如下:
[1, 2, 3, 4, 5]
[1, 3, 5, 7, 9]
2.3.3 列表的最大最小值以及求和
# coding=utf-8
liebiao2=list(range(1,6))
print(min(liebiao2))#最小值
print(max(liebiao2))#最大值
print(sum(liebiao2))#总和
输出如下:
1
5
15
2.3.4 列表解析
# coding=utf-8
liebiao1=[ a**2 for a in range(1,4)]#a**2代表a的2平方
print(liebiao1)
输出如下:
[1, 4, 9]
2.3.5 切片
- 使用列表的一部分,称之为切片。
- 使用索引进行切片 列表名[a:b],从索引为a的元素到索引为b的元素,左闭右开区间哦。
- 若不写a直接[:b],表示列表从头开始一直到索引为b的元素,左闭右开区间哦
- 若不写b直接[a:],表示列表从索引为a的元素一直到列表最后一个元素。
# coding=utf-8
liebiao1=[1,2,3,4,5,6,7,8,9]
print(liebiao1[2:5])
print(liebiao1[:3])
print(liebiao1[-3:])#输出后三名
liebiao2=liebiao1[:]#通过切片复制列表1
输出如下:
[3, 4, 5]
[1, 2, 3]
[7, 8, 9]
2.4 元组
- 不可变的列表被称为元组,用()定义元组。
yuanzu=(1,2,3,4,5,6)
print(yuanzu[0])#打印元组索引为0的元素。
输出如下:
1
修改元组会报错:
yuanzu[0]=10
print(yuanzu)#会报错,提示yuanzu[0]=10错误,元组不能被修改
输出如下(报错信息):
Traceback (most recent call last):
File "E:\PycharmProjects\pythonProject\lianxi.py", line 4, in <module>
yuanzu[0]=10
TypeError: 'tuple' object does not support item assignment
- 遍历元组跟遍历列表是一样的
- 虽然不能修改元组的元素,但可以给存储元组的变量赋值,也就是可以从新定义整个元组。
# coding=utf-8
yuanzu=(1,2,3,4,5,6)
yuanzu=(10,20,30)#重新定义元组
print(yuanzu)
输出如下:
(10, 20, 30)
2.5 设置代码格式
- 建议每级缩进都使用4个空格,不要用Tab键。
- 处理文档用制表符而不是用空格来缩进。不要混合使用制表符和空格。
- 代码每行不超过80个字符,注释不超过72个字符
三)循环语句
3.1 if基本语句
- 一个等号是赋值,两个等号是比较值是否相等,考虑大小写。
- 函数lower()不会修改存储在变量中的值,因此进行这样的比较时不会影响原来的变量
# coding=utf-8
yuanzu=("A","B","C")
for a in yuanzu:
if a.lower()=="b":
print("成功")
else:
print("失败")
输出如下:
失败
成功
失败
3.2 条件测试
- 检查是否不相等用!=
# coding=utf-8
a=1
print(a!=2)
输出如下:
True
- 条件语句还可以进行各种数字的比较,大于等于小于…
- 用and 检查多个条件,and前后都为True,结果才True
- 用or检查多个条件,只要有一个为True,结果就为True
- 检查特定值是否包含在列表中,用in
# coding=utf-8
a=[1,2,3]
print(2 in a)
输出如下:
True
- 布尔表达式,只有True和False
3.3 不同的if语句
3.3.1 简单if语句
# coding=utf-8
name1=18
if name1>=18:
print("我已经成年啦")
输出如下:
我已经成年啦
3.3.2 if-else语句
# coding=utf-8
name1=17
if name1>=18:
print("我已经成年啦")
else:
print("你还是小屁孩")
输出如下:
你还是小屁孩
3.3.3 if-elif-else语句
- elif可以有多个
# coding=utf-8
name1=17
if name1>=18:
print("我已经成年啦")
elif 10<name1<18:
print("你是青年")
else:
print("小屁孩")
输出如下:
你是青年
3.4 while循环
# coding=utf-8
#求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数
#break结束循环,continue结束本轮循环,返回到循环开头开始下一轮循环
while 1:
num = int(input("请输入一个数判断是否是偶数:"))
if (num%2)!=0:
print("奇数")
else:
print("偶数")
break
四)字典
4.1 字典的定义
- 定义字典用{key:value },字典可存储的信息几乎无限。字典是键值对的方式,用逗号隔开。
# coding=utf-8
zidian1={"nane":"张山","age":18}
- 调用字典中的数据
# coding=utf-8
zidian1={"nane":"张山","age":18}
print(zidian1["nane"])
print(zidian1["age"])
输出如下:
张山
18
4.2 字典的使用
4.2.1 添加键-值对
# coding=utf-8
zidian1={"nane":"张山","age":18}
zidian1['性别']="女"
print(zidian1)
输出如下:
{'nane': '张山', 'age': 18, '性别': '女'}
4.2.2 修改字典
# coding=utf-8
zidian1={"name":"张山","age":18}
zidian1["name"]="妮妮"
print(zidian1)
输出如下:
{'name': '妮妮', 'age': 18}
4.2.3 删除字典中的键值对
# coding=utf-8
zidian1={"name":"张山","age":18}
del zidian1["name"]
print(zidian1)
输出如下:
{'age': 18}
4.2.4 由类似对象组成的字典
# coding=utf-8
zidian1={
"name":"张山",
"age":18,
"xingbie":"女"
}
print(zidian1)
4.2.5 遍历字典键值对
# coding=utf-8
zidian1={
"name":"张山",
"age":18,
"xingbie":"女"
}
for key,value in zidian1.items():
print(key+"\t"+str(value))
输出如下:
name 张山
age 18
xingbie 女
4.2.6 遍历字典的键key和值
# coding=utf-8
zidian1={
"name":"张山",
"age":18,
"xingbie":"女"
}
for key in zidian1.keys():
print(key)#键
print(zidian1[key])#键对应的值
输出如下:
name
张山
age
18
xingbie
女
4.2.7 判断某个字是否在键值对中
# coding=utf-8
zidian1={
"name":"张山",
"age":18,
"xingbie":"女"
}
if "name" in zidian1.keys():#name是否在键中
print("1")#是则打印1
if 18 in zidian1.values():#18是否在值中
print("1")#是则打印1
输出:
1
1
4.2.8 遍历键,值
# coding=utf-8
zidian1={
"name":"张山",
"name1":"张山",
"xingbie":"女"
}
for key in sorted(zidian1.keys()): #按特定的顺序遍历键
print(key+"这是键值对中的键")
for value in zidian1.values():
print(value+"这是值,包含重复元素")
for value in set(zidian1.values()):
print(value+"这是值,set方法是不包含重复元素")
输出如下:
name这是键值对中的键
name1这是键值对中的键
xingbie这是键值对中的键
张山这是值,包含重复元素
张山这是值,包含重复元素
女这是值,包含重复元素
女这是值,set方法是不包含重复元素
张山这是值,set方法是不包含重复元素
4.3 字典的嵌套
# coding=utf-8
alien_0={"color":"green","points":5}
alien_1={"color":"yellow","points":10}
alien_2={"color":"red","points":15}
aliens=[alien_0,alien_1,alien_2]#字典的嵌套
for alien in range(30):
new_alien={"color":"green","points":5,"spend":"slow"} #字典嵌套
aliens.append(new_alien)#把新生成的字典存入已经定义的列表中。
for alien in aliens[:5]:#修改列表中字典的数据
if alien["color"]=="green":
alien["color"]="yellow"
alien["speed"]="medium"
alien["points"]=10
print(alien)
print("数据总条数:"+str(len(aliens)))
输出如下:
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
{'color': 'yellow', 'points': 10, 'spend': 'slow', 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'spend': 'slow', 'speed': 'medium'}
数据总条数:33
4.4 在字典中存储列表
# coding=utf-8
love_languages={
"王一":["java","c","python"],
"王二":["html"],
"王三":["python","java"]
}
for name,languages in love_languages.items():
if len(languages)>1:
print(name+"最喜欢的语言是:")
for language in languages:
print(language)
else:
for language in languages:
print(name+"最喜欢的语言是:"+language)
输出如下:
王一最喜欢的语言是:
java
c
python
王二最喜欢的语言是:html
王三最喜欢的语言是:
python
java
4.5 在字典中存储字典
# coding=utf-8
users={
"user1":{
"name":"王一",
"age":18
},
"user2": {
"name": "王二",
"age": 20
}
}
for key,values in users.items():
print(key+"的信息如下:")
for name,age in values.items():
print(name+str(age))
输出如下:
user1的信息如下:
name王一
age18
user2的信息如下:
name王二
age20
五)文件
- import os
1、os.getcwd()函数:查看当前的工作目录,获取当前工作路径。os.chdir()函数:修改当前的工作目录
print(os.getcwd())
os.chdir("C:\\")#修改当前的工作目录
print(os.getcwd())
输出:
E:\CS\python\pythoncodes\lianxi01
C:\