9月22作业 - python基础

一、主观题

1、python中一行代码太长,强制换行如何实现?

使用反斜杠 \ 进行显式换行;

对于列表、元组、字典等容器类型,可直接换行(隐式换行):

1
2
3
4
5
6
7
8
9
10
11
12
# 使用 \ 换行
item1 = '苹果,'
item2 = '香蕉,'
item3 = '橘子'
temp = item1 + \
item2 + \
item3

# 容器类型直接换行
arr = ['苹果',
'香蕉',
'橘子']

2、python 中 隐式类型转换有哪些?强制类型转换有哪些?

  • 隐式类型转换(自动)
1
print(1 + 2.0)  # → 3.0(int自动转float)

注意:字符串和数字不能隐式转换,会报错

  • 强制类型转换(显式)
1
2
3
4
5
6
7
8
int(x)      # 转整型
float(x) # 转浮点
str(x) # 转字符串
repr(x) # 转为表达式字符串
eval(str) # 执行字符串表达式
chr(x) # 整数转字符
ord(x) # 字符转整数
hex(x) # 转十六进制字符串

3、如何定义列表?读写列表、列表切片、列表相加、重复、获取列表长度,判断列表是否包含某元素

  • 定义:用方括号 [],如 lst = [1, 2, 3]
  • 读写:通过索引访问或修改,如 lst[0], lst[1] = 99
  • 切片lst[start:end:step],如 lst[1:3]
  • 相加/重复+ 拼接,* 重复,如 [1,2] + [3,4], [1] * 3
  • 长度len(lst)
  • 判断包含:用 in,如 3 in lst

4、如何定义空元组?读取元组、元组切片、重复、获取长度?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 定义空元组
empty_tuple = ()

# 定义非空元组
tuple1 = (1, 'a', True)

# 读取
print(tuple1[0]) # 1

# 切片
print(tuple1[1:3]) # ('a', True)

# 重复
print(tuple1 * 2) # (1, 'a', True, 1, 'a', True)

# 长度
print(len(tuple1)) # 3

单元素元组:必须加逗号,如 (1,)

注意:元组不可修改元素(但可修改其包含的可变对象如列表)

5、如何定义set集合?新增列表值、删除列表值、定义空集合、集合运算

注意:不能新增“列表值”,因为列表不可哈希

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 定义集合
set1 = {1, 2, 3}

# 定义空集合(必须用 set())
set2 = set()

# 新增元素(只能是可哈希类型)
set2.add(4)
set2.update([5, 6]) # 批量添加

# 删除元素
set2.remove(4) # 不存在报错
# 或
set2.discard(4) # 不存在不报错

# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a - b) # 差集 {1,2}
print(a | b) # 并集 {1,2,3,4,5}
print(a & b) # 交集 {3}
print(a ^ b) # 对称差集 {1,2,4,5}

6、List列表中存在重复的值,如何去重?

最简单是转为 set 再转回 list,但会丢失顺序;

若需保持顺序,可用遍历判断是否已存在。

1
2
3
4
5
6
7
8
9
10
11
12
lst = [1, 2, 2, 3, 3, 4]

# 方法1:转set(不保证顺序)
unique = list(set(lst))

# 方法2:手动遍历(保持顺序)
unique = []
for x in lst:
if x not in unique:
unique.append(x)

print(unique) # [1, 2, 3, 4]

7、如何定义字典?定义空字典、新增字典、删除字典、修改字典、遍历循环字典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 定义字典
dist1 = {'apple': '苹果', 'banana': '香蕉'}

# 定义空字典
dist2 = {}

# 新增/修改
dist2['apple'] = '苹果' # 新增
dist2['apple'] = '苹果2' # 修改

# 删除
del dist2['apple']

# 遍历键
for key in dist2:
print(key, dist2[key])

# 遍历键值对
for key, value in dist2.items():
print(key, value)

8、python常见的数学方法有哪些?

需导入 math 模块

  • abs(), max(), min(), pow()
  • ceil(), floor(), round()
  • modf() 分离整数小数部分
  • pi, e 常数
1
2
3
4
5
6
7
8
9
10
11
from math import ceil, floor, modf, pi

abs(-5) # 绝对值 → 5
ceil(3.2) # 上取整 → 4
floor(3.8) # 下取整 → 3
round(3.5) # 四舍五入 → 4
max(1,2,3) # 最大值 → 3
min(1,2,3) # 最小值 → 1
pow(2,3) # 2^3 → 8
modf(3.14) # 分离整数小数 → (0.14, 3.0)
pi # 圆周率

9、如何随机取出数组两个不重复的成员?

