Python 序列, 条件语句和循环语句
本文的Python知识基于 Python3
序列
- 序列是Python中最基本的数据结构
- 序列都可以进行索引, 切片, 加, 乘, 检查成员
- Python已内置确定序列的长度以及确定最大和最小的元素的方法
List(列表)
- List是最常用的Python数据类型
- 它可以作为一个方括号内的逗号分隔值出现
列表的数据项
不需要具有相同的类型- 可以存放各种数据类型
- 可以嵌套存放
使用下标访问
- 访问不能超出范围
- 下标为
负数表示从后向前访问 -1为最后一个元素
- 创建一个列表, 只要把逗号分隔的不同的数据项使用
方括号括起来即可
# list小练习
>>> names = ['Hades', 'Studio', "Welcome"]
>>> type(names)
<class 'list'>
>>> print(names)
['Hades', 'Studio', 'Welcome']
>>> print(names[0])
Hades
>>> print(names[1])
Studio
>>> type(names[0])
<class 'str'>
>>> names = [1, 2, 3]
>>> type(names)
<class 'list'>
>>> print(names)
[1, 2, 3]
>>> print(names[0])
1
>>> print(names[1])
2
>>> type(names[0])
<class 'int'>
>>> names = ["1", 2, 3.00000, True, 5, "666"]
>>> type(names)
<class 'list'>
>>> print(names)
['1', 2, 3.0, True, 5, '666']
>>> print(names[0])
1
>>> print(names[1])
2
>>> print(names[2])
3.0
>>> print(names[3])
True
>>> print(names[4])
5
>>> print(names[5])
666
>>> type(names[0])
<class 'str'>
>>> type(names[1])
<class 'int'>
>>> type(names[2])
<class 'float'>
>>> type(names[3])
<class 'bool'>
>>> type(names[4])
<class 'int'>
>>> type(names[5])
<class 'str'>
>>> names = [1, [2,3,4], 5, 'Hello', "World", True, 10.00000, [666,888]]
>>> type(names)
<class 'list'>
>>> print(names)
[1, [2, 3, 4], 5, 'Hello', 'World', True, 10.0, [666, 888]]
>>> print(names[0])
1
>>> print(names[1])
[2, 3, 4]
>>> print(names[2])
5
>>> print(names[3])
Hello
>>> print(names[4])
World
>>> print(names[5])
True
>>> print(names[6])
10.0
>>> print(names[7])
[666, 888]
>>> type(names[0])
<class 'int'>
>>> type(names[1])
<class 'list'>
>>> type(names[2])
<class 'int'>
>>> type(names[3])
<class 'str'>
>>> type(names[4])
<class 'str'>
>>> type(names[5])
<class 'bool'>
>>> type(names[6])
<class 'float'>
>>> type(names[7])
<class 'list'>
>>> names[1]
[2, 3, 4]
>>> names[1][0]
2
>>> type(names[1])
<class 'list'>
>>> type(names[1][0])
<class 'int'>
>>> mylist = [0, 1, '2', "3", [4, 5], 6]
>>> mylist[10] # 错误的
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> mylist[-1] # 取最后一个
6
>>> mylist[-2] # 倒数第二个
[4, 5]
>>> len(mylist) # 取长度
6
>>> mylist[len(mylist) - 1] # 取最后一个
6
>>> list的函数
len()
- 计算list的长度
append()
- 从
最后追加
insert()
- 从
指定的索引位置之前插入一个对象
pop()
弹出一个元素并返回该元素
- 当不传递参数, 默认弹出
最后一位 - 当传递参数, 则弹出
指定索引位置的元素并返回
- 当不传递参数, 默认弹出
- 不能对空的list进行pop
clear()
- 清空list的所有内容
copy()
- 将list复制一份并返回
count()
- 统计元素出现的次数
reverse()
- 反序list
sort()
排序
- 默认是
正序 - 课传递参数进行
反序
- 默认是
remove()
移除指定值的元素
- 不能移除不存在的值的元素
index()
- 找出与指定值第一个匹配项的索引位置
extend()
- 一次性追加一个新的list到本list内
# 练习小例子
>>> mylist = [1,2,3,4]
>>> len(mylist)
4
>>> mylist.append(10) # 在末尾追加元素
>>> print(mylist)
[1, 2, 3, 4, 10]
>>> len(mylist)
5
>>> mylist.insert(4, 5) # 在指定的索引位置前插入元素
>>> mylist.insert(5, 6)
>>> print(mylist)
[1, 2, 3, 4, 5, 6, 10]
>>> len(mylist)
7
>>> mylist.pop() # 弹出最后一个元素
10
>>> print(mylist)
[1, 2, 3, 4, 5, 6]
>>> mylist.pop(2) # 弹出指定索引位置的元素
3
>>> print(mylist)
[1, 2, 4, 5, 6]
>>> len(mylist)
5
>>> mylist1 = mylist.copy() # 复制list到mylist1
>>> print(mylist1)
[1, 2, 4, 5, 6]
>>> len(mylist1)
5
>>> mylist.append(1)
>>> mylist.append(1)
>>> mylist.count(1) # 统计 1 这个元素出现的次数
3
>>> mylist.count(2) # 统计 2 这个元素出现的次数
1
>>> mylist.count(20) # 统计 20 这个元素出现的次数
0
>>> mylist.index(3) # 找出与指定值第一个匹配项的索引位置
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 3 is not in list
>>> mylist.index(4) # 找出与指定值第一个匹配项的索引位置
2
>>> mylist.index(15) # 找出与指定值第一个匹配项的索引位置
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 15 is not in list
>>> mylist2 = [10, 11, 12, 13, 14, 15]
>>> print(mylist2)
[10, 11, 12, 13, 14, 15]
>>> print(mylist)
[1, 2, 4, 5, 6, 1, 1]
>>> mylist.extend(mylist2) # 用mylist2扩展mylist
>>> print(mylist)
[1, 2, 4, 5, 6, 1, 1, 10, 11, 12, 13, 14, 15]
>>> print(mylist1)
[1, 2, 4, 5, 6]
>>> mylist1.reverse() # 倒序
>>> print(mylist1)
[6, 5, 4, 2, 1]
>>> mylist1[0] = 8
>>> mylist1[1] = 4
>>> mylist1[2] = 6
>>> mylist1[3] = 1
>>> mylist1[4] = 3
>>> mylist1[5] = 5 # 没有的下标会出错, 不会新建元素
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> print(mylist1)
[8, 4, 6, 1, 3]
>>> mylist1.sort() # 排序, 默认正序
>>> print(mylist1)
[1, 3, 4, 6, 8]
>>> print(mylist)
[1, 2, 4, 5, 6, 1, 1, 10, 11, 12, 13, 14, 15]
>>> mylist.remove(1) # 移除值为 1 的元素
>>> print(mylist)
[2, 4, 5, 6, 1, 1, 10, 11, 12, 13, 14, 15]
>>> mylist.remove(0) # 移除值为 0 的元素
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> print(mylist)
[2, 4, 5, 6, 1, 1, 10, 11, 12, 13, 14, 15]
>>> mylist.remove(2) # 移除值为 2 的元素
>>> print(mylist)
[4, 5, 6, 1, 1, 10, 11, 12, 13, 14, 15]
>>> mylist.clear() # 清空list
>>> print(mylist)
[]
>>> len(mylist)
0
>>> tuple(元组)
元组也是Python中比较常见的序列元组与list类似, 不同之处:
元组的元素不能修改- 元组使用
小括号, list使用方括号
元组创建类似list
- 在括号中添加元素, 使用逗号隔开
# 元组小练习
>>> Hades = ()
>>> type(Hades)
<class 'tuple'>
>>> Hades = ("Hades") # 注意, 此处的小括号只表示优先级, 不表示创建一个元组
>>> type(Hades)
<class 'str'>
>>> Hades = ("Hades",) # 此处才是创建一个 一个元素 的元组, 必须加一个 , 才可以
>>> type(Hades)
<class 'tuple'>
>>> Hades = ("Hades", 28, True) # 一个人物
>>> Hlb = ['Hades', 28, True] # 一个人物
>>> print(Hades)
('Hades', 28, True)
>>> print(Hlb)
['Hades', 28, True]
>>> Hlb[0] = "Hlb" # list可修改
>>> print(Hlb)
['Hlb', 28, True]
>>> Hades[0] = "H"; # 元组 无法修改
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> print(Hades)
('Hades', 28, True)
>>> Hades = ("Hades", 28, True, [30, 40, 30]) # 一个人物
>>> print(Hades)
('Hades', 28, True, [30, 40, 30])
>>> Hades[3][1] = 35 # 可修改, 因为改的是 list
>>> print(Hades)
('Hades', 28, True, [30, 35, 30])
>>> Hlb = [30, 40, 50];
>>> Hlb1 = [30, 40, 60];
>>> Hades = ("Hades", 28, True, Hlb)
>>> print(Hades)
('Hades', 28, True, [30, 40, 50])
>>> Hlb[1] = 35
>>> print(Hades)
('Hades', 28, True, [30, 35, 50])
>>> Hades[3][0] = 35
>>> print(Hades)
('Hades', 28, True, [35, 35, 50])
>>> print(Hlb)
[35, 35, 50]
>>> Hades[3] = Hlb1 # 出错了, 不能修改元组的数据
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> 注意
- 当元组中有list的时候, list相当于一个指针
list的指针指向的对象不能变, 但是对象本身可以变
- 类似C++中的
int* const pInt = &a; - pInt指向了变量a, pInt就一直指向a, 不会改变
- 但是, 变量a的值却是可以改变的
- 类似C++中的
条件语句
- 通过一条或多条语句的执行结果为
True或False来决定执行哪一个代码块 - Python中通过缩进代表当前代码属于哪一个代码块
- Python中, 指定任何
非0和非空(null)值为True 0 或者 null为False- if 语句用于控制程序的执行
if 判断条件 :
# 执行的语句块
elif 判断条件 :
# 执行的语句块
else :
# 执行的语句块elif可以有多个, 可以没有else可以没有, 或者只有一个
# if 小例子
>>> num = 51
>>> if num >= 50 :
... print("50知天命...")
... elif num >= 40 :
... print("40不惑...")
... elif num >= 30 :
... print("30而立...")
... else:
... print("这个....总不能是豆蔻年华吧...")
...
50知天命...
>>>
>>> num = 41
>>> if num >= 50 :
... print("50知天命...")
... elif num >= 40 :
... print("40不惑...")
... elif num >= 30 :
... print("30而立...")
... else:
... print("这个....总不能是豆蔻年华吧...")
...
40不惑...
>>>
>>> num = 18
>>> if num >= 50 :
... print("50知天命...")
... elif num >= 40 :
... print("40不惑...")
... elif num >= 30 :
... print("30而立...")
... else:
... print("这个....总不能是豆蔻年华吧...")
...
这个....总不能是豆蔻年华吧...
>>> 循环语句
Python中的循环主要有两种
for形式
- 主要用于遍历list等序列对象等
while形式
- 用于循环计数, 重复指定动作等
- 可以使用
continue关键字跳过代码, 继续下一次循环 - 可以使用
break关键字跳过代码, 终止循环 可使用
pass关键字表示代码占位- 该代码并不产生任何效果
在Python中, 循环语句可以有else语句.
- else语句可以不写
while 判断条件 :
# 语句...
else :
# 语句...
for 变量 in 序列 :
# 语句...
else:
# 语句...# 一个综合小例子 验证用户名密码 三次不正确则退出
# =============================== for版本 ===============================
print("===============================\n这是for循环的版本....\n===============================\n")
i = 0
'''
还可以这样写, 这就是 遍历元组
for i in (0, 1, 2)
也可以这样写, 这就是 遍历 list
for i in [0, 1, 2]
'''
for i in range(0, 3) : # 循环 0, 1, 2, range返回一个list
name = input("请输入用户名:")
pwd = input("请输入密码:")
if name != 'boot' or pwd != 'boot' :
print("用户名或密码错误, 您还有", 3 - i - 1, "次机会")
else:
break
else:
print('您已经木有机会了.....')
if i < 3 :
print("恭喜你登陆成功!")
# =============================== while版本 ===============================
print('''
===============================
这是while循环的版本....
===============================
''')
j = 0
while j < 3 :
name = input("请输入用户名:")
pwd = input("请输入密码:")
if name != 'boot' or pwd != 'boot' :
print("用户名或密码错误, 您还有", 3 - j - 1, "次机会")
j += 1
else:
break
else:
print("您的机会都浪费完了.....程序要退了....")
if j < 3 :
print("恭喜你登陆成功!")
未完待续...
如有错误,请提出指正!谢谢.
本文由 花心胡萝卜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2017-07-11 at 02:45 pm