python数据分析--- ch1-2 python初识入门

2024-06-12 10:04

本文主要是介绍python数据分析--- ch1-2 python初识入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python数据分析--- ch1-2 python初识入门

  • 1. 安装并启动jupyter
  • 2. 打印变量print()
    • 练一练
  • 3. 变量与赋值 input()
    • 3.1 示例--饮料交换
    • 3.2 饮料交换完整code
    • 3.3 jupyter中写入code到py文件中
    • 3.4 在终端运行.py文件 : python 文件名
    • 3.5练一练
      • 1:简易版
      • 2:判断版
      • 3:判断修正版
      • 4:判断修正函数版
  • 4.python 关系型运算相关知识
    • 4.1 示例--世界杯足球赛计分
    • 4.2 世界杯足球赛计分完整code并写入py文件
    • 4.3 函数的定义
    • 4.4 定义函数版完整code并写入py文件
    • 4.5 练一练
  • 5. for循环的概念与运算
    • 5.1 示例--兔子的繁殖
    • 5.2 练一练
  • 6. 字典的概念与创建
    • 6.1 示例--计算水果总价
    • 6.2 字典的创建
    • 6.3 字典内容的提取
    • 6.4 练一练
  • 7. 集合的概念与使用
    • 7.1示例--提取两班级重名学生
    • 7.2 集合的创建
    • 7.3 集合的访问
    • 7.4 集合操作
    • 7.5 练一练
  • 8. 模块
    • 8.1 示例--验证用户注册信息是否合规
    • 8.2 练习

1. 安装并启动jupyter

    1. 安装Anaconda:Windows下Anaconda软件安装教程
    1. 安装jupyter: pip install jupyter
    1. 启动jupyter: 目标文件夹空白处,shift+右键 -> 在此处打开powershell窗口 ->输入:jupyter notebook

在markdown中插入图片,默认居中对齐

  • 方法1: 菜单Edit->Insert Image 不可调节图片大小以及对齐方式
    在这里插入图片描述

  • 方法2:html形式,可调节图片大小以及对齐方式
    在这里插入图片描述

2. 打印变量print()

#打印整数
print(1234)
#查看数据类型
type(1234)

output

1234
int
print(1.2)#打印浮点数
type(1.2)#查看数据类型

output
1.2
float

print('人生苦短,我用python!')#打印字符串 用单引号

output
人生苦短,我用python!

print("人生苦短,我用python!")#打印字符串 用双引号

output
人生苦短,我用python!

#for循环,python中range生成的列表是左闭右开即包含初始值不包含结束值
for i in range(0,10):print(i)
print('循环结束')#返回的是0-9的整数,不包含10

output
0
1
2
3
4
5
6
7
8
9
循环结束

#求数值1-100的和
j=0
for i in range(1,101):j=i+j
print("和为:",j)

output
和为: 5050

练一练

请借助**print()**输出下面的图形

在这里插入图片描述

# 方法1
print("*****")
print("*****")
print("*****")
print("*****")
print("*****")

output
*****
*****
*****
*****
*****

# 方法2
print("*****\n*****\n*****\n*****\n*****")

output
*****
*****
*****
*****
*****

# 方法3
star = '*'*5
print(f"{star}\n{star}\n{star}\n{star}\n{star}")

output
*****
*****
*****
*****
*****

3. 变量与赋值 input()

1.基本用法:
input() 函数用于接收用户的输入,并将输入的内容作为字符串返回。调用 input() 时,可以提供一个可选的提示字符串(prompt),当调用时会显示在控制台或终端上。

2.提示字符串(Prompt):
提示字符串是显示在输入前的文字,用于告诉用户期望他们输入什么类型的信息。如果省略提示字符串,input() 函数只显示一个空行,等待用户输入。

3.返回值:
input() 函数总是返回一个字符串类型的值,即使用户输入的是数字或其他类型的内容。如果需要将输入转换为其他类型,必须使用相应的类型转换函数,如 int(), float() 等。

4.类型转换:
由于 input() 始终返回字符串,如果用户输入的是数字,需要显式转换类型以进行数值计算。

3.1 示例–饮料交换

在这里插入图片描述

glass1=input('请输入杯子1中的饮料名称:')

output
请输入杯子1中的饮料名称:可乐

print(glass1)

output
可乐

glass1

output
‘可乐’

glass2=input('请输入杯子2中的饮料名称:')

output
请输入杯子2中的饮料名称:牛奶

glass2

output
‘牛奶’

temp=""
temp

output
‘’

temp = glass1
temp

output
‘可乐’

glass1=glass2
glass1

output
‘牛奶’

glass2 = temp
glass2

output
‘可乐’

