【数据分析基础】实验一 Python运算符、内置函数、序列基本用法

一、实验目的

  1. 熟练运用Python运算符。
  2. 熟练运用Python内置函数。
  3. 掌握Python的基本输入输出方法。
  4. 了解lambda表达式作为函数参数的用法。
  5. 掌握列表、元组、字典、集合的概念和基本用法。
  6. 了解Python函数式编程模式。

二、 实验内容:

1. 在命令模式测试如下命令,通过结果理解并熟练掌握以下内置函数:

(1)程序代码:

>>> from random import randint

>>> a = randint(1, 100) for i in range(10)

>>> print(max(a), min(a), sum(a))

100 27 664

>>> sum(a)/len(a)

66.4

(2)运行结果(截图):

(1)程序代码:

>>> x = list(range(11))

>>> import random

>>> random. shuffle(x)

>>> x

0, 9, 6, 2, 1, 10, 8, 3, 5, 4, 7

>>> sorted(x)

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

>>> y = 'aaaa', 'bc', 'd', 'b', 'ba'

>>> sorted(y, key=lambda item: (len(item), item))

'b', 'd', 'ba', 'bc', 'aaaa'

>>> sorted(x, key=lambda item: len(str(item)), reverse=True)

10, 0, 9, 6, 2, 1, 8, 3, 5, 4, 7

>>> sorted(x, key=str)

0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9

>>>

(2)运行结果(截图):

(1)程序代码:

>>> list(map(str, range(5)))

'0', '1', '2', '3', '4'

>>> def add5(v):

... return v+5

...

>>> list(map(add5, range(10)))

5, 6, 7, 8, 9, 10, 11, 12, 13, 14

>>> def add(x, y):

... return x+y

...

>>> list(map(add, range(5), range(5, 10)))

5, 7, 9, 11, 13

>>>

(2)运行结果(截图):

(1)程序代码:

>>> range(5)

range(0, 5)

>>> list()

>>> list(range(1, 10, 2))

1, 3, 5, 7, 9

>>> list(range(9, 0, -2))

9, 7, 5, 3, 1

(2)运行结果(截图):

(1)程序代码:

>>> list(zip('abed', 1, 2, 3))

('a', 1), ('b', 2), ('e', 3)

>>> list(zip('123', 'abe', ',.!'))

('1', 'a', ','), ('2', 'b', '.'), ('3', 'e', '!')

>>> x = zip('abcd', '1234')

>>> list(x)

('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')

(2)运行结果(截图):

2. 编写程序,输入任意大的自然数,输出各位数字之和。

参考代码:

(1)程序代码:

python 复制代码
num = input('请输入一个自然数:')
print(sum(map(int, num)))

(2)运行结果(截图):

3. 编写程序,输入两个集合 setA setB ,分别输出它们的交集、并集和差集 setA-setB

参考代码:

(1)程序代码:

python 复制代码
setA = eval(input('请输入一个集合:'))
setB = eval(input('再输入一个集合:'))
print('交集:', setA & setB)
print('并集:', setA | setB)
print('setA-setB', setA - setB)

(2)运行结果(截图):

4. 编写程序,输入一个包含若干整数的列表,输出一个新列表,要求新列表中只包含原列表中的偶数。

(1)程序代码:

python 复制代码
lst = input('请输入一个包含若干整数的列表:')
lst = eval(lst)
print(list(filter(lambda x: x % 2 == 0, lst)))

(2)运行结果(截图):

5. 编写程序,输入两个分别包含若干整数的列表lstA和lstB,输出一个字典,要求使用列表lstA中的元素作为键,列表lstB中的元素作为值,并且最终字典中的元素数量取决于lstA和lstB中元素最少的列表的数量。

(1)程序代码:

python 复制代码
lstA = eval(input('请输入包含若干整数的列表lstA:'))
lstB = eval(input('请输入包含若干整数的列表lstB:'))
result = dict(zip(lstA, lstB))
print(result)

(2)运行结果(截图):

6. 编写程序,输入一个包含若干整数的列表,输出新列表,要求新列表中的所有元素来自于输入的列表,并且降序排列。

(1)程序代码:

python 复制代码
lst = eval(input('请输入包含若干整数的列表lst:'))
print(sorted(lst, reverse=True))

(2)运行结果(截图):

7. 编写程序,输入一个字符串,输出期中出现次数最多的字符及其出现的次数。要求使用字典。

(1)程序代码:

python 复制代码
data = input('请输入一个字符串: ')
d = dict()
for ch in data:
    d[ch] = d.get(ch, 0) + 1
    mostCommon = max(d.items(), key=lambda item: item[1])
print(mostCommon)

(2)运行结果(截图):

