一、流程控制
1.
if 要判断的条件:
条件成立时,要做的事情
if 条件:
满足条件时的操作
else:
不满足条件时的操作
# python里的条件判断语句 if / if else / if elif elif else
# python里不支持 switch...case 条件语句
# if 条件判断:
# 条件成立时,执行的代码
# age = int(input('请输入你的年龄:'))
# if age < 18: # 字符串和数字做比较运算规则: == 结果是False,!= 结果是True,其他比较运算会报错
# print('未满十八岁,禁止入内')
# if...else语句
# if 判断条件:
# 条件成立时执行的代码
# else:
# 条件不成立时执行的代码
age = int(input('请输入你的年龄:'))
if age < 18:
print('赌博是不好的哟,好好学习,天天向上')
else:
# if的条件不满足时执行的代码
print('澳门首家线上赌场上线了!')
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
当xxx1满足时,执行事情1,然后整个if结束
当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if 结束
score = float(input('请输入您的成绩:'))
```python
# 多个 if 语句,语句和语句之间,不存在关联
# if 60 > score >= 0:
# print('你个垃圾')
#
# if 80 > score >= 60:
# print('一般般')
#
# if 90 > score >= 80:
# print('还不错')
#
# if 100 >= score >= 90:
# print("好棒棒哟")
# 一个 if..elif 语句
if 60 > score >= 0:
print('你个垃圾')
elif 80 > score >= 60:
print('一般般')
elif 90 > score >= 80:
print('还不错')
elif 100 >= score >= 90:
print("好棒棒哟")
else:
print('你肮脏,你作弊!')
4.if语句嵌套
if 条件1:
满足条件1 做的事情1
满足条件1 做的事情2
if 条件2:
满足条件2 做的事情1
满足条件2 做的事情2
外层的if判断,也可以是if-else
内层的if判断,也可以是if-else
根据实际开发的情况,进行选择
# if 语句里再嵌套if
# python语言里,使用强制缩进来表示语句之间的结构
ticket = input('是否买票了?Y/N')
if ticket == 'Y':
print('买票了,可以进站')
safe = input('安检是否通过?Y/N')
if safe == 'Y':
print('安检通过了,进候车室')
else:
print('进站了,但是安检未通过')
else:
print('没有买票,滚蛋')
5.猜拳游戏
import random
player = input('请输入:剪刀(0) 石头(1) 布(2):')
player = int(player)
# 产生随机整数:0、1、2 中的某一个
computer = random.randint(0,2)
# 用来进行测试
#print('player=%d,computer=%d',(player,computer))
if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):
print('获胜,哈哈,你太厉害了')
elif player == computer:
print('平局,要不再来一局')
else:
print('输了,不要走,洗洗手接着来,决战到天亮')
# python里的for循环指的是for...in循环。和C语言里的for不一样
# for语句格式: for ele in iterable
# range 内置类用来生成指定区间的整数序列(列表)
# 注意: in 的后面必须要是一个可迭代对象!!!
# 目前接触的可迭代对象: 字符串、列表、字典、元组、集合、range
for i in range(1, 11):
print(i)
# for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
# print(x)
for y in 'hello':
print(y)
# for m in 10: # in的后面必须是一个可跌打对象
# print(m)
z = 0 # 定义一个变量,用来保存所有的数字之和
for j in range(1, 101):
z += j
print(z)
二、字符串
1.字符串介绍
字符串可以理解为一段普通的文本内容,在python里,使用引号来表示一个字符串,不同的引号表示的效果会有区别。
字符串表示方式
a = "I'm Tom" # 一对双引号
b = 'Tom said:"I am Tom"' # 一对单引号
c = 'Tom said:"I\'m Tom"' # 转义字符
d = '''Tom said:"I'm Tom"''' # 三个单引号
e = """Tom said:"I'm Tom" """ # 三个双引号
小总结:
双引号或者单引号中的数据,就是字符串
如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
使用三个单引号、双引号定义的字符串可以包裹任意文本
转义字符
转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分,使用\来表示一个转义字符。常见的转义字符以及它所代表的含义如下表:
转义字符 含义
\r 将当前位置移到本行开头
\n 将当前位置移到下一行开头
\t 用来表示一个制表符
\ 代表一个反斜线字符
’ 用来显示一个单引号
" 用来显示一个双引号
2.切片介绍
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的语法:[起始:结束:步长],也可以简化使用 [起始:结束]
# 索引是通过下标取某一个元素
# 切片是通过下标去某一段元素
s = 'Hello World!'
print(s)
print(s[4]) # o 字符串里的第4个元素
print(s[3:7]) # lo W 包含下标 3,不含下标 7
print(s[:]) # Hello World! 取出所有元素(没有起始位和结束位之分),默认步长为1
print(s[1:]) # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位)
print(s[:4]) # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身)
print(s[:-1]) # Hello World 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)
print(s[-4:-1]) # rld 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)
print(s[1:5:2]) # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
print(s[7:2:-1]) # ow ol 从下标为7的元素开始(包含下标为7的元素),倒着取到下标为2的元素(不包括下标为2的元素)
# python 字符串快速逆置
print(s[::-1]) # !dlroW olleH 从后向前,按步长为1进行取值
3.字符串的常见操作
①len函数可以获取字符串的长度。
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(len(mystr)) # 17 获取字符串的长度
②find查找
查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1.
语法格式:
S.find(sub[, start[, end]]) -> int
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.find('好风光')) # 10 '好风光'第一次出现时,'好'所在的位置
print(mystr.find('你好')) # -1 '你好'不存在,返回 -1
print(mystr.find('风', 12)) # 15 从下标12开始查找'风',找到风所在的位置试15
print(mystr.find('风光',1,10)) # -1 从下标1开始到12查找"风光",未找到,返回 -1
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rfind('好')) # 14
3.字符串运算符
①字符串和字符串之间能够使用加法运算符,作用是将两个字符串拼接成为一个字符串。例如:‘hello’ + 'world’的结果是 ‘helloworld’
②字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次。例如:‘hello’*2的结果是hellohello
③字符串和字符串之间,如果使用比较运算符进行计算,会获取字符对应的编码,然后进行比较。
除上述几种运算符以外,字符串默认不支持其他运算符。
三、列表
1、列表的格式
定义列的格式:[元素1, 元素2, 元素3, …, 元素n]
变量tmp的类型为列表
tmp = ['xiaoWang',180, 65.0]
列表中的元素可以是不同类型的
2、使用下标获取列表元素
namesList = ['xiaoWang','xiaoZhang','xiaoHua']
print(namesList[0])
print(namesList[1])
print(namesList[2])
3.对列表进行增加元素
①append会把新元素添加到列表末尾
#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']
print("-----添加之前,列表A的数据-----A=%s" % A)
#提示、并添加元素
temp = input('请输入要添加的学生姓名:')
A.append(temp)
print("-----添加之后,列表A的数据-----A=%s" % A)
②insert(index, object) 在指定位置index前插入元素object
strs = ['a','b','m','s']
strs.insert(3,'h')
print(strs) # ['a', 'b', 'm', 'h', 's']
③通过extend可以将另一个集合中的元素逐一添加到列表中
a = ['a','b','c']
b = ['d','e','f']
a.extend(b)
print(a) # ['a', 'b', 'c', 'd', 'e', 'f'] 将 b 添加到 a 里
print(b) # ['d','e','f'] b的内容不变
#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']
print("-----修改之前,列表A的数据-----A=%s" % A)
#修改元素
A[1] = 'xiaoLu'
print("-----修改之后,列表A的数据-----A=%s" % A)
3.查找元素
●in(存在),如果存在那么结果为true,否则为false
●not in(不存在),如果不存在那么结果为true,否则false
#待查找的列表
nameList = ['xiaoWang','xiaoZhang','xiaoHua']
#获取用户要查找的名字
findName = input('请输入要查找的姓名:')
#查找是否存在
if findName in nameList:
print('在列表中找到了相同的名字')
else:
print('没有找到')
4.删除元素
▲del:根据下标进行删除
▲pop:删除最后一个元素
▲remove:根据元素的值进行删除
masters = [‘王昭君’, ‘甄姬’, ‘貂蝉’, ‘妲己’, ‘小乔’, ‘大乔’]
# 删除数据有三个相关的方法 pop remove clear
# pop 方法默认会删除列表里最后一个数据,并且返回这个数据
# pop还可以传入index参数,用来删除指定位置上的数据
x = masters.pop(3)
print(masters) # ['王昭君', '甄姬', '貂蝉', '小乔', '大乔']
# remove用来删除指定的元素
masters.remove('小乔')
# masters.remove('妲己') 如果数据在列表中不存在,会报错
print(masters)
# 使用del 也可以删除一个数据
del masters[2]
print(masters)
# clear 用来清空一个列表
masters.clear()
print(masters)
# a = 100
# del a
# print(a)
tanks = ['亚瑟', '程咬金', '盾山', '张飞', '廉颇', '程咬金']
# 查询相关的方法
print(tanks.index('盾山')) # 2
# print(tanks.index('庄周')) 如果元素不存在,会报错
print(tanks.count('程咬金')) # 2
# in 运算符
print('张飞' in tanks) # True
print('苏烈' in tanks) # False
# 修改元素
# 使用下标可以直接修改列表里的元素
tanks[5] = '铠'
print(tanks)
# 遍历: 将所欲的数据都访问一遍。遍历针对的是可迭代对象
# while循环遍历 / for...in 循环遍历
killers = ['李白', '兰陵王', '韩信', '赵云', '阿珂', '孙悟空']
# for...in循环的本质就是不断的调用迭代器的 next 方法查找下一个数据
for k in killers:
print(k)
i = 0
while i < len(killers):
print(killers[i])
i += 1
import random
# 定义一个列表用来保存3个办公室
offices = [[],[],[]]
# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']
i = 0
for name in names:
index = random.randint(0,2)
offices[index].append(name)
i = 1
for tempNames in offices:
print('办公室%d的人数为:%d'%(i,len(tempNames)))
i+=1
for name in tempNames:
print("%s"%name,end='')
print("\n")
print("-"*20)
7.列表的复制
①使用列表的copy方法,可以直接将原来的列表进行复制,变成一个新的列表,这种复制方式是浅复制。
②除了使用列表的copy方法以外,Python还提供了copy模块来复制一个对象。copy模块提供了浅复制和深复制两种方式,它们的使用方式相同,但是执行的效果有一定的差异。
●浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容。
●深拷贝是对于一个对象所有层次的递归拷贝。
x = [100, 200, 300]
# x 和 y 指向了同一个内存空间,会相互影响
y = x # 等号是内存地址的赋值
# 调用copy方法,可以复制一个列表
# 这个新列表和原有的列表内容一样,但是指向不同的内存空间
z = x.copy()
x[0] = 1
print(z)
# 除了使用列表自带的 copy 方法以外,还可以使用copy模块实现拷贝
import copy
a = copy.copy(x) # 效果等价于 x.copy(),都是一个浅拷贝
# 深拷贝
# 切片其实就是一个浅拷贝
names1 = ['张三', '李四', '王五', '杰克']
names2 = names1[::]
names1[0] = 'jerry'
print(names2)