3.2 饮料交换完整code

glass1=input('请输入杯子1中的饮料名称:')
glass2=input('请输入杯子2中的饮料名称:')
print("交换前杯子1和杯子2中的饮料分别为:")
print(glass1)
print(glass2)
temp=""
temp = glass1
glass1=glass2
glass2 = temp
print("交换后杯子1和杯子2中的饮料分别为:")
print(glass1)
print(glass2)

output
请输入杯子1中的饮料名称:可乐
请输入杯子2中的饮料名称:牛奶
交换前杯子1和杯子2中的饮料分别为:
可乐
牛奶
交换后杯子1和杯子2中的饮料分别为:
牛奶
可乐

3.3 jupyter中写入code到py文件中

%%writefile 文件名

%%writefile ch2_1.pyglass1=input('请输入杯子1中的饮料名称:')
glass2=input('请输入杯子2中的饮料名称:')
print("交换前杯子1和杯子2中的饮料分别为:")
print(glass1)
print(glass2)
temp=""
temp = glass1
glass1=glass2
glass2 = temp
print("交换后杯子1和杯子2中的饮料分别为:")
print(glass1)
print(glass2)

output
Writing ch2_1.py

%%writefile ch2_2.pyglass1=input('请输入杯子1中的饮料名称:')
glass2="牛奶"
print("交换前杯子1和杯子2中的饮料分别为:")
print(glass1)
print(glass2)
temp=""
temp = glass1
glass1=glass2
glass2 = temp
print("交换后杯子1和杯子2中的饮料分别为:")
print(glass1)
print(glass2)

output
Overwriting ch2_2.py

3.4 在终端运行.py文件 : python 文件名

3.5练一练

请借助**input()**让注册用户输出昵称、密码以及性别信息,可自定义增加填写提示或者填写要求

1:简易版

name=input("请输入不超过8个字符作为你的昵称:")
if len(name)<=8:print(name)
else:print("请重新设置您的昵称:")password = input("请输入4个数字作为你的密码:")
if password.isdigit() and len(password)==4:print(password)
else:print("请重新设置你的密码:")sex = input("请填写您的性别(男/女):")
if sex in ['男','女']:print(sex)
else:print("请重新填写您的性别信息:")

output
请输入不超过8个字符作为你的昵称:abcdabcda
请输入4个数字作为你的密码:abcd
请填写您的性别(男/女):1

while True:sex = input("请填写您的性别(男/女):")if sex in ['男','女']:print(sex)breakelse:print("请重新填写您的性别信息:")
#         sex = input("请填写您的性别(男/女):")

output
请填写您的性别(男/女):1
请重新填写您的性别信息:
请填写您的性别(男/女):0
请重新填写您的性别信息:
请填写您的性别(男/女):3
请重新填写您的性别信息:
请填写您的性别(男/女):男

2:判断版

name=input("请输入不超过8个字符作为你的昵称:")if len(name) > 8:print("昵称长度不能超过8个字符,请重新设置")password = input("请输入4为数字作为你的密码:")
if not password.isdigit() or len(password) != 4:print("密码必须是4位数字,请重新设置")input("请输入4为数字作为你的密码:")sex = input("请填写您的性别(男/女):")if sex not in ["男", "女"]:print("性别输入错误,请填写'男'或'女'")

3:判断修正版

# name=input("请输入不超过8个字符作为你的昵称:")while True:name=input("请输入不超过8个字符作为你的昵称:")#要求if len(name) > 8:#判断print("昵称长度不能超过8个字符,请重新设置")#错误信息else:print(name)breakwhile True:password=input("请输入4为数字作为你的密码::")#要求if not password.isdigit() or len(password) != 4:#判断print("密码必须是4位数字,请重新设置")#错误信息else:print(password)breakwhile True:sex=input("请填写您的性别(男/女):")#要求if sex not in ["男", "女"]:#判断print("性别输入错误,请填写'男'或'女'")#错误信息else:print(sex)break

output
请输入不超过8个字符作为你的昵称:7777777777
昵称长度不能超过8个字符,请重新设置
请输入不超过8个字符作为你的昵称:000000
000000

4:判断修正函数版

def get_valid_input(prompt, validator, error_message):while True:user_input=input(prompt)#要求if validator(user_input):#判断
#             print(user_input)return user_input #以函数定义的话要改成return,否则输出为Noneelse:print(error_message)#错误信息# 获取符合要求的昵称
name = get_valid_input("请输入不超过8个字符作为你的昵称:", lambda name: len(name) <= 8, "昵称长度不能超过8个字符,请重新输入:")# 获取符合要求的密码
password = get_valid_input("请输入4位数字作为你的密码:", lambda password: password.isdigit() and len(password) == 4, "密码必须是4位数字,请重新输入:")# 获取符合要求的性别
sex = get_valid_input("请填写您的性别(男/女):", lambda sex: sex.lower() in ["男", "女"], "性别输入错误,请填写'男'或'女',然后重新输入:")# 所有输入均符合要求,输出确认信息
print(f"您的昵称是:{name}")
print(f"您的密码是:{password}")
print(f"您的性别是:{sex}")

