Python数据分析系列(二):python基础

news2024/11/17 9:35:21

文章目录

  • 前言
  • 一、条件语句
    • 1、if 语句
    • 2、else 语句
    • 3、elif 语句
    • 4、条件嵌套
    • 练习题
  • 二、循环语句
    • 1、for循环
    • 2、while循环
    • 3、循环中的break/continue和else、pass
      • break
      • continue
      • else
      • pass
    • 4、循环与递归
    • 练习题
  • 三、python函数
    • 1、自定义函数
    • 2、lambda函数(匿名函数)
    • 3、常用标准库函数
      • math模块
      • os模块
      • random模块
      • datetime模块
        • datetime模块下的date类
        • datetime模块下的time类
        • datetime模块下datetime类
    • 练习题
  • 四、python异常处理
    • 1、try-except
      • 练习题
    • 2、raise


前言

本文主要介绍python选择结构语句—if条件语句、控制结构语句—循环语句的使用、python函数(自定义函数、匿名函数、常用标准库函数)、python异常处理(try-except、raise)。


一、条件语句

1、if 语句

语法:

if expression:
    expr_true_suite

expression (条件表达式):

  • 比较运算符
  • 成员运算符
  • 逻辑运算符

expr_true_suite

  • expression条件为True时执行的代码块
  • 代码块必须缩进(通常为4个空格)

在这里插入图片描述

示例:

a=3
if a==3:
	print("yes!")

2、else 语句

语法:

if expression:
	expr_true_suite
else:
	expr_false_suite

expr_false_suite

  • expression 条件为False时执行的代码块
  • 代码块必须缩进
  • else语句不缩进

在这里插入图片描述
示例:

a=100
if a>100:
	print(a-10)
else:
	print(a+10)

3、elif 语句

语法:

if expression:
	expr_true_suite
elif expression2:
	expr2_true_suite
...
...
elif expressionN:
	exprN_true_suite
else:
	none_of_the_above_suite

expr2_true_suite

  • expression2为True时执行的代码块

exprN_true_suite

  • expressionN为True时执行的代码块

else

  • none_of_the_above_suite是以上所有条件不满足时执行的代码块

示例:

k=input("input the index of shape:")
if k=="1":
	print("circle")
elif k=="2":
	print("oval")
elif k=="3":
	print("rectangle")
elif k=="4":
	print("triangle")
else:
	print("you input the invalid number")

4、条件嵌套

语法:

if expression:
	expr_true_suite
elif expression2:
	expr2_true_suite
	if expression2_1:
		expr2_1_true_suite
	else:
		expr2_1_false_suite
...
...
elif expressionN:
	exprN_true_suite
else:
	none_of_the_above_suite

示例:

k=input("input the index of shape:")
if k=="1":
	print("circle")
elif k=="2":
	print("oval")
elif k=="3":
	sd1=int(input())
	sd2=int(input())
	if sd1==sd2:
		print("the square's area is",sd1*sd2)
	else:
		print("the rectangle area is",sd1*sd2)	
elif k=="4":
	print("triangle")
else:
	print("you input the invalid number")

练习题

题目1:

编写一个输入分数,输出分数等级的程序,具体为:
Score
Grade
90~100 A
70~89 B
60-69 C
0-59 D
othersInvalid score
请添加必要的输入输出语句,尽量让程序友好

score = eval(input("请输入你的分数:"))
if score >= 90 and score <= 100:
	print("你的成绩等级是A")
elif score >= 70 and score < 90:
	print("你的成绩等级是B")
elif score >=60 and score < 70:
	print("你的成绩等级是C")
elif score >=0 and score < 60:
	print("你的成绩等级是D")
else:
	print("othersInvalid score")

题目2:

编写程序,从键盘输入一个一元二次方程ax^2+bx+C=0的三个参数a、b、c(a、b和c均为整数,且a不等于0) ,求此方程的实根。如果方程有实根,则输出实根(保留一位小数),如果没有实根则输出没有实根的信息
[输入样例1]
1,0,-1
[输出样例1]
x1 = 1.0, x2 = -1.0
[输入样例2]
1,2,1
[输出样例2]
x=-1.0
[输入样例3]
2.2.3
[输出样例3]
no real solution