三、实验任务

  1. 学习教材第1章、第2章内容,根据实验内容练习相关编程知识。
  2. 独立完成如下编程任务并提交实验报告。(报告撰写要求详见模板文档)

1. 编写程序,输入一个包含若干整数的列表,输出列表中所有整数连乘的结果。

(1)程序代码:

python 复制代码
lst = eval(input('请输入一个包含若干整数的列表: '))
result = 1
for num in lst:
    result *= num
print("列表中所有整数连乘的结果为:", result)

(2)运行结果(截图):

2. 编写程序,生成包含1000个0~100的随机整数,并统计每个元素的出现次数。

(1)程序代码:

python 复制代码
import random
random_numbers = [random.randint(0, 100) for _ in range(1000)]
count_dict = {}
for num in random_numbers:
    count_dict[num] = count_dict.get(num, 0) + 1
print("每个元素的出现次数统计:", count_dict)

(2)运行结果(截图):

部分截图

3. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排序,后10个元素降序排列,并输出结果。

(1)程序代码:

python 复制代码
import random
random_numbers = [random.randint(0, 100) for _ in range(20)]
first_half = sorted(random_numbers[:10])
second_half = sorted(random_numbers[10:], reverse=True)
sorted_list = first_half + second_half
print("排序后的列表:", sorted_list)

(2)运行结果(截图):

部分截图

4. 编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标闭区间直接的元素组成的子列表。例如用户输入 1,2,3,4,5,6 和2,5,程序输出 3,4,5,6

(1)程序代码:

python 复制代码
lst = eval(input('请输入一个列表: '))
start_index = int(input('请输入起始下标: '))
end_index = int(input('请输入结束下标: '))
sub_list = lst[start_index:end_index+1]
print("子列表:", sub_list)

(2)运行结果(截图):

四、实验总结:

知识点小结

在本次实验中,我深入学习并实践了Python的多个核心概念和技巧。我掌握了Python的基本运算符,这让我能够进行基础的数学计算和逻辑判断。

我也通过实际编程,熟练运用了Python的内置函数,比如max(), min(), sum(), sorted()等,这些函数极大地简化了我的数据处理工作。

此外,我还了解了lambda表达式的用法,尤其是在对列表进行排序和筛选时,lambda表达式提供了极大的便利。

对于Python的序列类型,如列表、元组、字典和集合,我通过实验加深了理解,并学会了如何有效地使用它们来存储和操作数据。我也接触了函数式编程的概念,通过使用map(), filter()等函数,我学会了如何将问题分解成更小的、可复用的部分,并通过函数的组合来解决它们。

实验体会

通过这次实验,我体会到了理论知识与实践操作相结合的重要性。我发现,只有将所学的概念应用到具体的编程任务中,才能真正理解和掌握它们。

未解决的问题

在实验过程中,在理解某些内置函数的高级用法和优化代码性能方面。我发现,对于一些复杂的编程问题,我还需要更多的练习和学习才能找到最佳的解决方案。

改进的方法

为了进一步提高Python编程能力,我计划采取以下几个措施:

  1. 深入学习:我将通过阅读Python官方文档、参考书籍和在线教程来加深对Python内置函数和数据结构的理解。

  2. 大量练习:我打算通过完成更多的编程练习和项目来提高我的编程技巧,特别是在数据处理和算法设计方面。

  3. 反思总结:我会定期回顾和总结我的学习过程,找出知识盲点和不足之处,并制定相应的学习计划。

相关推荐
Lyn_Li20 小时前
扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具)
python·pdf·ocr·tesseract·开源工具·文档处理·本地处理·扫描件纠偏
金銀銅鐵20 小时前
费马小定理
python·数学·算法
疋瓞1 天前
python和C++对比(1)_数据类型和数据结构
数据结构·c++·python
程序员老油条1 天前
WSL2 + Docker Desktop:Windows 下的完美 Java 开发环境
java·windows·docker·wsl2
如此这般英俊1 天前
手搓Claude Code-第六章 subagent
数据结构·人工智能·python·语言模型·自然语言处理
foggyprojects1 天前
从0开始,一句话启动AI DataAgent
后端·数据分析·ai编程
元Y亨H1 天前
Python - FastAPI 全方位介绍
python·fastapi
error:(1 天前
【系统与实战双精通】VS Code 调试 ROS2 Python 节点与 Launch 系统指南
android·java·python
weigangwin1 天前
LlamaIndex 第一次试用:别先写 RAG Demo,先验上下文合同
python·ai·agent·rag·检索·llamaindex·观测性
省四收割者1 天前
一文详解信号完整性(1)
python·嵌入式硬件·数学建模·信息与通信·信号处理·智能硬件