复习python

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

# 列表转元组

# 定义一个列表
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

# 元组转列表

# 定义一个元组
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

# python 数据类型有哪些,他们有什么特点

# 1. 整数 (int):

  • 表示整数值,例如 -2042
  • 不包含小数点。

# 2. 浮点数 (float):

  • 表示带有小数点的数字,例如 3.142.0-0.5
  • 支持科学计数法,例如 1.2e3 表示 1200.0

# 3. 字符串 (str):

  • 表示文本序列,用单引号或双引号括起,例如 'hello'"world"
  • 支持字符串拼接、切片和许多其他操作。

# 4. 布尔值 (bool):

  • 表示逻辑值,只有两个取值:TrueFalse
  • 用于条件判断和逻辑运算。

# 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

# 使用迭代方式生成斐波那契数列:


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

# 爬虫四个步骤

  1. 找出要爬取的网页对应的 URL

  2. 用浏览器打开要爬取的网页,查看源代码,找出包含想要信息的字符串模式。可能是文件名、链接地址等等。

  3. 用 requests 库 编程获取 URL 对应的网页

  4. 用正则表达式或者 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

# 找出所有整数和小数

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

# 找出小于 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

# 密码判断


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

# 找<>中的数

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

# 求素数

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
Last Updated: 12/28/2023, 9:48:19 AM