03 Python 基础:数据类型、运算符与流程控制解析
文章目录
- 一、数据类型 内置的六大类
- 数字类型
- 整数类型 int
- 浮点数 float
- 布尔 bool
- 字符串 str
- 变量命名
- 二、数字类型的相互转换
- 显式类型的转换
- 整数,浮点数,复数 之间的显式转换
- 隐式类型的转换
- 三、标识符
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 运算符优先级
- 四、分支结构
- if elif else
- while 循环
- for 循环
- break
- continue
- return
一、数据类型 内置的六大类
要想在计算机的内存中保存数据,首先得说一说变量这个概念。在编程语言中,变量是数据的载体,简单的说就是一块用来保存数据的内存空间,变量的值可以被读取和修改,这是所有运算和控制的基础。
计算机能处理的数据有很多种类型,最常见的就是数值,除了数值之外还有文本、图像、音频、视频等各种各样的数据类型。虽然数据在计算机中都是以二进制形态存在的,但是我们可以用不同类型的变量来表示数据类型的差异。
数字类型
整数类型 int
Python 中可以处理任意大小的整数,而且支持二进制,八进制,十进制,十六进制。示例如下:
0b11100 # 二进制
0o111 # 八进制
0x111 # 十六进制
浮点数 float
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2,表示 1.23456 × 1 0 2 \small{1.23456 \times 10^{2}} 1.23456×102)。运行下面的代码,看看会输出什么。
print(123.456) # 数学写法
print(1.23456e2) # 科学计数法
布尔 bool
布尔型只有 True、False 两种值,要么是 True,要么是 False,可以用来表示现实世界中的“是”和“否”,命题的“真”和“假”,状况的“好”与“坏”,水平的“高”与“低”等等。如果一个变量的值只有两种状态,我们就可以使用布尔型。
布尔是 int 的子类,其他类型可以转换为布尔类型。
字符串 str
字符串是以单引号或双引号包裹起来的任意文本,比如 'hello' 和 "hello"。
变量命名
在 Python 中,变量命名需要遵循以下的规则和惯例:
- 规则部分:
- 规则1: 变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是 Unicode 字符,Unicode 称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是一些特殊字符(如:!、@、#等)是不能出现在变量名中的。我们强烈建议大家把这里说的字母理解为尽可能只使用英文字母。
- 规则2: Python 是大小写敏感的编程语言,简单的说就是大写的
A和小写的a是两个不同的变量,这一条其实并不算规则,而是需要大家注意的地方。 - 规则3: 变量名不要跟 Python 的关键字重名,尽可能避开 Python 的保留字。
- 惯例部分:
- 惯例1: 变量名通常使用小写英文字母,多个单词用下划线进行连接。
- 惯例2: 受保护的变量用单个下划线开头。
- 惯例3: 私有的变量用两个下划线开头。
二、数字类型的相互转换
显式类型的转换
显式类型转换是指通过调用特定的函数来明确地将一种数据类型转换为另一种数据类型。
整数,浮点数,复数 之间的显式转换
# 整数转浮点数
int_num = 10
float_num = float(int_num)
print(f"整数 {int_num} 转换为浮点数是 {float_num},类型为 {type(float_num)}")# 浮点数转整数,会截断小数部分
float_num = 15.8
int_num = int(float_num)
print(f"浮点数 {float_num} 转换为整数是 {int_num},类型为 {type(int_num)}")# 整数转复数
int_num = 20
complex_num = complex(int_num)
print(f"整数 {int_num} 转换为复数是 {complex_num},类型为 {type(complex_num)}")# 浮点数转复数
float_num = 25.5
complex_num = complex(float_num)
print(f"浮点数 {float_num} 转换为复数是 {complex_num},类型为 {type(complex_num)}")# 复数转整数或浮点数,只能获取实部
complex_num = complex(30, 5)
real_part_float = float(complex_num.real)
real_part_int = int(complex_num.real)
print(f"复数 {complex_num} 的实部转换为浮点数是 {real_part_float},类型为 {type(real_part_float)}")
print(f"复数 {complex_num} 的实部转换为整数是 {real_part_int},类型为 {type(real_part_int)}")
隐式类型的转换
| 操作数 1 类型 | 操作数 2 类型 | 隐式转换规则 | 结果类型 |
|---|---|---|---|
int | float | int 转换为 float | float |
int | complex | int 转换为 complex(实部为原整数,虚部为 0) | complex |
float | complex | float 转换为 complex(实部为原浮点数,虚部为 0) | complex |
bool | int | True 转换为 1,False 转换为 0 | int |
bool | float | True 转换为 1.0,False 转换为 0.0 | float |
bool | complex | True 转换为 complex(1, 0),False 转换为 complex(0, 0) | complex |
可以通过 Python 内置的函数来改变变量的类型,下面是一些常用的和变量类型相关的函数:
int():将一个数值或字符串转换成整数,可以指定进制。float():将一个字符串(在可能的情况下)转换成浮点数。str():将指定的对象转换成字符串形式,可以指定编码方式。chr():将整数(字符编码)转换成对应的(一个字符的)字符串。ord():将(一个字符的)字符串转换成对应的整数(字符编码)。
"""
变量的类型转换操作
"""
a = 100
b = 123.45
c = '123'
d = '100'
e = '123.45'
f = 'hello, world'
g = True
print(float(a)) # int类型的100转成float,输出100.0
print(int(b)) # float类型的123.45转成int,输出123
print(int(c)) # str类型的'123'转成int,输出123
print(int(c, base=16)) # str类型的'123'按十六进制转成int,输出291
print(int(d, base=2)) # str类型的'100'按二进制转成int,输出4
print(float(e)) # str类型的'123.45'转成float,输出123.45
print(bool(f)) # str类型的'hello, world'转成bool,输出True
print(int(g)) # bool类型的True转成int,输出1
print(chr(a)) # int类型的100转成str,输出'd'
print(ord('d')) # str类型的'd'转成int,输出100
说明:str 类型转 int 类型时可以通过 base 参数来指定进制,可以将字符串视为对应进制的整数进行转换。str 类型转成 bool 类型时,只要字符串有内容,不是 '' 或 "",对应的布尔值都是 True。bool 类型转 int 类型时,True 会变成 1,False 会变成 0。在 ASCII 字符集和 Unicode 字符集中, 字符 'd' 对应的编码都是 100。
三、标识符
算术运算符
| 运算符 | 名称 | 例子 | 说明 |
|---|---|---|---|
+ | 加 | a + b | 求 a 和 b 的和 |
- | 减 | a - b | 求 a 与 b 的差 |
* | 乘 | a * b | 求 a 与 b 的积 |
/ | 除 | a / b | 求 a 除以 b 的商 |
% | 取余 | a % b | 求 a 除以 b 的余数 |
** | 幂 | a ** b | 求 a 的 b 次幂 |
// | 地板除法 | a // b | 求小于 a 与 b 的商的最大整数 |
比较运算符
| 运算符 | 名称 | 例子 | 说明 |
|---|---|---|---|
== | 等于 | a == b | a 等于 b 返回 True,否则返回 False |
!= | 不等于 | a != b | 与 == 相反 |
> | 大于 | a > b | a 大于 b 时返回 True,否则返回 False |
< | 小于 | a < b | a 小于 b 时返回 True,否则返回 False |
>= | 大于等于 | a >= b | a 大于等于 b 时返回 True,否则返回 False |
<= | 小于等于 | a <= b | a 小于等于 b 时返回 True,否则返回 False |
逻辑运算符
| 运算符 | 名称 | 例子 | 说明 |
|---|---|---|---|
not | 逻辑非 | not a | a 为 True 时,值为 False,a 为 False 时,值为 True |
and | 逻辑与 | a and b | a,b 全为 True 时,计算结果为 True,否则为 False |
or | 逻辑或 | a or b | a,b 全为 False 时,计算结果为 False,否则为 True |
位运算符
| 运算符 | 名称 | 例子 | 说明 |
|---|---|---|---|
~ | 位反 | ~x | 将 x 的值按位取反 |
& | 位与 | x & y | 将 x 与 y 按位进行位运算 |
| | 位或 | x|y | 将 x 与 y 按位进行或运算 |
^ | 位异或 | x ^ y | 将 x 与 y 按位进行位异或运算 |
>> | 右移 | x >> a | 将 x 右移 a 位,高位采用符号位补位 |
<< | 左移 | x << a | 将 x 左移 a 位,低位用 0 补位 |
赋值运算符
| 运算符 | 名称 | 例子 | 说明 |
|---|---|---|---|
+= | 加赋值 | a += b | 等于 a = a + b |
-= | 减赋值 | a -= b | 等于 a = a - b |
*= | 乘赋值 | a *= b | 等于 a = a * b |
/= | 除赋值 | a /= b | 等于 a = a / b |
%= | 取余赋值 | a %= b | 等于 a = a % b |
**= | 幂赋值 | a **= b | 等于 a = a ** b |
//= | 地板除法赋值 | a //= b | 等于 a = a // b |
&= | 位与赋值 | a &= b | 等价于 a = a & b |
|= | 位或赋值 | `a | = b` |
^= | 位异或赋值 | a ^= b | 等价于 a = a ^ b |
<<= | 左移赋值 | a <<= b | 等价于 a = a << b |
>>= | 右移赋值 | a >>= b | 等价于 a = a >> b |
运算符优先级
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | () | 小括号 |
| 2 | ** | 幂 |
| 3 | ~ | 位反 |
| 4 | +,- | 正负号 |
| 5 | *,/,%,// | 乘,除,取余,地板除 |
| 6 | +,- | 加,减 |
| 7 | <<,>> | 位移 |
| 8 | & | 位与 |
| 9 | ^ | 位异或 |
| 10 | ` | ` |
| 11 | <,<=,>,>=,<>,!= | 比较 |
| 12 | not | 逻辑非 |
| 13 | and,or | 逻辑与,逻辑或 |
四、分支结构
if elif else
if、elif 和 else 语句用于根据条件的真假来决定执行哪些代码块,实现程序的分支逻辑。
if condition1:# 如果 condition1 为真,执行这里的代码statement1
elif condition2:# 如果 condition1 为假且 condition2 为真,执行这里的代码statement2
else:# 如果前面的条件都为假,执行这里的代码statement3
age = 20
if age < 18:print("你是未成年人")
elif age < 60:print("你是成年人")
else:print("你是老年人")
while 循环
while 循环用于在条件为真时重复执行代码块,直到条件变为假。
while condition:# 只要 condition 为真,就会一直执行这里的代码statement
# 示例
count = 0
while count < 5:print(count)count = count + 1
for 循环
for 循环用于遍历可迭代对象(如列表、元组、字符串等)中的元素。
for variable in iterable:# 对 iterable 中的每个元素执行这里的代码statement
# 示例
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)
break
break 语句用于在循环中提前终止循环,即使循环条件仍然为真。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:if fruit == "banana":breakprint(fruit)
continue
continue 语句用于跳过当前循环的剩余部分,直接进入下一次循环。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:if fruit == "banana":continueprint(fruit)
return
return 语句用于从函数中返回一个值,并终止函数的执行。
def function_name():# 函数体return value
# 示例
def add_numbers(a, b):return a + bresult = add_numbers(3, 5)
print(result)
希望以上 Markdown 格式的内容符合你在 CSDN 上展示的需求,如果还有其他需要调整的地方,请随时告诉我。
相关文章:
03 Python 基础:数据类型、运算符与流程控制解析
文章目录 一、数据类型 内置的六大类数字类型整数类型 int浮点数 float布尔 bool字符串 str 变量命名 二、数字类型的相互转换显式类型的转换整数,浮点数,复数 之间的显式转换 隐式类型的转换 三、标识符算术运算符比较运算符逻辑运算符位运算符赋值运算…...
通俗一点介绍什么是场外期权交易 ?
场外期权是交易所以外的市场进行交易的期权,主要由期货公司、证券公司等金融机构根据客户具体要求进行设计,最终由期货公司等机构与客户签订协议的形式进行,通俗一点理解场外期权就是股票做多的玩法交易,下文为大家科普通俗一点介…...
蓝桥杯备考:图的遍历
这道题乍一看好像没什么不对的,但是!但是!结点最大可以到10的5次方!!!我们递归的时间复杂度是很高的,我们正常遍历是肯定通过不了的,不信的话我们试一下 #include <iostream>…...
【机器学习/大模型/八股文 面经 (一)】
1. PPO算法中使用GAE的好处以及参数γ和λ的作用是什么? 参考答案: GAE(Generalized Advantage Estimation) 的优势在于通过指数加权多步TD误差,平衡优势估计的偏差与方差,提升策略优化的稳定性。γ(折扣因子):控制未来奖励的衰减程度,值越大表示更关注长期收益。λ…...
IIS漏洞攻略
一,PUT漏洞 1,在windows server 2003 中开启 WebDAV 和写权限,然后访问并使用BP抓包 2,使用PUT上传一个木马文件,后缀要改成其他格式 3,将上传的木马文件的内容写入到asp文件中,然后进行连接即…...
C++《红黑树》
在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树,那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树,在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点,接下来在试着实现红黑树的结构…...
struts2框架漏洞攻略
S2-057远程执⾏代码漏洞 环境 vulhub靶场 /struts2/s2-057 漏洞简介 漏洞产⽣于⽹站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置 或使⽤通配符namespace时,可能会导致远程代码执⾏漏洞的发⽣。同样也可能因为url标签没有设置…...
8662 234的和
8662 234的和 ⭐️难度:中等 🌟考点:模拟、二维前缀和 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int[] a ne…...
Baklib企业CMS的核心功能是什么?
企业CMS标准化发布解析 现代企业内容管理中,标准化发布模板与元数据管理构成了高效运营的基石。通过预置行业适配的文档框架与格式规范,系统能够显著降低内容创建门槛,同时确保品牌视觉与信息架构的一致性。以某智能硬件厂商为例,…...
综合章节:游戏功能扩展与深度开发
模块一:外星人管理与碰撞系统 目标:生成动态外星人群,处理移动、触边检测与子弹碰撞。 # alien.py(基础外星人类) class Alien(Sprite):def __init__(self, game):super().__init__()self.screen game.screenself.i…...
【大模型】DeepSeek攻击原理和效果解析
前几天看到群友提到一个现象,在试图询问知识库中某个人信息时,意外触发了DeepSeek的隐私保护机制,使模型拒绝回答该问题。另有群友提到,Ollama上有人发布过DeepSeek移除模型内置审查机制的版本。于是顺着这条线索,对相…...
金融行业 UE/UI 设计:解锁高效体验,重塑行业界面
在数字化浪潮中,金融行业的竞争日益激烈,用户体验(UE)和用户界面(UI)设计成为企业脱颖而出的关键。兰亭妙微凭借丰富的经验和创新的方法,为金融行业打造了一套行之有效的 UE/UI 解决方案&#x…...
在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败
在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败 当信号和槽在不同线程时,默认使用 队列连接(Qt::QueuedConnection),信号会被放入接收线程的事件队列&…...
从报错到成功:Mermaid 流程图语法避坑指南✨
🚀 从报错到成功:Mermaid 流程图语法避坑指南 🚀 🚨 问题背景 在开发文档或技术博客中,我们经常使用 Mermaid 流程图 来可视化代码逻辑。但最近我在尝试绘制一个 Java Stream 转换流程图时,遭遇了以下报错…...
串口通信接口标准 RS232/422/485
串口通信接口标准 RS232、RS422、R485 目录 串口通信接口标准 4 1 RS232 4 1.1 引言 4 1.2 协议原理 4 1.3 电平标准 5 1.4 应用场景 5 1.5 优缺点 6 1.5.1 优点 6 1.5.2 缺点 6 2 RS422 7 2.1 背景介绍 7 2.2 协议原理 7 2.2.1 差分信号传输 7 2.2.2 电平标准…...
开源链动2+1模式与AI智能名片赋能的S2B2C共享经济新生态
摘要:在数字经济浪潮中,共享经济平台正重塑个体服务者的职业生态。本文基于平台经济理论与创新扩散模型,深入探讨"开源链动21模式"对资源共享效率的革命性提升,解析AI智能名片与S2B2C商城小程序源码的技术赋能机制。通过…...
【论文#目标检测】YOLO9000: Better, Faster, Stronger
目录 摘要1.引言2.更好(Better)3.更快(Faster)4.更健壮(Stronger)使用 WordTree 组合数据集联合分类和检测评估 YOLO9000 5.结论 Author: Joseph Redmon; Ali Farhadi Published in: 2017 IEEE Conference …...
The First Indoor Pathloss Radio Map Prediction Challenge
原文:免费下载 挑战:ICASSP 2025 Chanllenge 摘要:为了鼓励进一步的研究并促进在开发基于深度学习的无线电传播模型时进行公平比较,在室内传播环境中定向无线电信号发射的探索较少的情况下,我们发起了 ICASSP 2025 年首次室内路径损耗无线电地图预测挑战赛。本概述论文介…...
Android系统深度定制:内置Google TTS语音引擎并设为默认的终极指南
一、背景与挑战 在Android 12.0的GMS套件定制化开发中,我们发现原生的文本转语音(TTS)功能存在一个关键问题:Google TTS语音包并非预装组件,导致用户需要手动下载安装后才能使用。本文将通过深度系统定制,…...
dify0.15.3升级至dify1.1.2操作步骤
参考官方文档:https://github.com/langgenius/dify/releases/tag/1.0.0 准备工作 停止docker容器后,首先是备份好现有的 docker-compose.yaml其次,解压 dify-1.1.2.zip,默认解压至 dify-1.1.2,sudo cp -r dify-1.1.2…...
Vue+SpringBoot:整合JasperReport作PDF报表,并解决中文不显示问题
文章目录 一、前言二、后端代码1、pom依赖2、Jaspersoft Studio生成的jasper文件3、main程序测试案例4、解决中文不显示问题5、web接口案例 三、Vue前端代码四、演示效果 一、前言 以前,在流行jdk1.6的时候,作pdf报表,用的软件是iReport。 …...
_DISPATCHER_HEADER结构中的WaitListHead和_KWAIT_BLOCK的关系
第一部分: // // Wait block // // begin_ntddk begin_wdm begin_nthal begin_ntifs begin_ntosp typedef struct _KWAIT_BLOCK { LIST_ENTRY WaitListEntry; struct _KTHREAD *RESTRICTED_POINTER Thread; PVOID Object; struct _KWAIT_BLOCK *R…...
游戏引擎学习第180天
我们将在某个时候替换C标准库函数 今天我们要进行的工作是替换C标准库函数,这是因为目前我们仍然在使用C语言开发,并且在某些情况下会调用C标准库函数,例如一些数学函数和字符串格式化函数,尤其是在调试系统中,我们使…...
在Spring Boot中,可以通过实现一些特定的接口来拓展Starter
在Spring Boot中,开发者可以通过实现一些特定的接口来拓展Starter。这些接口允许开发者自定义Spring Boot应用程序的配置和行为,从而创建功能丰富且易于使用的Starter。以下是一些关键的接口,用于拓展Starter: EnvironmentPostPro…...
C# 属性(Property)详解
在 C# 中,属性(Property) 是类或结构体中的成员,用于封装对私有字段(称为 backing field)的访问,提供更灵活和安全的数据操作方式。属性通过 get 和 set 访问器控制对数据的读写&#x…...
专业级 AI 提示生成工具清单
1. 引言 近年来,随着 GPT-3、GPT-4 等大规模预训练语言模型的广泛应用,提示(Prompt)工程作为驱动模型输出质量的重要环节,受到了各界的高度关注。精心设计、管理与优化提示,不仅能够大幅提高生成文本的准确…...
Gone v2 配置管理4:连接Apollo配置中心
🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!&a…...
【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署
【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…...
什么是 Ansible Playbook?
一、Ansible Playbook 是什么? Ansible Playbook 是 Ansible 自动化工具的核心组件之一,它是一个以 YAML 格式编写的文件,用于定义一组自动化任务(tasks)。简单来说,Playbook 就像一个“剧本”或“指令清单…...
System.arraycopy 在音视频处理中的应用
在音视频开发领域,我们经常需要处理大量的数据,例如音频 PCM 数据的传输、视频帧的缓存等。在这些场景下,数据的复制与传输往往直接影响到应用的性能。Java 提供的 System.arraycopy 方法,在音视频处理代码中出现频率非常高。本文…...
