无名商城论坛

搜索
查看: 330|回复: 0

[其他技术] 【HC】小白学Python第四课:控制变量

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 18:38:50 | 显示全部楼层 |阅读模式

共十八课,按天更新

上一课回顾#【HC】小白学Python第三课:基础数据类型(下)#
变量

在 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)

// 输出结果:

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

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

print(123.5   123)

// 输出结果:
246.5

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

print(int(123.7))

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

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

print(int(123.7   0.5))

// 输出结果:
124
这么写有点不是那么优雅,我们还可以借助函数 round() 来实现。

print(int(r
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表