可先随机取一个,再取第二个并判断是否相同,不同则保留,相同则重取;更优方法是使用 random.sample(seq, 2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from random import choice

arr = [1, 2, 3, 4, 5, 6]

# 方法:先选第一个,再选第二个(确保不同)
a = choice(arr)
b = choice(arr)
while b == a:
b = choice(arr)

print(a, b)

# 或使用 sample
# from random import sample
# print(sample(arr, 2))

10、python有哪些随机方法?区别是什么?

1
2
3
4
5
6
7
8
9
from random import choice, shuffle, uniform

choice(seq) # 从序列随机选一个元素
shuffle(list) # 原地打乱列表(无返回值)
uniform(a,b) # 生成[a,b]间随机浮点数

# 补充:
# randint(a,b) - 生成[a,b]间整数
# random() - 生成[0,1)间浮点数

11、定义一个学生数据的字典类型、包含字段id、姓名、得分、日期,然后循环输出到终端界面,注意输出好看些。

1
2
3
4
5
student = {'id': 1001,'name': '张三','score': 95.5,'date': '2025-09-22'}
print("=============================================")
for key, value in student.items():
print(f"{key:>8} : {value}")
print("=============================================")

image-20250922203436529

12、练习python随机生成git hash码

Git Hash 是 40 位十六进制字符串,可用 random.choice0123456789abcdef 中随机选 40 次拼接而成。

1
2
3
4
5
6
7
from random import choice
from string import hexdigits

def generate_git_hash():
return ''.join(choice(hexdigits.lower()) for _ in range(40))

print(generate_git_hash())

二、进阶题

1、定义一个学生数据的列表类型、包含字段id、姓名、得分、日期。然后在使用input获取用户输入的页码,在终端实现一个简单的分页显示效果

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
34
35
36
37
students = [
{'id': 1001, 'name': '张三', 'score': 95.5, 'date': '2025-09-22'},
{'id': 1002, 'name': '李四', 'score': 88.0, 'date': '2025-09-21'},
{'id': 1003, 'name': '王五', 'score': 92.5, 'date': '2025-09-20'},
{'id': 1004, 'name': '赵六', 'score': 78.0, 'date': '2025-09-19'},
{'id': 1005, 'name': '钱七', 'score': 85.5, 'date': '2025-09-18'},
{'id': 1006, 'name': '孙八', 'score': 90.0, 'date': '2025-09-17'},
]

PAGE_SIZE = 2

def show_page(page_num):
start = (page_num - 1) * PAGE_SIZE
end = start + PAGE_SIZE
page_data = students[start:end]

total_pages = (len(students) + PAGE_SIZE - 1) // PAGE_SIZE
print(f"\n=== 第 {page_num} 页 / 共 {total_pages} 页 ===")
print("-" * 50)
print(f"{'ID':<6} {'姓名':<10} {'得分':<8} {'日期':<12}")
print("-" * 50)
for s in page_data:
print(f"{s['id']:<6} {s['name']:<10} {s['score']:<8} {s['date']:<12}")
print("-" * 50)

while True:
try:
page = int(input("请输入页码(输入0退出): "))
if page == 0:
break
total_pages = (len(students) + PAGE_SIZE - 1) // PAGE_SIZE
if 1 <= page <= total_pages:
show_page(page)
else:
print(f"页码超出范围(1-{total_pages})")
except ValueError:
print("请输入数字")

image-20250922203706539

今日默写和语音题

1、python有哪些数据类型?

  • 数字类型:整数 int、浮点数 float、复数 complex、布尔型 bool
  • 字符串类型str
  • 列表类型list
  • 元组类型tuple
  • 集合类型set
  • 字典类型dict
  • 字节类型bytes
  • 特殊类型:None假值

2、检测python数据类型的方法是什么?

使用内置函数:type()

1
2
print(type(123))     # <class 'int'>
print(type('abc')) # <class 'str'>

3、python强制类型转换有哪些?

  • int(x) —— 转整型
  • float(x) —— 转浮点型
  • str(x) —— 转字符串
  • repr(x) —— 转为表达式字符串(带引号)
  • eval(str) —— 执行字符串表达式
  • chr(x) —— 整数转字符(ASCII)
  • ord(x) —— 字符转整数(ASCII码)
  • hex(x) —— 转十六进制字符串

int, float, str, repr, eval, chr, ord, hex

明天默写和面试题

1、怎样确定CPU占用最高的进程?

使用top命令动态查看,按大写P键可以调整成按CPU占用率排序。
也可以在查看全部进程的ps aux的基础上使用sort长选项进行排序,然后使用head命令提取前几行,即:ps aux –sort=-%cpu | head -n 2。

2、如何两台设备之间传输文件?

使用scp命令在两台设备之间传输文件,当然,前提条件是这两台设备是网络连通的。
而在网络不连通的场景下,我们如果物理接触方便的话可以考虑使用U盘这类存储介质进行传递。

3、网络如果连不通怎么办?

首先检查物理连接,以确保所有线缆都已正确且牢固地插入。
然后检查网络设置,确认在操作系统中配置的网络设置是否正确,例如IP地址、子网掩码、默认网关和DNS服务器等。
如果无误再测试网络连接,使用ping命令测试网络连通性,如:ping www.baidu.com。
如果无法ping通,则可能是互联网连接出现问题。

4、项目如何部署?

首先,不同的项目有不同的部署方式。

如果有文档的话,我会依照文档上的内容进行部署;
对于没有文档的项目,则会依照项目的需求进行部署。

我的这个项目的部署流程,首先是准备好了一台Linux系统的设备,然后配置系统的网络设置,使其变更为静态网络,同时更新现有的系统环境。

准备完毕后,安装项目所需的MySQL、Nginx、jre等所需的应用。

然后启动MySQL服务,配置好MySQL服务针对项目所需的用户,导入项目所需的数据库结构;

启动Nginx服务,配置开机自启,添加前端静态资源,对应后端服务,配置好反向代理;

书写一个项目的外置配置文件,同时配置一个项目的启动服务,创建一个用户,专门运行项目的启动服务,并使其使用外置配置文件启动项目,以覆盖项目现有的数据库资源信息。

至此,项目的服务全部配置完毕。

然后放行项目的前端端口和被反向代理后的API端口。

使用另外一台设备,访问配置好项目的服务器的IP地址和端口号以作测试。测试通过则部署完毕。

答案在:http://47.110.66.96/helper/guide/devops.html