output
请输入不超过8个字符作为你的昵称:plkij
请输入4位数字作为你的密码:0318
请填写您的性别(男/女):女
您的昵称是:plkij
您的密码是:0318
您的性别是:女

将上面练一练的程序写入ch2_3.py文件中

%%writefile ch2_3.pydef get_valid_input(prompt, validator, error_message):while True:user_input=input(prompt)#要求if validator(user_input):#判断return user_input #以函数定义的话要改成return,否则输出为Noneelse:print(error_message)#错误信息# 获取符合要求的昵称
name = get_valid_input("请输入不超过8个字符作为你的昵称:", lambda name: len(name) <= 8, "昵称长度不能超过8个字符,请重新输入:")# 获取符合要求的密码
password = get_valid_input("请输入4位数字作为你的密码:", lambda password: password.isdigit() and len(password) == 4, "密码必须是4位数字,请重新输入:")# 获取符合要求的性别
sex = get_valid_input("请填写您的性别(男/女):", lambda sex: sex.lower() in ["男", "女"], "性别输入错误,请填写'男'或'女',然后重新输入:")# 所有输入均符合要求,输出确认信息
print(f"您的昵称是:{name}")
print(f"您的密码是:{password}")
print(f"您的性别是:{sex}")

output
Writing ch2_3.py

type(glass1)# 查看glass1变量的类型

output
str

4.python 关系型运算相关知识

在这里插入图片描述

知识点梳理

在Python中,关系型运算也被称作比较运算,主要用于比较两个值之间的关系,并返回一个布尔值(True或False)。以下是对Python中的关系型运算符的梳理:

  • 1.等于(==):用来比较两个对象的值是否相等。例如:3 == 3 返回 True。
  • 2.不等于(!=):用来比较两个对象的值是否不相等。例如:3 != 4 返回 True。
  • 3.大于(>):用于判断左侧对象是否大于右侧对象。例如:4 > 3 将返回 True。
  • 4.小于(<):用来判断左侧对象是否小于右侧对象。例如:2 < 3 会返回 True。
  • 5.大于等于(>=):用于判断左侧对象是否大于或等于右侧对象。例如:3 >= 3 将返回 True。
  • 6.小于等于(<=):用于判断左侧对象是否小于或等于右侧对象。例如:2 <= 3 也将返回 True。

需要注意的是,关系表达式的结果只有两个可能的值,即逻辑真(True)和假(False)。这些关系运算符通常被用在if条件语句、循环以及列表推导式等多种场景中,作为程序流程控制的一部分。

4.1 示例–世界杯足球赛计分

在这里插入图片描述

v1 = True
v2 = False
type(v1)

output
bool

v1 = int(v1)#bool类型转换为整型数据:True->1 ; False->0
type(v1)

output
int

a = input("输入a球队的实力值:")
b = input("输入b球队的实力值:")
a+b #返回的是字符拼接

output
输入a球队的实力值:20
输入b球队的实力值:12

a = int(input("输入a球队的实力值:"))
b = int(input("输入b球队的实力值:"))
a+b #通过int()对input输入的字符串进行显示变换之后返回的是数值的加法运算结果

output
输入a球队的实力值:20
输入b球队的实力值:12

32
type(a)

output
int

a = int(input("输入a球队的实力值:"))#20
b = int(input("输入b球队的实力值:"))#12
c = int(input("输入c球队的实力值:"))#13
d = int(input("输入d球队的实力值:"))#23

output
输入a球队的实力值:20
输入b球队的实力值:12
输入c球队的实力值:13
输入d球队的实力值:23

avsb = int(a>b)*3+int(a==b)*1 # 计算球队a与球队b比赛的分数
avsc = int(a>c)*3+int(a==c)*1 # 计算球队a与球队c比赛的分数
avsd = int(a>d)*3+int(a==d)*1 # 计算球队a与球队d比赛的分数
score = avsb + avsc +avsd #计算球队a小组赛的总得分
print("a球队小组赛总得分为:",score)

output
a球队小组赛总得分为: 6

4.2 世界杯足球赛计分完整code并写入py文件

