发布于 

Python基本语法

1 循环语句

1.1 for循环

1
2
3
4
5
6
7
8
9
10
for i in range(5):
print(i)
'''
结果:
0
1
2
3
4
'''
1
2
3
4
5
6
7
8
9
for i in range(0, 10, 3):		#从0开始,到10结束,每次加3
print(i)
'''
结果:
0
3
6
9
'''

除了数字,还可以遍历字符串

1
2
3
4
5
6
7
name = "chongqing"
for x in name:
print(x, end="\t")
'''
结果:
c h o n g q i n g
'''

可以遍历数组,在之后会经常使用到这个功能

1
2
3
4
5
6
7
8
9
10
a = ["aa", "bb", "cc", "dd"]
for i in range(len(a)):
print(i, a[i])
'''
结果:
0 aa
1 bb
2 cc
3 dd
'''

1.2 while循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
i = 0
while i < 5:
print("当前是第%d次执行循环" % (i+1))
print("i=%d" % i)
i += 1
'''
结果:
当前是第1次执行循环
i=0
当前是第2次执行循环
i=1
当前是第3次执行循环
i=2
当前是第4次执行循环
i=3
当前是第5次执行循环
i=4
'''

例:求1-100的和

1
2
3
4
5
6
7
n = 100
Sum = 0
counter = 1
while counter <= n:
Sum = Sum + counter
counter += 1
print("1 到 %d 的和为:%d" % (n, Sum))

while配合else使用

1
2
3
4
5
6
count = 0
while count < 5:
print(count, "小于5")
count += 1
else:
print(count, "大于等于5")

1.3 break和continue

  • break语句可以跳出forwhile的循环体
  • continue语句可以跳出当前循环,直接进行下一循环
  • pass是空语句,一般用作占位符,不做任何事
1
2
3
4
5
6
7
i = 0
while i < 10:
i = i + 1
print("-"*30) # 打印30次“-”
if i == 5:
break # 结束整个循环
print(i)
1
2
3
4
5
6
7
i = 0
while i < 10:
i = i + 1
print("-"*30) # 打印30次“-”
if i == 5:
continue # 结束本次循环
print(i)

2 字符串、列表、元组、字典

2.1 字符串

  • python中的字符串可以使用单引号、双引号三引号括起来,使用反斜杠“\”转义特殊字符
  • python3源码文件默认以UTF-8编码,所有字符串都是unicode字符串
  • 支持字符串拼接、截取等多种运算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
word = '字符串'
sentence = "这是一个句子"
paragraph = """
这是一个段落
可以由多行组成
"""

print(word)
print(sentence)
print(paragraph)
'''
结果:
字符串
这是一个句子

这是一个段落
可以有多行组成

'''
1
2
3
my_str = "I'm a student"
my_str = 'I\'m a student' # 用“\”转义特殊字符
print(my_str)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
city = "chongqing"
print(city)
print(city[0:6]) # [起始位置:结束位置]
print(city[1:7:2]) # [起始位置:结束位置:步进值]
print(city[5:])
print(city[:5])

print(city + ",hello!") # 字符串连接
print(city*3)
'''
结果:
chongqing
chongq
hnq
qing
chong
chongqing,hello!
chongqingchongqingchongqing
'''
1
2
3
4
5
6
7
8
9
print("hello\nchongqing")

print(r"hello\nchongqing") # 加“r”,表示直接显示原始字符串,不进行转义
'''
结果:
hello
chongqing
hello\nchongqing
'''

2.2 列表

  • 列表可以完成大多数集合类的数据结构实现。列表中的元素类型可以不相同,支持数字,字符串甚至可以包含列表(所谓嵌套)
  • 列表是写在方括号[]之间、用逗号分隔开的元素列表
  • 列表索引值以0为开始值,-1为末尾的开始位置
  • 列表可以使用+操作符进行拼接,使用*表示重复
1
2
nameList = ["Jack", "Mike", "Tony", "Tom"]
print(nameList[2])

列表内可以存在不同数据类型的元素,照样也可以打印出来

1
2
3
4
5
6
7
8
9
10
testList = [0, "张三", 12.35]
print(testList[0])
print(testList[1])
print(testList[2])
'''
结果:
0
张三
12.35
'''