#b^2-4ac>0:有两个不相等的实根
#b^2-4ac=0:有且仅有一个实根
#b^2-4ac<0:没有实根

import math
a,b,c = eval(input("请输入a,b,c值:"))
x = b**2-4*a*c
if x > 0:
	x1 = (-b+math.sqrt(x))/(2*a)
	x2 = (-b-(math.sqrt(x))/(2*a))
	print("x1=",x1,"x2=",x2)
elif x == 0:
	x1 = (-b)/(2*a)
	print("x1=",x1)
else:
	print("no real solution")

题目3:

请分别用if-elif-else结构和嵌套的if结构实现符号函数 (sign function) ,符号函数的定义为:
在这里插入图片描述

#方法一:if-elif-else结构
x = eval(input("请输入一个数字:"))
if x > 0:
	sgn = 1
elif x < 0:
	sgn = -1
else:
	sgn = 0
print('sgn = {:.0f}'.format(sgn))

#方法二:嵌套的if结构
x=eval(input("请输入一个数字:"))
if x != 0:
	if x<0:
		sgn = -1
	else:
		sgn = 1
else:
	sgn = 0
print('sgn = {:.0f}'.format(sgn))
  • eval 作用是将字符串当成有效的表达式来求值并返回计算结果。

二、循环语句

1、for循环

语法:

for iter_var in iterable_object:
	suite_to_repea

iterable_object

  • String
  • List
  • Tuple
  • Dictionary
  • File

可以明确循环次数

  • 遍历一个数据集内的成员
  • 在列表解析中使用
  • 生成器表达式中使用

示例:

for i in range(2,12,2):
	print(i,end=' ')

s="hello"
for i in s:
	print(i,end=' ')

for i in range(len(s)):
	print(s[i],end=' ')

range()函数

常常在与for循环一起使用。

语法:

range(start,end,step=1) :不包括end值
range(start,end) :缺省step值为1
range(end) :缺省start值为0,缺省step值为1

参数:

start:起始值(包含)
end:终值(不包含)
step:步长(不能为0)

返回:

产生一系列整数,返回一个range对象。

示例:

list(range(3,12,2))
list(range(3,12))
list(range(12))

2、while循环

语法:

while expression:
	suite_to_repeat

expression

  • 条件表达式
  • 当expression值为True时执行suite_to_repeat代码块

示例:

sumA=0
j=1
while j<10:
	sumA+=j
	j+=1
sumA

总结: for与while选择

for循环 while循环
循环次数明确
循环次数不明确
把一件事情重复N遍

3、循环中的break/continue和else、pass

【注】:Tab键和空格键不能同时混用

break

break语句:终止当前循环,转而执行循环之后的语句。

  • for 循环与break

语法:

# break语句搭配for循环
for ... in ...:
	...
	if ...:
		break

示例1:

for i in range(5):
	print("轻舟已过万重山")
	if i==3: 
		break #结束循环

本来会循环5次,但循环到第4次时就被break语句打断。

示例2:输出2-100之间的素数。

from math import sqrt
for i in range(2,101):
	flag=1
	k=int(sqrt(i))
	for j in range(2,k+1):
		if i%j == 0:
			flag=0
			break
	if (flag):
		print(i,end=' ')
  • while循环和break

语法:

# break语句搭配while循环
while ...(条件):
	...
	if ...:
		break

示例1:

while True:
	print("轻舟已过万重山")
	t=input("诗句的作者是谁?")
	if t == "李白":
		break
print("李白——《早发白帝城》")

示例2:输出2-100之间的素数。

from math import sqrt
j=2
while j<100:
	i=2
	k=sqrt(j)
	while i <= k:
		if j % i == 0:
			break
		i+=1
	if i>k:
		print(j,end=' ')
	j+=1

continue