%%writefile ch2_4.py
a = int(input("输入a球队的实力值:"))#20
b = int(input("输入b球队的实力值:"))#12
c = int(input("输入c球队的实力值:"))#13
d = int(input("输入d球队的实力值:"))#23
avsb = int(a>b)*3+int(a==b)*1 # 计算球队a与球队b比赛的分数
avsc = int(a>c)*3+int(a==c)*1 # 计算球队a与球队c比赛的分数
avsd = int(a>d)*3+int(a==d)*1 # 计算球队a与球队d比赛的分数
score = avsb + avsc +avsd #计算球队a小组赛的总得分
print("a球队小组赛总得分为:",score)

output
Overwriting ch2_4.py

4.3 函数的定义

计算两球队比赛的分数

def x1vsx2_score(x1,x2):x1vsx2 = int(x1>x2)*3+int(x1==x2)*1return x1vsx2
avsb = x1vsx2_score(x1=a,x2=b)
avsc = x1vsx2_score(x1=a,x2=c)
avsd = x1vsx2_score(a,d)
avsd

output
0

4.4 定义函数版完整code并写入py文件

%%writefile ch2_5.py
a = int(input("输入a球队的实力值:"))#20
b = int(input("输入b球队的实力值:"))#12
c = int(input("输入c球队的实力值:"))#13
d = int(input("输入d球队的实力值:"))#23def x1vsx2_score(x1,x2):x1vsx2 = int(x1>x2)*3+int(x1==x2)*1return x1vsx2avsb = x1vsx2_score(a,b) # 计算球队a与球队b比赛的分数
avsc = x1vsx2_score(a,c) # 计算球队a与球队c比赛的分数
avsd = x1vsx2_score(a,d) # 计算球队a与球队d比赛的分数
score = avsb + avsc +avsd #计算球队a小组赛的总得分
print("a球队小组赛总得分为:",score)

output
Writing ch2_5.py

4.5 练一练

请python关系型运算完成以下练习:请小明输入期末考试三门课的成绩,然后计算这三门课程的总积分为多少。积分规则如下:

# 方法1:
score1 = int(input("请输入第一门成绩:"))
score2 = int(input("请输入第二门成绩:"))
score3 = int(input("请输入第三门成绩:"))s1 = int(score1>=60)*int(score1<90)*1 + int(score1>=90)*2 #计算课程1转换后的积分
s2 = int(score2>=60)*int(score2<90)*1 + int(score2>=90)*2 #计算课程2转换后的积分
s3 = int(score3>=60)*int(score3<90)*1 + int(score3>=90)*2 #计算课程3转换后的积分total_score = s1 + s2 + s3 #计算3门课程转换后的总积分print("您的课程总积分为:",total_score) #打印3门课程转换后的总积分

output
请输入第一门成绩:60
请输入第二门成绩:80
请输入第三门成绩:91
您的课程总积分为: 4

# 方法2:函数版
score1 = int(input("请输入第一门成绩:"))
score2 = int(input("请输入第二门成绩:"))
score3 = int(input("请输入第三门成绩:"))# 定义课程与积分转换的函数
def score_trans(score):s = int(score>=90)*2 + int(score>=60)*int(score<90)return ss1 = score_trans(score1) # 调用函数计算课程1转换后的积分
s2 = score_trans(score2) # 调用函数计算课程2转换后的积分
s3 = score_trans(score3) # 调用函数计算课程3转换后的积分total_score = s1 + s2 + s3 # 计算3门课程转换后的总积分print("您的课程总积分为:",total_score) #打印3门课程转换后的总积分

output
请输入第一门成绩:60
请输入第二门成绩:80
请输入第三门成绩:91
您的课程总积分为: 4

将上面练一练的程序写入ch2_6.py文件中

%%writefile ch2_6.pyscore1 = int(input("请输入第一门成绩:"))
score2 = int(input("请输入第二门成绩:"))
score3 = int(input("请输入第三门成绩:"))# 定义课程与积分转换的函数
def score_trans(score):s = int(score>=90)*2 + int(score>=60)*int(score<90)return ss1 = score_trans(score1) # 调用函数计算课程1转换后的积分
s2 = score_trans(score2) # 调用函数计算课程2转换后的积分
s3 = score_trans(score3) # 调用函数计算课程3转换后的积分total_score = s1 + s2 + s3 # 计算3门课程转换后的总积分print("您的课程总积分为:",total_score) #打印3门课程转换后的总积分

output
Overwriting ch2_6.py

5. for循环的概念与运算

知识点梳理

