当前位置: 首页 > news >正文

python基础(2)

  声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

感谢泷羽sec 团队的教学
视频地址:初识python,环境配置,编程基础以及数据类型_哔哩哔哩_bilibili

一、条件控制语句 if 和 elif

if语句用于条件判断,elif(else if)用于添加多个条件分支。如果条件满足,则执行对应的代码。 

代码演示:

# 条件控制语句
#input
# if 语句
# if 条件表达式:
#     语句块
# elif 条件表达式:
#     语句块
# else:
#     语句块# 例子1:high = input("请输入你的身高: ")if high >= '150':print('你身高超过150cm,买全票!')elif '120' < high < '150':print('你身高超过120cm,买半票!')else:print('你身高低于120cm,免票!')

 二、循环控制

1、while循环

while循环在条件为真时持续执行代码块,可以通过break跳出循环,或使用continue跳过当前循环,继续下一次。

# 循环控制语句
# while 循环# 这是一个简单的循环程序,用于打印从1到10的数字。
# 此函数使用while循环打印数字,并在完成后输出结束信息。
n = 1
while n <= 10:print(n)n = n+1
print("循环结束")# break 语句
# 你可以使用 break 语句来终止循环。
# 此部分演示了如何使用break终止循环,当a等于5时,循环将结束。
a = 1
while a <= 10:print(a)a = a + 1if a == 5:break  # 跳出循环
print("循环结束")# continue 语句
# 你可以使用 continue 语句来跳过当前的循环,并直接开始下一次的循环。
# 此部分展示了continue语句的用法,当b等于5时跳过该值的打印,继续下次循环。
b = 0
while b <= 10:  # 因为是判断b小于等于10,所以当b等于10的时候,还会循环一次,因此终端会打印11b = b + 1if b == 5:continue  # 跳出循环, 开始下一次循环,即终端并不会打印5print(b)print("循环结束")

2、for循环

for循环用于遍历可迭代对象,例如列表、字符串、字典等:

# 循环控制语句
# for 循环,用于遍历各种可迭代对象# 遍历列表
# 这部分代码遍历一个包含水果名称的列表,并打印每个水果fruits = ['apple', 'banana', 'orange']
for fruit in fruits:print(fruit)# 遍历字符串
# 这部分代码遍历一个字符串,并打印字符串中的每个字符name = 'hello word'
for x in name:print(x)# 遍历字典
# 这部分代码遍历字典中的不同元素,包括键、值和键值对person = {'name': 'GGB', 'age': '18', 'city': 'china'}# 遍历字典中的键
# 打印字典中所有的键
for key in person.keys():print(key)# 遍历字典中的值
# 打印字典中所有的值
for value in person.values():print(value)# 遍历字典中的键值对
# 打印字典中的每个键值对
for key, value in person.items():print(f"{key}: {value}")

for else语句

在for循环正常结束时会执行else代码块,但如果被break打断,则不会执行else中的代码

# 循环控制语句
# for 循环,用于遍历各种可迭代对象
# for else 循环,在循环正常结束时执行 else 语句块
# 该代码块展示了 for 循环和 else 语句的结合用法for x in range(10):print(x)
else:print("循环正常结束")# 如果在循环中使用了 break 语句,则 else 语句块将不会执行
# 该代码块展示了使用 break 语句时 else 语句的行为
for i in range(10):print(i)if i == 5:break
else:print("循环正常结束")

三、函数

1、函数声明

函数声明(定义)是使用 def关键字来创建一个函数。函数可以包含参数,并且可以返回一个值。

# 函数声明def hello_world(name):  # 声明函数hello_world,参数为nameprint(f"Hello World, {name}")  # 函数的主体,打印Hello World并带上用户输入的名字
2、函数调用

函数调用是执行函数的过程。通过函数名和必要的参数来调用一个函数。

# 函数调用
if __name__ == '__main__':  # 程序的入口name = input("请输入你的名字:")  # 使用input函数获取用户输入的名字hello_world(name)  # 调用hello_world函数并传入name参数
3、递归调用

递归调用是指函数在其定义中调用自身。递归通常用于解决可以分解为更小子问题的问题。每个递归函数都需要一个基准条件以防止无限递归。 

# 递归函数# 计算n的阶乘
def factorial(n):if n == 0:  # 基准条件,递归函数的终止条件是n=0,当n不为0时,函数会一直调用自身,直到n=0时返回1,然后逐层返回结果。return 1else:return n * factorial(n - 1)  # 递归调用函数,直到n=0时返回1if __name__ == '__main__':n = int(input("请输入一个整数:"))  # 使用input函数获取用户输入的整数result = factorial(n)  # 调用factorial函数并传入n参数print(f"{n}! = {result}")  # 打印n的阶乘结果
4、参数传递

在 Python 中,函数可以接收参数。参数可以是位置参数、关键字参数、默认参数和可变参数。

  • 位置参数:按位置传递参数。