2.2.1 增

  • append:在末尾增加一个元素
  • extend:将元素逐一追加到末尾
  • insert:指定下标位置插入元素
1
2
3
4
5
6
nameList = ["Jack", "Mike", "Tony", "Tom"]

# 增: [append]:在末尾追加一个元素
nameList.append(input("请输入添加学生的姓名:"))
for name in nameList:
print(name)
1
2
3
4
5
6
7
8
a = [1, 2]
b = [3, 4]
a.append(b) # 将列表当做一个元素,直接加到a列表中
print(a)
'''
结果:
[1, 2, [3, 4]]
'''
1
2
3
4
5
6
7
8
a = [1, 2]
b = [3, 4]
a.extend(b) # 将b列表中的每个元素,逐一追加到a列表中
print(a)
'''
结果:
[1, 2, 3, 4]
'''
1
2
3
4
5
6
7
a = [0, 1, 2]
a.insert(1, 3) # 第一个变量表示下标,第二个变量表示元素(对象)
print(a)
'''
结果:
[0, 3, 1, 2]
'''

2.2.2 删

  • del :在指定位置删除一个元素
  • pop:弹出末尾最后一个元素
1
2
3
4
5
6
7
8
movieName = ["哈利波特", "指环王", "霍比特人", "加勒比海盗", "钢铁侠"]

del movieName[2] # 在指定位置删除一个元素
print(movieName)
'''
结果:
['哈利波特', '指环王', '加勒比海盗', '钢铁侠']
'''
1
2
3
4
5
6
7
8
movieName = ["哈利波特", "指环王", "霍比特人", "加勒比海盗", "钢铁侠"]

movieName.pop() # 弹出末尾最后一个元素
print(movieName)
'''
结果:
['哈利波特', '指环王', '霍比特人', '加勒比海盗']
'''
1
2
3
4
5
movieName = ["哈利波特", "指环王", "霍比特人", "加勒比海盗", "钢铁侠"]


movieName.remove("加勒比海盗") # 直接删除指定内容的元素
print(movieName)

注:在使用remove时,列表中可以出现重复的数据,而remove只会删除第一个出现的指定元素

2.2.3 改

直接指定要修改的内容就可以

1
2
3
4
5
6
7
8
nameList = ["Jack", "Mike", "Tony", "Tom"]

nameList[1] = "Jerry"
print(nameList)
'''
结果:
['Jack', 'Jerry', 'Tony', 'Tom']
'''

2.2.4 查

  • in 或者 not in
  • index
  • count
1
2
3
4
5
6
findName = input("请输入要查找的学生姓名:")

if findName in nameList:
print("找到!")
else:
print("没找到!")
1
2
3
4
5
6
7
a = ["a", "b", "c", "a", "b"]

print(a.index("a", 1, 4)) # 在指定下标之间查找指定元素
'''
结果:
3
'''

注:范围区间为左闭右开,例如当下标范围是[1, 3]时,是查不出“a”元素的

1
2
3
a = ["a", "b", "c", "a", "b"]

print(a.count("b")) # 统计某个元素出现几次

2.2.5 排序

1
2
3
4
5
6
7
8
9
10
a = [1, 5, 6, 3, 0, 7, 2, 8]
a.sort() # 升序
print(a)
a.sort(reverse=True) # 降序
print(a)
'''
结果:
[0, 1, 2, 3, 5, 6, 7, 8]
[8, 7, 6, 5, 3, 2, 1, 0]
'''

2.2.6 反转

1
2
3
4
5
6
7
a = [1, 5, 6, 3, 0, 7, 2, 8]
a.reverse()
print(a)
'''
结果:
[8, 2, 7, 0, 3, 6, 5, 1]
'''

2.2.7 二维数组

1
2
3
schoolNames = [["清华大学", "北京大学"], ["上海交通大学", "复旦大学", "华东师范大学"], ["华南理工大学", "华南师范大学", "深圳大学"]]

print(schoolNames[1][2])

例:一共有三间空的办公室,有八个人,将这八个人随机分配到这三间空的办公室中,每间办公室人数不限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import random
offices = [[], [], []]

names = ["A", "B", "C", "D", "E", "F", "G", "H"]