for循环是一种程序设计语言中的控制结构,用于重复执行一段代码直到满足特定的条件。以下是对for循环概念及其运算过程的详细解释:

  • 1.初始化表达式(表达式1):通常用于声明并初始化循环控制变量。
  • 2.条件表达式(表达式2):在每次循环开始时评估。如果结果为真(通常是非零值),则继续执行循环体;如果为假(零值),循环终止。
  • 3.增值表达式(表达式3):在每次循环体执行完毕后执行。通常用于更新循环控制变量,逐步使循环条件趋近于不成立的状态。
  • 4.循环体:包含一条或多条语句,它们将被重复执行,直到循环条件不再满足为止。

在编写for循环时需要注意的几个要点包括:

  • 确保在使用之前已经声明了循环控制变量。
  • 条件表达式应该能够在某些条件下最终变为假,以避免无限循环。
  • 循环体内可以包含其他控制结构,如if语句或另一个for循环,以实现更复杂的逻辑。

总的来说,for循环是编程中一个基础且重要的构造,它允许程序员以有序和自动的方式重复执行代码,从而简化了许多编程任务。

a=range(0,10)
print(a)

output
range(0, 10)

for i in range(0,10):
#     print(i)
#     print("i=",i)
#     print("i=%d"%i)print(f"i={i}")

output
i=0
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9

5.1 示例–兔子的繁殖

不考虑死亡,在空间和食物充足的情况下,农场N年后有多少只兔子?

rabbit = 3
N = int(input("请输入N的数量:"))
print(3*pow(2,3))

output
请输入N的数量:3
24

rabbit = 3
N = int(input("请输入N的数量:"))
for i in range(1,N+1):print(f"i={i}")rabbit = rabbit*2print("rabbit数量为%d"%rabbit)

output
请输入N的数量:3
i=1
rabbit数量为6
i=2
rabbit数量为12
i=3
rabbit数量为24

5.2 练一练

请用for循环生成以下九九乘法表:

for i in range(1,10):for j in range(1,i+1):k = i*jprint(f"{i}x{j}={k}",end="\t")print()

output
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81

%%writefile ch2_7.pyfor i in range(1, 10):for j in range(1, i+1):k = i*jprint(f"{j} * {i} = {k}", end="\t")print()

output
Writing ch2_7.py

N=int(input("请输入正整数 N = "))
sum_num = 0
for i in range(1,N+1):sum_num += i
print(sum_num)

output
请输入正整数 N = 100
5050

6. 字典的概念与创建

在Python中,可以使用一对花括号 {} 来创建一个字典,或者使用内置的dict()函数来创建一个字典。字典由键-值对(key-value pairs)组成,每个键都唯一且不可变(通常是字符串或数字),对应一个值。以下是一些示例:

6.1 示例–计算水果总价

container = {"苹果":5,"桃子":6,"香蕉":3,"梨子":4}
print(container) # 打印字典中的内容
container["桃子"]*3 #提取指定key对应的value:字典[key名称]

output
{‘苹果’: 5, ‘桃子’: 6, ‘香蕉’: 3, ‘梨子’: 4}
18

container["荔枝"]# 若字典中没有指定的key会报错

output
--------------------------------------------------------------

KeyError                     Traceback (most recent call last)~\AppData\Local\Temp\ipykernel_11408\305154328.py in <module>
----> 1 container["荔枝"]KeyError: '荔枝'
container.keys() # 查看字典中所有的key
dict_keys(['苹果', '桃子', '香蕉', '梨子'])
fruits = container.keys()
fruit1 = "荔枝"
w1 = 2fruit2 = "桃子"
w2 = 3fruit3 = "梨子"
w3 = 4
sales1 = 0
sales2 = 0
sales3 = 0
if fruit1  in fruits :price1 = container[fruit1]sales1 = price1 * w1  if fruit2  in fruits :price2 = container[fruit2]sales2 = price2 * w2 if fruit3  in fruits :price3 = container[fruit3]sales3 = price3 * w3 total_sale = sales1+sales2+sales3
print(f"水果总价为{total_sale}")

output
水果总价为34

num_fruits = 3
fruit = ["荔枝","桃子","梨子"]
weights = [2,3,4]
container = {"苹果":5,"桃子":6,"香蕉":3,"梨子":4}
sale = 0
for i in range(0,num_fruits):f = fruit[i]if f in container.keys():p = container[f]w = weights[i]sale += p*w
print(f"水果总价为{sale}元")

output
水果总价为34元

%%writefile ch2_8.py
num_fruits = 3
fruit = ["荔枝","桃子","梨子"]
weights = [2,3,4]
container = {"苹果":5,"桃子":6,"香蕉":3,"梨子":4}
sale = 0
for i in range(0,num_fruits):f = fruit[i]if f in container.keys():p = container[f]w = weights[i]sale += p*w
print(f"水果总价为{sale}元")

output
Writing ch2_8.py