# 位置参数
def greet(name, message):print(f"Hello, {name}! {message}")greet("GGB", "早上好!")  # 位置参数传递,按照参数定义的顺序传递参数值
  • 关键字参数:使用 key=value 的方式传递参数。
# 关键字参数
def greet(name, message):print(f"Hello, {name}! {message}")greet(name="GGB", message="早上好!")  # 关键字参数传递,按照参数名传递参数值
  • 默认参数:为参数提供默认值。
# 默认参数
def greet(name, message="早上好!"):print(f"Hello, {name}! {message}")greet("GGB")  # 不传递message参数,使用默认值"早上好!"
  • 可变参数:使用 *name 来接收可变数量的参数。 
# 可变参数
def greet(*names):for name in names:print(f"Hello, {name}!")# 此函数用于接收任意数量的名称并打印问候信息greet("GGB", "Tom", "Frank")  # 可变参数传递,可以传递任意数量的参数,参数会被打包成一个元组传递给函数
5、效果演示

  

四、迭代器和生成器

1、迭代器
# 迭代器使用iter()函数创建,next()函数获取下一个元素
# 迭代器只能使用一次,使用完毕后,需要重新创建迭代器
# 创建一个列表
my_list = [1, 2, 3, 4, 5]# 使用迭代器
my_iter = iter(my_list)# 使用next()方法获取迭代器的下一个元素
print(next(my_iter))  # 1
print(next(my_iter))  # 2
print(next(my_iter))  # 3
print(next(my_iter))  # 4
print(next(my_iter))  # 5

  

2、生成器
# 生成器
# 生成器是一种特殊的迭代器,它不存储所有的值,而是生成值,需要的时候才生成。
# 它使用yield关键字来生成值,每次调用next()方法,生成器会返回yield关键字后面的值。
# 它可以节省内存,因为它不存储所有的值,而是生成值。
# 它可以实现迭代器的功能,但是它只能使用一次。
# 定义一个生成器
def my_generator():for i in range(10):yield i# 使用生成器my_gen = my_generator()# 使用next()方法获取生成器的下一个元素
print(next(my_gen))  # 0
print(next(my_gen))  # 1
print(next(my_gen))  # 2
print(next(my_gen))  # 3
print(next(my_gen))  # 4
print(next(my_gen))  # 5
# 只使用了5次next()方法,因此生成器只生成了5个值。

  

五、异常处理

## 异常处理示例def add(a, b):# 计算并打印两个数字的和print(f"{a}+{b} = {a + b}")if __name__ == '__main__':try:# 可能发生异常的代码a = int(input("输入第一个数字: "))b = int(input("输入第二个数字: "))except ValueError:# 捕捉到值错误异常,提示用户输入数字print("请输入数字!")else:# 如果没有异常,调用加法函数add(a, b)finally:# 无论是否发生异常,我都会执行呢print("无论是否发生异常,我都会执行呢")     # 无论是否发生异常,都会执行 finally 语句

  

六、文件读写

文件读写使用with open

with open()是一种上下文管理方式,在打开文件后自动关闭文件,避免资源浪费。常用模式有:

  • 'r':读取模式
  • 'w':写入模式
  • 'a':追加模式
1、写文件
# 写文件
with open('text.txt', 'w') as f:for i in range(10):f.write(str(i)+'\n')
2、追加文件
# 追加文件
with open('text.txt', 'a') as f:f.write('\n'+'Hello, world!')
3、读取文件
# 读取文件
with open('text.txt', 'r') as f:content = f.read()print(content)

  


http://www.mrgr.cn/news/67975.html

相关文章:

  • LLMs之RAG:《LightRAG: Simple and Fast Retrieval-Augmented Generation》翻译与解读
  • EasyExcel 学习之 导出 “提示问题”
  • C++——C++11新语法(中)
  • 越权访问漏洞
  • A013-基于SpringBoot的宽带业务管理系统的设计与实现
  • class com.alibaba.fastjson2.JSONObject cannot be cast to class com.ruoyi.sys
  • SpringBoot监控
  • 模糊理论与模糊集概述
  • 一文了解Android本地广播
  • 探索开放资源上指令微调语言模型的现状
  • 鸿蒙多线程开发——TaskPool任务池
  • Scala学习记录,List
  • 嵌入式linux中设备树控制硬件的方法
  • 【初阶数据结构与算法】沉浸式刷题之顺序表练习(顺序表以及双指针两种方法)
  • Serverless云计算服务
  • Java SPI机制简单讲解
  • Markdown 全面教程:从基础到高级
  • salesforce批量修改对象字段的四种方法
  • VScode建立Java项目
  • 一文带你深度了解FreeRTOS——递归互斥信号量
  • 2024年网鼎杯青龙组|MISC全解
  • Jest项目实战(5):发布代码到 npm
  • 矩阵论 •「线性空间、基变换与向量坐标变换」
  • Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南
  • yakit中的fuzztag
  • Ubuntu安装Python并配置pip阿里镜像教程 - 幽络源