for name in names:
index = random.randint(0, 2)
offices[index].append(name)

i = 1
for office in offices:
print("办公室%d的人数:%d" % (i, len(office)))
i += 1
for name in office:
print("%s" % name, end="\t")
print("\n")
print("-"*20)

'''
结果:
办公室1的人数:3
A C H

--------------------
办公室2的人数:4
B D F G

--------------------
办公室3的人数:1
E

--------------------
'''

2.3 元组

  • tuple与list相似,但是tuple中的元素不能修改。tuple写在小括号里,元素之间用逗号隔开

  • 元组的元素不可变,但可以包含可变对象,如list

    注:定义只有1个元素的tuple,必须加逗号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tup1 = ()			# 空元组
print(type(tup1))

tup2 = (50)
print(type(tup2))

tup3 = (50,)
print(type(tup3))
'''
结果:
<class 'tuple'>
<class 'int'>
<class 'tuple'>
'''
1
2
3
4
5
6
7
8
9
10
11
tup1 = ("abc", "def", 123, 456, 789, 1111)

print(tup1[0])
print(tup1[-1]) # 访问最后一个元素
print(tup1[1:5]) # 左闭右开,进行切片
'''
结果:
abc
1111
('def', 123, 456, 789)
'''

2.3.1 增(连接)

1
2
3
4
5
tup1 = (12, 34, 56)
tup2 = ("abc", "def")

tup = tup1 + tup2
print(tup)

2.4 字典

  • 字典是无序的对象集合,使用键-值(key-value)存储,具有极快的查找速度。
  • 键(key)必须使用不可变类型。
  • 同一个字典中,键(key)必须是唯一的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
info = {"name": "张三", "age": 18}

print(info["name"])
print(info["age"])

print(info.get("gender")) # 通过get来查找是否有这个键,如果没有找到,则默认返回None
print(info.get("gender", "m")) # 如果没有找到,可以设定返回的默认值
'''
结果:
张三
18
None
m
'''

2.4.1 增

1
2
3
4
info = {"name": "张三", "age": 18}
info["id"] = input("请输入新的学号:")

print(info["id"])

2.4.2 删

在删除指定键值对后,再次访问的话会报错

1
2
3
info = {"name": "张三", "age": 18}
del info["name"]
print(info["age"])
1
2
3
info = {"name": "张三", "age": 18}
info.clear() # 清空字典中所有元素
print(info)

2.4.3 改

1
2
3
info = {"name": "张三", "age": 18}
info["age"] = 20 # 直接修改即可
print(info["age"])

2.4.4 查

1
2
3
4
5
6
7
8
9
10
info = {"id": "1", "name": "张三", "age": 18}
print(info.keys()) # 得到所有的键(列表)
print(info.values()) # 得到所有的值(列表)
print(info.items()) # 得到所有的项(列表),每个键值对是一个元组
'''
结果:
dict_keys(['id', 'name', 'age'])
dict_values(['1', '张三', 18])
dict_items([('id', '1'), ('name', '张三'), ('age', 18)])
'''
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
info = {"id": "1", "name": "张三", "age": 18}

for key in info.keys():
print(key)
print("-"*20)

# 遍历所有的值
for value in info.values():
print(value)
print("-"*20)

# 遍历所有的键值对
for key, value in info.items():
print("key=%s, value=%s" % (key, value))
'''
结果:
id
name
age
--------------------
1
张三
18
--------------------
key=id, value=1
key=name, value=张三
key=age, value=18
'''
1
2
3
4
5
6
7
8
9
10
11
12
# 使用枚举函数,同时拿到列表中的下标和元素
myList = ["a", "b", "c", "d"]

for i, x in enumerate(myList):
print(i+1, x)
'''
结果:
1 a
2 b
3 c
4 d
'''

2.5 集合

  • set与dict类似,也是一组key的集合,但是不存储value。由于key不能重复,所以在set中,没有重复的key。
  • set是无序的,重复元素在set中自动被过滤

2.6 小结

是否有序 是否可变类型
列表[ ] 有序 可变类型
元组( ) 有序 不可变类型
字典{ } 无序 key不可变,value可变
集合{ } 无序 可变类型(不重复)

本站由 Cccccpg 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。