6.2 字典的创建

在Python中,可以使用一对花括号 {} 来创建一个字典,或者使用内置的dict()函数来创建一个字典。字典由键-值对(key-value pairs)组成,每个键都唯一且不可变(通常是字符串或数字),对应一个值。以下是一些示例:

# 创建一个空字典
empty_dict = {}
print(empty_dict)

output
{}

# 创建一个包含三个键,值为空列表的字典
subject_scores={"小红":None,"小明":None,"小亮":None,
}
print(subject_scores)

output
{‘小红’: None, ‘小明’: None, ‘小亮’: None}

# 创建一个包含三个键值对的字典
subject_scores={"小红":90,"小明":80,"小亮":95,
}
print(subject_scores)

output
{‘小红’: 90, ‘小明’: 80, ‘小亮’: 95}

# 通过 dict() 函数创建字典
empty_dict1 = dict()
print(empty_dict1)subject_scores1=dict(小红=90,小明=80,小亮=95)
print(subject_scores1)

output
{}
{‘小红’: 90, ‘小明’: 80, ‘小亮’: 95}

# 使用列表推导式创建字典
students = ["小红","小明","小亮"]
scores = [90,80,95]
subject_scores2={students[i]:scores[i] for i in range(len(students))}
print(subject_scores2)

output
{‘小红’: 90, ‘小明’: 80, ‘小亮’: 95}

6.3 字典内容的提取

在Python中,字典(dictionary)是一种内置的数据结构,用于存储键(key)和值(value)的对应关系。字典的键(key)必须是唯一的,而值(value)则可以是任何数据类型。以下是字典内容的键(key)和值(value)的提取方法:

my_dict = {"小明":269,"小红":243,"小亮":227}
print(my_dict)

output
{‘小明’: 269, ‘小红’: 243, ‘小亮’: 227}

# 提取所有键(keys):使用 `keys()` 方法可以获取字典中所有的键。
keys = my_dict.keys()
print(keys)

output
dict_keys([‘小明’, ‘小红’, ‘小亮’])

# 提取所有值(values):使用 `values()` 方法可以获取字典中所有的值。
values = my_dict.values()
print(values)

output
dict_values([269, 243, 227])

# 提取键值对(items):使用 `items()` 方法或字典的 `items` 属性可以获取字典中的所有键值对。# 使用 items() 方法
items1  = my_dict.items()
print(items1)
print(list(items1)[0])

output
dict_items([(‘小明’, 269), (‘小红’, 243), (‘小亮’, 227)])
(‘小明’, 269)

for k,v in items1:print('names = ',k)print('scores = ', v)

output
names = 小明
scores = 269
names = 小红
scores = 243
names = 小亮
scores = 227

# 提取特定键的值:使用方括号 `[]` 并提供键名可以获取特定键对应的值。
scores0 = my_dict['小明']
print(scores0)

output
269

# 如果键不存在,将会抛出 KeyError
scores1 = my_dict['小白']
print(scores1)

output
---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)~\AppData\Local\Temp\ipykernel_14716\3599480679.py in <module>1 # 如果键不存在,将会抛出 KeyError
----> 2 scores1 = my_dict['小白']3 print(scores1)KeyError: '小白'
# 为了安全地提取特定键的值,可以使用 `get()` 方法,它允许您为不存在的键提供一个默认值。
scores2 = my_dict.get('小白',0)
print(scores2)

output
0

6.4 练一练

练习1:用字典的知识计算每个学生期末考试语数外的总成绩

scores_all ={'小明':[85,96,88],'小红':[72,80,91],'小亮':[83,69,75]}
print('输入为:',scores_all)
total_scores = {}
for names,s in scores_all.items():ts = sum(s)total_scores[names]= ts
print('输出为:',total_scores)

output
{‘小明’: [85, 96, 88], ‘小红’: [72, 80, 91], ‘小亮’: [83, 69, 75]}
{‘小明’: 269, ‘小红’: 243, ‘小亮’: 227}

%%writefile ch2_10.py
scores_all ={'小明':[85,96,88],'小红':[72,80,91],'小亮':[83,69,75]}
print('输入为:',scores_all)
total_scores = {}
for names,s in scores_all.items():ts = sum(s)total_scores[names]= ts
print('输出为:',total_scores)

output
Writing ch2_10.py

练习2:若分别计算期末考试语、数、外的平均成绩,应该怎么做?

