人生苦短,我选Python

引言

前文传送门

小白学 Python(1):开篇

小白学 Python(2):基础数据类型(上)

小白学 Python(3):基础数据类型(下)

前面的文章中,我们介绍了基础数据类型中最常用的数字和字符串,不知道大家还记得什么是变量不?不记得变量也应该记得那被奶茶吧~~~都不记得自己去翻翻前面的文章吧。

变量

在 Python 中使用变量,有一个和 Java 最大的不同是无需先声明,直接在赋值的时候就完成了声明。

如果我们直接使用一个没有赋值的变量,会直接报错。

print(name)

// 输出结果:
Traceback (most recent call last):
File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 2, in <module>
print(name)
NameError: name 'name' is not defined

错误信息是说我们的 name 变量未定义,如果我们先对 name 赋值,这个变量就被定义了。

name = "小明"

print(name)

// 输出结果:

小明

如果我们对这个变量再次进行赋值,新的赋值将会覆盖之前的赋值。

name = "小红"

print(name)

// 输出结果:

小红

当然,如果我们不再需要这个变量,也可以通过 Python 提供的 del 来删除这个变量。

del name

print(name)

// 输出结果:
Traceback (most recent call last):
File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 2, in <module>
print(name)
NameError: name 'name' is not defined

每个变量在我们的程序当中都会占有一定的内存空间,那么内存空间不够大的时候再新建变量岂不是要内存溢出?理论上来讲是会出现这种情况,但是 Python 提供了自动辣鸡回收机制,我们不用的辣鸡变量, Python 是会帮我们自己动回收掉的。

但是,在极端情况下,我们所有需要使用的变量超出当前的内存空间怎么办?emmmmmmm

这个就需要用钱来解决了,加点内存它不香么。

变量类型转换

在某些情况下,我们的变量需要参加运算,如果变量类型不同会怎么样呢?

如果我们要使用一个字符串加上一个整形会怎么样呢?

print('123' + 123)

// 输出结果:
Traceback (most recent call last):
File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 17, in <module>
print('123' + 123)
TypeError: can only concatenate str (not "int") to str

这句报错含义是告诉我们字符串只能连接一个字符串,并不能连接一个整形。

这里我们先写的是字符串,系统默认是做字符串连接操作,但是系统执行到后面发现并不是一个字符串,系统直接就原地炸了:说好的字符串呢?

这时如果我们想要正常运行怎么办呢?

如果仅仅只是要程序不报错,有两种解决方案:

  • 将字符串强成整形,结果会是一个整形
  • 将整形转成字符串,执行字符串拼接操作

当然,这里涉及到了类型强制转换。

  • float() 函数,将其他类型数据转为浮点数

  • str() 函数,将其他类型数据转为字符串

  • int() 函数,将其他类型数据转为整型

那么上面的报错我们就有了以下解决方案:

print('123' + str(123))

// 输出结果:
123123 print(int('123') + 123) // 输出结果:
246

那么新的问题来了,如果是一个整形和一个浮点数想加最终会得到什么类型呢?

这里涉及到了一个新的知识点,叫做类型提升

print(123.5 + 123)

// 输出结果:
246.5

那么如果一个浮点型强转成整形又会怎么样呢?

print(int(123.7))

// 输出结果:
123

从示例中,可以看出强制类型降级时,会直接抹去末尾小数,这里并不会做四舍五入哦~~~

如果想使用四舍五入的方式,有一种比较简易的方式,加 0.5 ,如下示例:

print(int(123.7 + 0.5))

// 输出结果:
124

这么写有点不是那么优雅,我们还可以借助函数 round() 来实现。

print(int(round(123.4)))

// 输出结果:
123 print(int(round(123.5))) // 输出结果:
124

示例代码

本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。

示例代码-Github

示例代码-Gitee

小白学 Python(4):变量基础操作的更多相关文章

  1. 小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  2. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  3. 小白学 Python(24):Excel 基础操作(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  4. 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据

    在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...

  5. 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  6. 小白学 Python 数据分析(17):Matplotlib(二)基础操作

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  7. 小白学 Python(2):基础数据类型(上)

    人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 接触一门新的语言,肯定要先了解它的基础数据类型.啥?你问我为啥要先了解基础数据类型? 为了你的生命安全,还是乖乖听我 B ...

  8. 小白学 Python(5):基础运算符(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  9. 小白学 Python(6):基础运算符(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

随机推荐

  1. selenium WebDriver 截取网站的验证码

    在做爬虫项目的时候,有时候会遇到验证码的问题,由于某些网站的验证码是动态生成的,即使是同一个链接,在不同的时间访问可能产生不同的验证码, 一 刚开始的思路就是打开这个验证码的链接,然后通过java代码 ...

  2. UITableView tableHeaderView 自动布局

    let size = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) headerView.frame.s ...

  3. Flask关于request一些方法和属性的整理(持续更新)

    前提:基于纯后端服务, post 请求 (Content-Type: application/json,) 1.获取未经处理过的原始数据而不管内容类型,如果数据格式是json的,则取得的是json字符 ...

  4. Spring boot使用log4j打印日志

    先将maven中spring-boot-starter的日志spring-boot-starter-logging去掉 <dependency> <groupId>org.sp ...

  5. 一个selenium简单案例自动添加数据

    //本来想着用execl来录入数据的,但是为了尽快完成所以直接搞了个数组 package aldtest; import org.openqa.selenium.*; import org.openq ...

  6. 基于Babylon.js编写宇宙飞船模拟程序1——程序基础结构、物理引擎使用、三维罗盘

    计划做一个宇宙飞船模拟程序,首先做一些技术准备. 可以访问https://ljzc002.github.io/test/Spacetest/HTML/PAGE/spacetestwp2.html查看测 ...

  7. Save&Load--Unity存档读档的学习总结

    存档与读档功能 举例: 传统RPG游戏(仙剑.空之轨迹): 1.角色信息(生命值,等级) 2.道具信息(装备,药品) 3.场景信息(场景名称.角色坐标) 4.事件信息(任务相关) 关卡类游戏:关卡的通 ...

  8. append追加的html片段,添加点击事件没有反应,解决!

    对于追加的元素来说,属于未来展现的内容,我们此时不能使用一般点击事情处理,需要用未来事件绑定. 例如:我点击车牌号显示车辆详情,如下绑定. //绑定未来元素 $("body").d ...

  9. linux 的vi/vim消除查找到的高亮字符串

    方法如下: 在Vi里面如果要搜索某个关键字,只要键入/xxx就可以了,比如,要搜索一个函数,就键入/snprintf 然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示.按n键,就可以自动把光 ...

  10. thymeleaf 日期时间格式处理

    一.#dates.format()用来格式化日期时间 ${#dates.format(date, 'dd/MMM/yyyy HH:mm')} ${#dates.arrayFormat(datesArr ...