复习python
luffy 12/27/2023 other
# 复习选择题
https://dreamluffe.github.io/PTA/PTA _ 程序设计类实验辅助教学平台.html (opens new window)
# 字符串切片
# 一、语法:
序列名[开始位置下:结束位置下标:步长] 左开右闭
1
代码实现
# 语法: 序列名[开始位置:结束位置:步长]
str1 = '0123456789'
print(str1[2:5:1]) # 结果:234
# 从下标2开始对应数字是2,到下标是5结束对应数字是5,等得到2345,但是左闭右开的,5这个数字去不到,,最后得到结果是234
print(str1[2:5:2]) # 结果:24
# 从下标2开始对应数字是2,到下标是5结束对应数字是5,在这基础之上步长间隔是2,那就是2开始位置的数据是要的加上2,选取出来的就是4,又不包含结束位置所以5取不到最后结果是24
print(str1[2:5]) # 结果:234 步长不写,步长默认为1
print(str1[:5]) # 结果:01234 开始位置不写,默认从0开始选取
print(str1[2:]) # 结果:23456789 结束位置不写,表示选取到最后
print(str1[:]) # 结果:0123456789 如果不写开始和结束,表示选取所有
# 负数测试
print(str1[::-1]) # 结果:9876543210 如果步长为负数,表示倒序选取
print(str1[-4:-1:]) # 结果:678 ----下标-1表示最后一个数据,依次向前类推
# 终极测试
print(str1[-4:-1:1]) # 结果:678
print(str1[-4:-1:-1]) # 不能选取出数据:从-4开始达到-1结束,选取方向为从左到右,但是步长-1选取方向为从右向左
# 总结: 如果选取方向(下标开始到结束的方向)和 步长的方向冲突,则无法选取数据
# 修改一下就可以选取出
print(str1[-1:-4:-1]) # 结果 987
# 开始位置-1选取到的数字是9,结束位置-4从数字9开始向左数,第-4个数字是6但不包含6,所以结果为987,方向为从右向左;而步长方向是从右向左,方向一致所以可以取到数据
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 列表转元组
# 定义一个列表
my_list = [1, 2, 3, 4, 5]
# 使用 tuple() 函数将列表转换为元组
my_tuple = tuple(my_list)
# 打印结果
print(my_tuple)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 元组转列表
# 定义一个元组
my_tuple = (1, 2, 3, 4, 5)
# 使用 list() 函数将元组转换为列表
my_list = list(my_tuple)
# 打印结果
print(my_list)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# python 数据类型有哪些,他们有什么特点
# 1. 整数 (int
):
- 表示整数值,例如
-2
,0
,42
。 - 不包含小数点。
# 2. 浮点数 (float
):
- 表示带有小数点的数字,例如
3.14
,2.0
,-0.5
。 - 支持科学计数法,例如
1.2e3
表示1200.0
。
# 3. 字符串 (str
):
- 表示文本序列,用单引号或双引号括起,例如
'hello'
,"world"
。 - 支持字符串拼接、切片和许多其他操作。
# 4. 布尔值 (bool
):
- 表示逻辑值,只有两个取值:
True
或False
。 - 用于条件判断和逻辑运算。
# 5. 列表 (list
):
- 有序的可变序列,可以包含不同类型的元素,例如
[1, 2, 'three', 4.0]
。 - 支持索引、切片和多种操作。
# 6. 元组 (tuple
):
- 有序的不可变序列,类似于列表,但一旦创建就不能修改,例如
(1, 2, 'three', 4.0)
。 - 用于不希望被修改的数据集合。
# 7. 集合 (set
):
- 无序的可变集合,不包含重复元素,例如
{1, 2, 3}
。 - 支持集合操作,例如并集、交集、差集等。
# 8. 字典 (dict
):
- 无序的键-值对集合,每个元素由键和对应的值组成,例如
{'name': 'John', 'age': 25}
。 - 用于存储和访问具有关联关系的数据。
# 斐波那契数列
# 使用递归方式生成斐波那契数列:
def fibonacci_recursive(n):
if n <= 0:
return "输入必须是正整数"
elif n == 1:
return 1
elif n == 2:
return 1
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
# 打印斐波那契数列的前 10 项
for i in range(1, 11):
print(fibonacci_recursive(i))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 使用迭代方式生成斐波那契数列:
def fibonacci_iterative(n):
if n <= 0:
return "输入必须是正整数"
fib_sequence = [1, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
return fib_sequence
# 打印斐波那契数列的前 10 项
print(fibonacci_iterative(10))
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 爬虫四个步骤
找出要爬取的网页对应的 URL
用浏览器打开要爬取的网页,查看源代码,找出包含想要信息的字符串模式。可能是文件名、链接地址等等。
用 requests 库 编程获取 URL 对应的网页
用正则表达式或者 beautifulSoup 库抽取网页中想要的内容,并且保存
# 正则
# 找出所有整数
import re
m ='[0-9]+'
while True:
try:
s = input()
lst = re.findall(m,s)
for x in lst:
print(x)
except:
break
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 找出所有整数和小数
import re
m='[0-9]+\.[0-9]+|[0-9]+'
while True:
try:
s = input()
lst = re.findall(m,s)
for x in lst:
print(x)
except:
break
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 找出小于 100 的整数
import re
m = r"(^|[^0-9-])(\d{1,2})([^0-9]|$)"
for i in range(2):
s = input()
lst = re.findall(m,s)
for x in lst:
print(x[1])
1
2
3
4
5
6
7
2
3
4
5
6
7
# 密码判断
import re
m='[A-Za-z][-A-Za-z0-9_]{7,}\Z'
while True:
try:
s = input()
if re.match(m,s) != None:
print("yes")
else:
print("no")
except:
break
while True:
try:
s = input()
if re.match(m,s) != None:
print("yes")
else:
print("no")
except:
break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 找<>中的数
n=int(input())
import re
for i in range(n):
s=input()
m='<(0|[1-9][0-9]{0,2})>'
result=re.findall(m,s)
if result==None:
print("NONE")
elif len(result)==0:
print("NONE")
else:
for x in result:
print(x,end=" ")
print("")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 求素数
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def generate_primes(n):
primes = [num for num in range(2, n+1) if is_prime(num)]
return primes
# 示例:生成小于等于10的素数
n = 10
result = generate_primes(n)
print(result)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17