continue语句:停止当前循环,重新进入循环!!! 一定要注意,在循环中执行continue语句接下来的语句后面的不会执行。)

  • for循环则判断迭代是否已经结束
  • while循环则判断 循环条件是否满足
  • for循环与continue

语法:

for ... in ...:
	...
	if ...:
		continue
	...

在这里插入图片描述

示例1:

for i in range(5):
	print("轻舟已过万重山")
	if i == 3:
		continue
	print("李白——《早发白帝城》")

当i==3时会触发continue语句,于是回到了循环开头,跳过了一句print语句。

示例2:

sumA=0 
i =1
for i in range(1,6) :
 	sumA+=i
 	if i==3:
 		continue
 	print("i={},sum={}".format(i,sumA))
  • while循环与continue

语法:

while ...(条件):
	...
	if ...:
		continue
	...

在这里插入图片描述
示例1:

while True:
	q1=input("轻舟已过万重山来源于哪首诗?")
	if q1 != "早发白帝城":
		continue
	print("答对了,下面是第二问")
	q2=input("这首诗的作者是谁?")
	if q2 != "李白":
		continue
	print("答对了,下面是第三问")
	q3=input("李白最终的下场是怎么样的?")
	if q3 == "不知道":
		break
print("恭喜你都答对了。")	

如果q1错,q1对q2错,q1和q2对q3错,都会返回第一个问题重新循环,直到q3答对,才结束循环。

示例2:

sumA=0 
i =1
while i<=5:
 	sumA+=i
 	i+=1
 	if i==3:
 		continue
 	print("i={},sum={}".format(i,sumA))

else

循环中的else,else不但可以和if配合使用,还能跟for循环和while循环配合使用。

  • 如果循环代码从break处终止,跳出循环。
  • 正常结束循环,则执行else中代码。
  • for循环与else

示例:

for i in range(5):
	num=int(input("Please enter a number:"))
	if num == 0 :
		print("你触发了break语句,循环结束,导致else语句不会生效")
		break 
else:
	print("5次循环你都错过了,else语句生效了。")
  • while循环与else

示例:

from math import sqrt
num=int(input("Please enter a number:"))
j=2
while j<int(sqrt(num)):
	if num %j ==0:
		print("{:d} is not a prime.".format(num))
		break
	j+=1
else:
	print("{:d} is not a prime.".format(num))

pass

pass 语句:跳过

示例:

num=int(input("Please enter a number:"))
if num>100:
	pass
else:
	print(num)

总结:

语句 说明
break语句 从循环中跳出(必须和if语句连用)
continue语句 跳跃到循环开头(必须和if语句连用)
pass语句 什么都不做(常用在if语句下)
else语句 用在循环语句后,如果正常结束循环就执行else语句(没有遇到break)

4、循环与递归

示例:斐波那契数列

0,1,1,2,3,5,8…
规律:从第三位数开始,是前两位数的和。

循环表示:

def fib(n):
	a,b = 0,1
	count = 1
	while count < n :
		a,b = b,a+b
		count = count+1
	print(b)

递归表示:

def fib(n):
	if n == 0 or n == 1:
		return n 
	else:
		return fib(n-1)+fib(n-2)

在这里插入图片描述

示例2:模拟3的个数乘法。

def f1(a,b):
    if b==1:
        return a 
    else:
        return a+f1(a,b-1)
f1(3,5)

# 输出:
# 15

3+f(3,4)
3+3+f(3,3)
3+3+3+f(3,2)
3+3+3+3+f(3,1)

示例3:十进制表示为二进制的表示方法。