# import numpy as np
scores_all ={'小明':[85,96,88],'小红':[72,80,91],'小亮':[83,69,75]}
# print(scores_all)
subject_scores = {"语文":[],"数学":[],"英语":[]
}
for names,s in scores_all.items():subject_scores['语文'].append(s[0])subject_scores['数学'].append(s[1])subject_scores['英语'].append(s[2])
print(subject_scores)#打印每科成绩对应的学生分数avg_scores ={}
for subject,s in subject_scores.items():avg_s = sum(s)/len(s)avg_scores[subject] = avg_s
print(avg_scores)

output
{‘语文’: 80.0, ‘数学’: 81.66666666666667, ‘英语’: 84.66666666666667}

%%writefile ch2_11.py
# import numpy as np
scores_all ={'小明':[85,96,88],'小红':[72,80,91],'小亮':[83,69,75]}
subject_scores = {"语文":[],"数学":[],"英语":[]
}
for names,s in scores_all.items():subject_scores['语文'].append(s[0])subject_scores['数学'].append(s[1])subject_scores['英语'].append(s[2])
print(subject_scores)#打印每科成绩对应的学生分数avg_scores ={}
for subject,s in subject_scores.items():avg_s = sum(s)/len(s)avg_scores[subject] = avg_s
print(avg_scores)

output
Writing ch2_11.py

7. 集合的概念与使用

集合(set)是一个无序的、不重复的元素集。集合可以用来执行数学上的集合操作,如并集、交集、差集和对称差集等。

7.1示例–提取两班级重名学生

#运用其它知识求一班、二班同名的学生
class1 = ['joan','bill','niki','mark','mark']
class2 = ['tom','linda','bill']
for name1 in class1:for name2 in class2:if name1 == name2:print(name1)

output
bill

#运用其它集合求一班、二班同名的学生
class1 = set(['joan','bill','niki','mark','mark'])
class2 = set(['tom','linda','bill'])
same_name = class1&class2
print(same_name)

output
{‘bill’}

Drawing

7.2 集合的创建

使用 set() 函数创建集合

# 创建一个空集合
my_set =set()
print(my_set)

output
set()

my_set1 ={}#不能用{}创建空集合,{}默认创建的是空字典
print(type(my_set1))

output
<class ‘dict’>

# 向集合中添加元素
my_set.add(1)
my_set.add(2)
my_set.add(3)
my_set.add(4)
print(my_set)

output
{1, 2, 3, 4}

# 移除集合中的元素
my_set.remove(1)
print(my_set)

output
{2, 3, 4}

# 创建一个包含元素的集合
class1 = set(['joan','bill','niki','mark','mark'])print(type(class1))

output
<class ‘set’>

# 直接定义一个包含元素的集合
class1 = {'joan','bill','niki','mark','mark'}
print(type(class1))
# 创建一个不可变集合
my_nochange = frozenset([1,2,3])
my_nochange.add(4)#不可变集合不能进行元素的增删改

output
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)~\AppData\Local\Temp\ipykernel_14716\1262365579.py in <module>
----> 1 my_nochange.add(4)AttributeError: 'frozenset' object has no attribute 'add'

在这里插入图片描述

7.3 集合的访问

在Python中,由于集合(set)是无序的,我们不能通过索引或位置来访问集合中的元素,这与列表(list)和元组(tuple)等有序数据结构不同。然而,我们可以使用以下几种方法来访问集合中的元素或进行操作:

list0=[1,5,6,9,2]
print(list0)
set0={1,5,6,9,2}#集合无序
print(set0)
set1={1,5,5,9,2}#集合会自动只保留重复元素的一个
print(set1)

output
[1, 5, 6, 9, 2]
{1, 2, 5, 6, 9}
{1, 2, 5, 9}

# 检查元素是否在集合中:使用 `in` 关键字可以检查一个元素是否存在于集合中。
my_set = {1, 2, 3}
print(4 in my_set)
print(3 in my_set)

output
False
True

# 遍历集合中的所有元素:使用 `for` 循环可以遍历集合中的所有元素。
for n in my_set:print(n)

output
1
2
3

# 获取集合的长度:使用 `len()` 函数可以获取集合中元素的数量。
len(my_set)

output
3

# 获取集合中的最小值和最大值
print(min(my_set))
print(max(my_set))
#如果集合为空,使用 `min()` 或 `max()` 函数将会抛出 `ValueError`。
my_set4 = set()
min(my_set4)

output
1
3

---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)~\AppData\Local\Temp\ipykernel_14716\3659269115.py in <module>4 #如果集合为空,使用 `min()` 或 `max()` 函数将会抛出 `ValueError`。5 my_set4 = set()
----> 6 min(my_set4)ValueError: min() arg is an empty sequence
# 检查集合是否为空
if len(my_set4)==0:print("my_set4集合为空")
else:print("my_set4集合不为空")

output
my_set4集合为空

7.4 集合操作

如并集、交集、差集和对称差集等

