python核心语法(二)

第三节 类型转换

0.布尔值转换

使⽤⼀个内置函数bool()。

# 以下值都为True
bool(2)
bool(-1)
bool(255)
bool(0.1000001)
bool(-99.99888)
# 下⾯的值为False
bool(0)
bool(0.0)

对于数值类型,所有的⾮零值转换为True, 只有零值才转换为False.字符串也可以转换为布尔值。

# 空字符串,转换结果为False
bool("")
# 转换结果为True
bool("abc")
# 只包含⼀个空格的字符串,转换结果为True
bool(" ")

对于任何⾮空的字符串,转换为布尔值都是True。另外

# 结果为False
bool(None)

1. 字符串转换

可以使⽤str() 将其他类型转换为字符串,True, False, None 这三个值转换为字符串就是它们的单词本身。

str(True) # 结果是'True'
str(False) # 结果是'False'
str(None) # 结果是'None'

对于数值类型,我们也可以⽤str()将它们转换为字符串,

age=15
print("My age is", str(age))

2.数值转换

如果想要把⼀个整数字符串转换为int类型,使⽤int();

num = "13"
int(num) + 1

如果将int()去掉。数值的前后带有空格也可以成功转换.

int(" 400 ") # 结果为100

带有符号的数字也可以转换

int("-3") # 结果为-1
int("+1") # 结果为1

如果想要把⼀个带⼩数点的字符串转换为float类型,使⽤float()

pi = "3.1415926"
float(pi)

int类型和float类型之间也可以相互转换

int(3.1415926)  # 结果为3

注意第⼆⾏中,9.9并没有转换为10,float在被转换为int的过程中,它的⼩数部分精度将被丢弃,只取整数部分。
四舍五⼊的来转换呢,使用内置函数:round

round(9.9) #结果为10
round(9.5) #结果为10
round(9.49) #结果为9

round函数可以指定要保留⼩数点后⼏位:

# 保留⼩数点后两位,结果是3.14
round(3.1415926, 2)
# 保留⼩数点后三位,结果是3.142
round(3.1415926, 3)

布尔值也可以转换为int或者float

int(True) # 结果是1
int(False) # 结果是0
float(True) # 结果是1.0
float(False)# 结果是0.0

数值类型转换为布尔类型的相反过程。

3.运算符

3.1算术运算符

Python中进⾏数值运算需要的符号如下。