def f2(n):
    if n>=2:
        f2(n//2)
    print(n%2,end='')

f2(8)

练习题

题目1:

输入一个整数,求其逆序数。注:虽然可通过字符串切片等方法轻获得一个数的逆序数,但用整数通过循环来获得逆序数是锻炼逻思维的一好例子。

方法一:字符串切片。

str_int=eval(input("请输入一个整数"))
list_int=list(str_int)
if list_int[0] >= list_int[1]:
	new_int=list_int[0]+list_int[1]
else:
	new_int=list_int[1]+list_int[0]

for i in range(2,len(list_int)):
	for j in new_int:
		if list_int[i]>j:			
			new_int.split('j')[0]+list_int[i]+j+new_int.split('j')[1]
		else:
			new_int+i
print(new_int)	

方法二:用整数通过循环来获得逆序数。

n=eval(input("请输入一个整数"))
s=0
m=n
while n != 0:
	s= s * 10 + n % 10
	n=n // 10
print("reversed({:d}) = {:d}",format(m,s))

题目2:

将一个正整数分解质因数。例如: 输入90打印出90=2*3*3*5。

n=int(input("请输入一个正整数:"))

print(n,'=',end='') #这个循环是怎么弄的?
i=2
while n != 1:
	if n % i ==0:
		n //=i
		if n ==1:
			print('{:d}'.format(i))
		else:
			print('{:d} *'.format(i),end =' ')
	else:
		i +=1

三、python函数

1、自定义函数

  • 定义函数:def()语句

语法:

def 函数名(参数1,参数2,.....,参数n): 
	函数体 	
	return 语句

示例:

def hello(name):
	print(name+"Good morning!"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5训练结果分析

本文的目的是帮助理解每次训练后&#xff0c;在runs/train文件夹下出现的一系列文件&#xff0c;并探索如何评估准确率以及模型的好坏。 一.混淆矩阵—confusion_matrix.png 毕设跑的train有混淆矩阵&#xff0c;但是有点扯&#xff0c;需要跑一下鸟类的验证一下(待验证) 1.概…

吴恩达2022机器学习专项课程(一)8.2 解决过拟合

目录 解决过拟合&#xff08;一&#xff09;&#xff1a;增加数据解决过拟合&#xff08;二&#xff09;&#xff1a;减少特征特征选择缺点 解决过拟合&#xff08;三&#xff09;&#xff1a;正则化总结 解决过拟合&#xff08;一&#xff09;&#xff1a;增加数据 收集更多训…

python web开发开源规范

Hello , 大家好。首先在五一假期给所有劳动者创造者们送上祝福&#xff0c; 本文聊聊我对python web开源相关的规范 PEP 8 Python编程风格指南:PEP 8是Python编程的官方风格指南&#xff0c;提供了关于代码格式、命名规范、注释等方面的建议。遵循PEP 8可以使代码更易于阅读和…

Spring Data JPA数据批量插入、批量更新真的用对了吗

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 前言 在前两篇文章已经介绍过&#xff0c;在使用Spring Data JPA时&#xff0c;DAO层的Respository通过继承J…

【PHP】安装指定版本Composer

1、下载指定版本composer.phar文件&#xff1a;https://github.com/composer/composer/releases 2、将下载的文件添加到全局路径&#xff1a; sudo mv composer.phar /usr/local/bin/composer 3、赋予权限&#xff1a; sudo chmod x /usr/local/bin/composer 4、查看compos…

Android 文件传输

经常写adb命令传文件&#xff0c;结果发现Android studio有自带的文件管理器&#xff0c;可以上传下载文件。

模型剪枝-Network Slimming算法分析

代码见文末 论文地址&#xff1a;Learning Efficient Convolutional Networks through Network Slimming ICCV 2017 Open Access Repository 1.概述 由于边缘设备的限制&#xff0c;在模型的部署中经常受到模型大小、运行内存、计算量的限制。之前的方法要么只能解决其中一个…

hdc不是内部或外部命令,也不是可运行的程序或批处理文件。【鸿蒙报错已解决】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结Bug解决方案寄语项目场景: 最近遇到了这个问题,看到网上也有人在询问这个问题,实操了很多网上的解决方案发现并不能解决这个Bug,所以我在解决这个问题后,总结了自己和其他人的解决经验,进行了整理,写…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

2024年五一杯高校数学建模竞赛(A题)|钢板切割问题 | 建模解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;通过路径优化解决钢板切割问题。结合贪心算法&#xff0c;Floyd-Warshall等多元算法…

【开发技巧 | 第一篇】Typora快捷键方式给字体添加颜色

文章目录 1.Typora快捷键方式给字体添加颜色1.1下载并安装AutoHotkey1.2新建ahk脚本文件1.3运行ahk脚本文件1.4小结 1.Typora快捷键方式给字体添加颜色 1.1下载并安装AutoHotkey 点击下载: https://autohotkey.com/download/ahk-install.exe下载安装包&#xff0c;执行安装&a…

数据结构算法——链表带环问题——数学深度解析

前言:本节内容主要是讲解链表的两个问题 &#xff1a;1、判断链表是否带环&#xff1b; 2、一个链表有环&#xff0c; 找到环的入口点。 本节内容适合正在学习链表或者链表基础薄弱的友友们哦。 我们先将问题抛出来&#xff0c;友友们可以自己去力扣或者牛客网去找相应题目&…

STM32 F103C8T6学习笔记17:类IIC通信—MLX90614红外非接触温度计

今日学习配置MLX90614红外非接触温度计 与 STM32 F103C8T6 单片机的通信 文章提供测试代码讲解、完整工程下载、测试效果图 本文需要用到的大概基础知识&#xff1a;1.3寸OLED配置通信显示、IIC通信、 定时器配置使用 这里就只贴出我的 OLED驱动方面的网址链接了&#xff1a…

线上线下收银一体化,新零售POS系统引领连锁门店数字化转型-亿发

在市场竞争日益激烈的背景下&#xff0c;没有哪个商家能够永远屹立不倒。随着互联网技术的快速发展&#xff0c;传统的线下门店面临着来自电商和新零售的新型挑战。实体零售和传统电商都需要进行变革&#xff0c;都需要实现线上线下的融合。 传统零售在客户消费之后就与商家失…

群晖Docker部署Java jar包

安装群晖Docker组件Container Manager 打开组件,找到注册表搜索java,安装java映像 安装完成后会在映像目录里展示出来,点击运行 常规设置按需配置即可 这里要设置一个文件夹目录给这个容器来使用 一般来说给个/root来用就够了 设置完成后可以在容器目录里看到容器已经运行起来了…

判断循环链表以及其环入口

文章目录 题目题目链接题目要求 解题思路方法一&#xff1a;哈希表方法二&#xff1a;双指针 进阶思考快指针一次走三步 进阶问题&#xff08;入口点&#xff09;题目链接题目要求问题思路 总结 题目 题目链接 环形链表 题目要求 解题思路 显而易见的是&#xff0c;单纯的遍…

可靠的Mac照片恢复解决方案

当您在搜索引擎搜索中输入“Mac照片恢复”时&#xff0c;您将获得数以万计的结果。有很多Mac照片恢复解决方案声称他们可以在Mac OS下恢复丢失的照片。但是&#xff0c;并非互联网上的所有Mac照片恢复解决方案都可以解决您的照片丢失问题。而且您不应该花太多时间寻找可靠的Mac…

uniapp 对接 Apple 登录

由于苹果要求App使用第三方登录必须要求接入Apple登录 不然审核不过 所以&#xff1a; 一、勾选苹果登录 二、 设置AppId Sign In Apple 设置完成重新生成描述文件 &#xff01;&#xff01;&#xff01;&#xff01;证书没关系 示例代码&#xff1a; async appleLogin…

2024年最新省市县三级行政区划数据(审图号:GS(2024)0650号)

2024年省、市、县三级行政区划数据由国家基础地理信息中心发布&#xff0c;通过《2024版国家地理信息公共服务平台&#xff08;天地图&#xff09;》正式对外提供。这份数据涵盖了最新的省市县三级行政区划信息&#xff0c;更新于2024年1月&#xff0c;提供了详细的矢量数据下载…

食谱管理和餐饮计划应用Mealie

放假除了休闲娱乐&#xff0c;也不能忘了美食 什么是 Mealie &#xff1f; Mealie 是一个自托管的食谱管理和餐饮计划应用&#xff0c;具有 RestAPI 后端和基于 Vue 构建的响应式前端应用&#xff0c;为整个家庭提供愉快的用户体验。通过提供 URL&#xff0c;您可以轻松将食谱…