在这里插入图片描述

set1 = {1, 2, 3,4}
set2 = {3, 4, 5,6}
# 交集(intersection)
print(set1&set2)
print(set1.intersection(set2))

output
{3, 4}

# 并集(union)
print(set1|set2)
print(set1.union(set2))

output
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}

# 差集(difference)
print(set1-set2)
print(set1.difference(set2))

output
{1, 2}
{1, 2}

print(set2-set1)
print(set2.difference(set1))

output
{5, 6}
{5, 6}

# 对称差集(symmetric difference):两集合中交集之外的元素
print(set1^set2)

output
{1, 2, 5, 6}

7.5 练一练

求在二班出现一班没出现的学生名

#运用其它集合求一班、二班同名的学生
class1 = set(['joan','bill','niki','mark','mark'])
class2 = set(['tom','linda','bill'])
name_in2_notin1 = class2-class1
print(name_in2_notin1)

output
{‘linda’, ‘tom’}

8. 模块

在Python中一个模块就是一个文件。

模块是保存代码的最小单位,在模块中可以声明变量、函数、属性和类等Python代码元素。

  • 方式1:import<模块名>

➼如果想导入所有内容,则使用方式1。

  • 方式2:from< 模块名>import< 代码元素>

➼如果只是导入一个元素,则使用方式2。

  • ➼方式3:from<模块名>import <代码元素>as <代码元素别名>

➼如果名称有冲突或待导入模块名称很复杂,则使用方式3。

8.1 示例–验证用户注册信息是否合规

请让注册用户输出昵称、密码以及性别信息,可自定义增加填写提示或者填写要求

while True:name=input("请输入不超过8个字符作为你的昵称:")#要求if len(name) > 8:#判断print("昵称长度不能超过8个字符,请重新设置")#错误信息else:print(name)breakwhile True:password=input("请输入4为数字作为你的密码::")#要求if not password.isdigit() or len(password) != 4:#判断print("密码必须是4位数字,请重新设置")#错误信息else:print(password)breakwhile True:sex=input("请填写您的性别(男/女):")#要求if sex not in ["男", "女"]:#判断print("性别输入错误,请填写'男'或'女'")#错误信息else:print(sex)break
def get_valid_input(prompt, validator, error_message):while True:user_input=input(prompt)#要求if validator(user_input):#判断
#             print(user_input)return user_input #以函数定义的话要改成return,否则输出为Noneelse:print(error_message)#错误信息
def valid_name():while True:name=input("请输入不超过8个字符作为你的昵称:")#要求if len(name) > 8:#判断print("提示:昵称长度不能超过8个字符,请重新设置")#错误信息else:print(name)break
valid_name()
%%writefile ch2_12.py
def valid_name():while True:name=input("请输入不超过8个字符作为你的昵称:")#要求if len(name) > 8:#判断print("提示:昵称长度不能超过8个字符,请重新设置")#错误信息else:print(name)breakdef valid_password():while True:password=input("请输入4位数字作为你的密码::")#要求if not password.isdigit() or len(password) != 4:#判断print("提示:密码必须是4位数字,请重新设置")#错误信息else:print(password)breakdef valid_sex():while True:sex=input("请填写您的性别(男/女):")#要求if sex not in ["男", "女"]:#判断print("性别输入错误,请填写'男'或'女'")#错误信息else:print(sex)break

output
Writing ch2_12.py

import ch2_12
ch2_12.valid_password()

output
请输入不超过8个字符作为你的昵称:aaa
aaa

from ch2_12 import valid_password
valid_password()

output
请输入4位数字作为你的密码::d345
提示:密码必须是4位数字,请重新设置
请输入4位数字作为你的密码::1254
1254

from ch2_12 import valid_password as vp
vp()

output
请输入4位数字作为你的密码::k111
提示:密码必须是4位数字,请重新设置
请输入4位数字作为你的密码::1254
1254

import ch2_12 as f
f.valid_password()

output
请输入4位数字作为你的密码::k112
提示:密码必须是4位数字,请重新设置
请输入4位数字作为你的密码::1254
1254

8.2 练习

%%writefile ch2_13.py
x=20
y='hello world!'
bool_value=True

output
Overwriting ch2_13.py

import ch2_13
from ch2_13 import y
from ch2_13 import bool_value as z
print(ch2_13.x)
print(y)
print(z)

output
20
hello world!
True

print(x)

output
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)~\AppData\Local\Temp\ipykernel_28360\1353120783.py in <module>
----> 1 print(x)NameError: name 'x' is not defined
x='good luck!'
print(x)

output
good luck!

这篇关于python数据分析--- ch1-2 python初识入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053906

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该