运算符描述实例
+1 + 1; a + b
-10 - 5; a - b -c
*4 * 2 相当 4 × 2
/4 / 2 相当于 4 ÷ 2
//取整除10 // 4 结果是 2
%取模10 % 4 相当于 10 - (10 // 4) × 4
**指数2 ** 3 相当于 2 * 2 * 2,也就是2的3次⽅
()⼩括号提高算优先级,⽐如: (2 + 8) * 3

eg:

print(12 + 1)
print(100 - 5)
print(41 * 2)
print(40 / 2) # 结果是2.0

都是简单的加减乘除,即使除数和被除数都是整数,返回结果也是⼀个浮点数。

print(5 / 2) # 结果是2.5
print(5 // 2) # 结果是2

两个整数进⾏除法运算,⼀般使⽤双斜杠来进⾏运算,保证结果也是整数,不⽤再进⾏类型转换。

print(10 / 3) # 结果是3.3333333333333335、

计算机⽆法表达,只能显示到⼀定的位数。最后⼀位为什么是5呢?四舍五⼊的话也应该是3呀。这是因为⼩数以⼆进制形式表示时的有穷性导致的,也就是计算机底层机制的原因。

print(10 % 4) # 结果是2
print((2 + 8) * 3) # 结果是30

取模记住以下⼏个规则:

  • 当两个数能整除时,取模运算的结果为0,⽐如 8 % 4 的结果是0
  • 当0<a<b时,a % b = a,⽐如 3 % 8 的结果是3
  • 当两个数中有负数时,结果可能会跟我们预料的不同,记住这个公式 :
  • a % b 就相当于a -(a // b) * b
    0不能作为除数,也不能⽤来取模。
3.2使⽤算术运算符操作字符串

字符串在Python中也可以“运算”,有两种操作,我们先看看加法
print("Hello " + “world”)
加号可以将两个字符串拼接成⼀个字符串,也可以将多个字符串拼接在⼀起:

print("apple " + "apple " + "apple ")
print("apple " * 3)

使⽤加号拼接字符串时需要注意,不能将字符串与数值⼀起相加

3.3赋值运算符

赋值操作,在前⾯定义变量的时候我们都会使⽤等于号。

num = 1
name = "Smith"

结合上⾯的运算符,我们可以做更多的赋值操作:

运算符描述实例
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
//=取整除赋值运算符c //= a 等效于 c = c // a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c^a

我们在⽇常编程中最常⽤的是加法赋值和减法赋值,⽐如设置⼀个计数器,每次+1

count = 0
count += 1
count += 1

执⾏了两次加法赋值操作后,count的值变成了2

3.4⽐较运算符

⽐较运算符是⽤来运算布尔值的, 将两个值放在⼀起⽐较,最后得到True或者False。

运算符描述实例
==等于100 == 100
!=不等于100 != 99
>⼤于2 > 1
<⼩于1 < 2
>=⼤于等于3 >= 2
<=⼩于等于2 <= 3

我们可以在控制台⾥输⼊⼀些⽐较运算,看看它们的返回值是什么

100 == 100 # True
100 == "abc" # False
1 != 2 # True
2 != 2 # False
3 > 3 # False
3 >= 3 # True
2 < 3 # True
2 <= 3 # True

⼀些⽐较特殊的例⼦:

100 == "100" # False
100 == 50 * 2 # True
str(100) == "100" # True
1.0 != 1 # False
int(1.9) == 1 # True
3.5逻辑运算符

真实的程序中,常常需要判断的条件是复杂的,所以我们需要逻辑运算符将多个⽐较运算连接起来。

运算符逻辑表达式描述
andx and y任意⼀个是False,结果就是False True and False 结果为False
orx or y任意⼀个是True,结果就是True; True or False 结果为True
notnot x将条件取反 not False 结果为True

我们来看⼏个例⼦:

# 定义两个变量
a, b = 1, 2
a > 0 and a < b # True
a % 2 == 0 or b % 2 == 0 # True
not a > b # True

and, or, not 它们也是Python中的关键字。

a = 0 or 100 # a=100
b = 1 or 2 # b=1
3.6流程控制

主要分为两块:条件判断和循环控制。

3.7条件判断

if 和 else,看它们的字⾯意思就能猜到它们表示“如果”… “否则”… 我们来看看在代码中如何使⽤

if…else…语句
num = 3
# 判断num是否能被2整除
if num % 2 == 0:print(str(num) + "偶数")
else:print(str(num) + "奇数")
elif

判断⼀个学⽣的考试成绩,60分以下的为不及格,60~90分为合格,90分以上为优秀,这⾥⾯有三个条件。

score = 59
if score < 60:print("您的考试成绩不及格")
elif score < 90:print("您的考试成绩合格")
else:print("您的考试成绩优秀")

在这个例⼦中,使⽤了⼀个新的关键字"elif", 它只能⽤在if判断之后,else之前。

if 条件嵌套

现在我们想对60100分的进⾏更细的划分,6070分为合格,70~90分为良好,90分以上为优秀。

if score >= 60:if score < 70:print("您的考试成绩为合格")elif score < 90:print("您的考试成绩为良好")else:print("您的考试成绩为优秀")
else:print("您的考试成绩不及格")

建议尽量减少嵌套的层数,以增加代码的可读性。

与逻辑运算符组合
age = 22
if age > 18 and age < 60:print("你已经不是个孩⼦啦,该去⼯作啦")

上⾯的例⼦表示,年龄⼤于18岁并且⼩于60岁,也可以这样写

age = 22
if 18 < age < 60:print("你已经不是个孩⼦啦,该去⼯作啦")

这样的代码更简洁,可读性更⾼,这是Python特有的简洁写法。

⾃动类型转换

if 和 elif 的后⾯总是跟着⼀个表达式,这个表达式的结果必须是True或者False,如果表达式运算出来的结果不是⼀个布尔值,则会⾃动将结果转换为布尔值,⽆论它是什么类型的值。转换的结果遵循我们之前学过的布尔转换规律。

count = 0
if count:print("条件成⽴")
else:print("条件不成⽴")

试着将count的值改为1,条件则成⽴了。

思考:如果改成负数呢?

result = None
if result:pass
else:print("什么收获都没有")

记住:0值、None 和空字符串转换为布尔值后都是False

循环
while循环
lap = 0
while lap < 10:lap += 1print("我跑完了第" + str(lap + 1) + "圈")

运⾏上⾯的代码,会得到以下的输出

for循环

for循环可以⽤来遍历序列,序列指的是⼀个可迭代的有序的集合,⽐如字符串就是⼀个序列,下⾯我们⽤for循环来打印出⼀个字符串中的所有字符。

seq = "hello"
for s in seq:print(s)

也可以⽤for循环来打印⼀连串的数字,这⾥需要⽤到⼀个新的内置函数:range。

for i in range(5):print(i)

range函数的作⽤就是提供⼀个从0到4的迭代器,⽽for可以遍历这个迭代器。注意是从0开始的,整个循环⼀共打印了5个数。
输出结果是:
我们可以修改⼀下之前写的跑圈的while循环,改⽤for循环加range函数来实现:

for lap in range(10):print("我跑完了第" + str(lap + 1) + "圈")

对⽐⼀下,哪种写法更简洁,更优雅?很明显是⽤for循环这种。这⾥⾯有⼀个细节需要注意,由于lap的值是从0开始到9结束,所以我们需要在输出的时候给它+1。

嵌套循环

既然掌握了两种循环写法,那可以把它们组合起来运⽤,我们来写⼀个例⼦,在控制台中打印出指定边⻓的⻓⽅形或者正⽅形图案。

# 指定⻓⽅形的宽和⾼
width, height = 10, 5
# 因为是从上往下开始打印,所以先遍历⾼度
for i in range(height):for j in range(width):print("*", end="")print()

在这⾥,print函数有了第⼆个参数,end表示在打印完指定的内容后,在结尾再打印⼀个指定的字符
串,默认每个print语句在结尾会加⼀个换⾏符"\n", 传递⼀个空字符串给它,表示打印完星号以后不再
添加任何输出内容。
第⼆个print函数没有任何参数,那它会输出⼀个换⾏符。
所以整个程序的逻辑就是每输出10个星号后,输出⼀个换⾏符,最终输出的图案如下:
既然可以打印出⼀个⻓⽅形,那我们也可以打印⼀个直⻆三⻆形:
代码如下

for i in range(5):for j in range(i + 1):print("*", end="")print()

再来⼀个稍微复杂⼀点的案例,打印出这样⼀个九九乘法表

for i in range(1, 10):for j in range(1, i + 1):print("%s*%s=%s" % (j, i, i * j), end=" ")print()
break和continue

临时略过某⼀次循环或者⼲脆跳出整个循环,需要⽤到break和continue。
在下⾯这个例⼦中,我们使⽤for循环和continue来打印出10以内的所有奇数相加的式⼦,并求出它们的和。

total = 0
for i in range(10):if i % 2 == 0:continueprint(i, end=" + ")total += i
print(" = %s" % total)

关键字break⽤来打断整个循环并跳出。看这个例⼦,给⼀个字符串,这个字符串是⼀个⼩数,要求打印出⼩数的整数部分。

s = "238.9237834829"
for i in s:if i == '.':print()breakprint(i, end='')

⼩数的整数部分都在⼩数点的左边,⽽我们遍历字符串是从左往右,所以当遇到⼩数点后,就停⽌遍历,这样就正好实现了打印这个⼩数的整数部分。

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

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

相关文章

基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络

一、介绍 垃圾识别分类系统。本系统采用Python作为主要编程语言&#xff0c;通过收集了5种常见的垃圾数据集&#xff08;‘塑料’, ‘玻璃’, ‘纸张’, ‘纸板’, ‘金属’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对图像数据集进…

OMV7 树莓派 tf卡安装

​ 升级7之后&#xff0c;问题多多&#xff0c;不是docker不行了&#xff0c;就是代理不好使 今天又重装了一遍&#xff0c;用官方的链接&#xff0c;重新再折腾一遍…… 使用raspberry pi imager安装最新版lite OS。 注意是无桌面 Lite版 配置好树莓派初始化设置&#xff0…

前端无感刷新token

摘要&#xff1a; Axios 无感知刷新令牌是一种在前端应用中实现自动刷新访问令牌&#xff08;access token&#xff09;的技术&#xff0c;确保用户在进行 API 请求时不会因为令牌过期而中断操作 目录概览 XMLHttpRequestAxiosFetch APIJQuni.request注意事项&#xff1a; 访问…

STM32 独立看门狗(IWDG)详解

目录 一、引言 二、独立看门狗的作用 三、独立看门狗的工作原理 1.时钟源 2.计数器 3.喂狗操作 4.超时时间计算 5.复位机制 四、独立看门狗相关寄存器 1.键寄存器&#xff08;IWDG_KR&#xff09; 2.预分频寄存器&#xff08;IWDG_PR&#xff09; 3.重载寄存器&…

RHCE的练习(12)

写一个脚本&#xff0c;完成以下要求&#xff1a; 给定一个用户&#xff1a; 如果其UID为0&#xff0c;就显示此为管理员&#xff1b;否则&#xff0c;就显示其为普通用户&#xff1b; #!/bin/bash ​ # 使用read命令获取用户名 read -p "请输入用户名: " username ​…

游戏引擎学习第15天

视频参考:https://www.bilibili.com/video/BV1mbUBY7E24 关于游戏中文件输入输出&#xff08;IO&#xff09;操作的讨论。主要分为两类&#xff1a; 只读资产的加载 这部分主要涉及游戏中用于展示和运行的只读资源&#xff0c;例如音乐、音效、美术资源&#xff08;如 3D 模型和…

探索 HTML 和 CSS 实现的 3D旋转相册

效果演示 这段HTML与CSS代码创建了一个包含10张卡片的3D旋转效果&#xff0c;每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画&#xff0c;实现了一个动态的旋转展示效果 HTML <div class"wrapper"><div class"inner" style"-…

什么是Hadoop

Hadoop 介绍 Hadoop 是由 Apache 开发的开源框架&#xff0c;用于处理分布式环境中的海量数据。Hadoop 使用 Java 编写&#xff0c;通过简单的编程模型允许在集群中进行大规模数据集的存储和计算。它具备高可靠性、容错性和扩展性。 分布式存储&#xff1a;Hadoop 支持跨集群…

逆向攻防世界CTF系列39-debug

逆向攻防世界CTF系列39-debug 查了资料说.NET要用其它调试器&#xff0c;下载了ILSPY和dnSPY ILSPY比较适合静态分析代码最好了&#xff0c;函数名虽然可能乱码不显示&#xff0c;但是单击函数名还是能跟踪的&#xff0c;而dnSPY在动态调试上效果好&#xff0c;它的函数名不仅…

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…

Cellebrite VS IOS18Rebooting

Cellebrite VS IOS18Rebooting我们想分享一些有关 iOS 18 重启“功能”的信息。在过去一周左右的时间里&#xff0c;人们对 iOS 18 中一项新的未记录功能产生了极大关注&#xff0c;该功能会导致设备在一段时间不活动后重新启动。 这意味着&#xff0c;如果设备在一定时间不活…

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例&#xff1a;一个完整的 Axios 配置5. 使用拦截器的好…

【最大子矩阵——双指针 / 二分】

题目 双指针&#xff1a; 代码 #include <bits/stdc.h> using namespace std; const int N 85, M 1e510; int g[N][M]; int n, m, lim; int ans 1; int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for(int i 1; i < n; i)for(int …

内网渗透-隧道判断-SSH-DNS-icmp-smb-上线linux-mac

1.通道判断 #SMB 隧道&通讯&上线 判断&#xff1a;445 通讯 上线&#xff1a;借助通讯后绑定上线 通讯&#xff1a;直接 SMB 协议通讯即可 #ICMP 隧道&通讯&上线 判断&#xff1a;ping 命令 上线&#xff1a;见前面课程 通讯&#xff1a;其他项…

【优选算法篇】分治乾坤,万物归一:在重组中窥见无声的秩序

文章目录 分治专题&#xff08;二&#xff09;&#xff1a;归并排序的核心思想与进阶应用前言、第二章&#xff1a;归并排序的应用与延展2.1 归并排序&#xff08;medium&#xff09;解法&#xff08;归并排序&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 2.2 数组…

【微软:多模态基础模型】(3)视觉生成

欢迎关注【youcans的AGI学习笔记】原创作品 【微软&#xff1a;多模态基础模型】&#xff08;1&#xff09;从专家到通用助手 【微软&#xff1a;多模态基础模型】&#xff08;2&#xff09;视觉理解 【微软&#xff1a;多模态基础模型】&#xff08;3&#xff09;视觉生成 【微…

netcore Kafka

一、新建项目KafakDemo <ItemGroup><PackageReference Include"Confluent.Kafka" Version"2.6.0" /></ItemGroup> 二、Program.cs using Confluent.Kafka; using System; using System.Threading; using System.Threading.Tasks;names…

工业生产安全-安全帽第一篇-opencv及java开发环境搭建

一.背景 公司是非煤采矿业&#xff0c;核心业务是采选&#xff0c;大型设备多&#xff0c;安全风险因素多。当下政府重视安全&#xff0c;头部技术企业的安全解决方案先进但价格不低&#xff0c;作为民营企业对安全投入的成本很敏感。利用我本身所学&#xff0c;准备搭建公司的…

fastadmin多个表crud连表操作步骤

1、crud命令 php think crud -t xq_user_credential -u 1 -c credential -i voucher_type,nickname,user_id,voucher_url,status,time --forcetrue2、修改控制器controller文件 <?phpnamespace app\admin\controller;use app\common\controller\Backend;/*** 凭证信息…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-26

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…