在编程中,经常使用数字来记录、可视化数据、存储Web应用等...。 Python根据数字的用法,以不同的方式处理它们。
数字
(Number)
是 Python 中基本的数据类型之一,数字类型属于数值型数据,用于存储数值,是不可改变的,数值发生改变时,会重新分配内存空间,产生新的对象。
数字类型提供 标量存储
与 直接访问
,它包括 整数类型(Int)
、 浮点类型(Float)
、布尔(Bool)类型
、以及 复数(Complex)类型
。
整型(Int) :通常被称为是整型或整数,是正或负整数,不带小数点。 浮点型(Float) :浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(1.8e2 = 1.8 x 10^2 = 180) 复数( (Complex)) :复数由实数部分和虚数部分构成,可以用 a bj,或者complex(a, b) 表示, 复数的实部 a 和虚部 b 都是浮点型。 布尔(Bool) 型 :数字中的 1 和 0 ,对应布尔型中的真 (True) 和假(Flase)。
数字的相关操作还包括数字运算、类型转换、数学函数、以及随机数相关函数等等...
定义整数的方式:
1. 直接赋值:
代码语言:python代码运行次数:2复制integer_number = 42
2. 进制表示法:
代码语言:python代码运行次数:0复制binary_number = 0b1010 # 二进制表示,结果为10
octal_number = 0o52 # 八进制表示,结果为42
hexadecimal_number = 0x2a # 十六进制表示,结果为42
3. 使用 int()
构造函数:
代码语言:python代码运行次数:0复制constructed_integer = int(3.14) # 将浮点数转换为整数,结果为3
4. 使用运算符进行计算:
代码语言:python代码运行次数:0复制calculation_result = 5 7 # 结果为12,这里产生了一个整数对象
这些都是定义整数对象的方法。整数是一种不可变的数据类型,可以用于表示没有小数部分的数值,包括正数、负数和零。
定义浮点数的方式:
1. 直接赋值:
代码语言:python代码运行次数:0复制float_number = 3.14
2. 使用 float()
构造函数:
代码语言:python代码运行次数:0复制constructed_float = float(42) # 将整数转换为浮点数,结果为42.0
3. 使用运算符进行计算:
代码语言:python代码运行次数:0复制calculation_result = 5.0 / 2 # 结果为2.5,这里产生了一个浮点数对象
4. 科学计数法表示:
代码语言:python代码运行次数:0复制scientific_notation = 6.022e23 # 表示为6.022乘以10的23次方
这些都是定义浮点型数字对象的方法。浮点数用于表示带有小数部分的数值,包括正数、负数和零。在计算中,浮点数可以进行更精确的数学运算,但也需要注意浮点数运算可能产生的精度问题。
定义复数的方式:
1. 直接赋值:
代码语言:python代码运行次数:0复制complex_number = 2 3j
2. 使用 complex()
构造函数:
代码语言:python代码运行次数:0复制constructed_complex = complex(1, -2) # 结果为1-2j
3. 使用运算符进行计算:
代码语言:python代码运行次数:0复制calculation_result = 1 2j # 产生一个复数对象
复数由实数部分和虚数部分构成,形式为 a bj
,其中 a
是实数部分,b
是虚数部分。虚数部分用字母 j
或 J
表示。复数在数学和工程领域中有广泛的应用,例如在信号处理和控制系统中。
布尔值
在 Python 中,布尔值 True
和 False
分别对应数字 1
和 0
。这意味着可以将布尔值与数字进行算术运算,并得到相应的结果。
True True # 结果为 2
False False # 结果为 0
True - False # 结果为 1
这种转换是由 Python 的动态类型特性决定的。当你进行布尔值与数字之间的算术运算时,Python 会自动将布尔值转换为相应的数字。
需要注意的是,在进行布尔运算时,True
被视为 1
,而 False
被视为 0
。这在一些情况下可能会导致预期之外的结果,因此在使用时需要小心确保类型的一致性。
常用的数字操作符:
1. 算术操作符:
-
:减法*
:乘法/
:除法//
:整除(返回商的整数部分)%
:取余**
:幂运算
a = 5
b = 2
result_addition = a b # 7
result_subtraction = a - b # 3
result_multiplication = a * b # 10
result_division = a / b # 2.5
result_floor_division = a // b # 2
result_remainder = a % b # 1
result_exponentiation = a ** b # 25
2. 比较操作符:
==
:等于!=
:不等于<
:小于>
:大于<=
:小于等于>=
:大于等于
x = 5
y = 3
result_equal = x == y # False
result_not_equal = x != y # True
result_less_than = x < y # False
result_greater_than = x > y # True
result_less_equal = x <= y # False
result_greater_equal = x >= y # True
3. 赋值操作符:
=
:赋值=
:加法赋值-=
:减法赋值*=
:乘法赋值/=
:除法赋值//=
:整除赋值%=
:取余赋值**=
:幂运算赋值
a = 5
b = 2
a = b # 相当于 a = a b,结果为7
a -= b # 相当于 a = a - b,结果为5
a *= b # 相当于 a = a * b,结果为10
a /= b # 相当于 a = a / b,结果为5.0
a //= b # 相当于 a = a // b,结果为2.0
a %= b # 相当于 a = a % b,结果为0.0
a **= b # 相当于 a = a ** b,结果为1.0
这些操作符可以用于对数字进行各种常见的数学和比较运算。
数字类型转换方法:
1. int(x [,base])
- 转为整数
将一个数或字符串 x
转换为整数。如果提供了 base
参数,x
必须是字符串,并且按给定的 base
进行解析。
float_number = 3.14
integer_from_float = int(float_number) # 结果为 3
string_number = "123"
integer_from_string = int(string_number) # 结果为 123
binary_string = "1010"
integer_from_binary = int(binary_string, 2) # 结果为 10
2. float(x)
- 转为浮点数
将一个数或字符串 x
转换为浮点数。
integer_number = 42
float_from_integer = float(integer_number) # 结果为 42.0
string_number = "3.14"
float_from_string = float(string_number) # 结果为 3.14
3. complex(real[, imag])
- 转为复数
创建一个复数。real
是实部,imag
是虚部,默认为 0。
real_part = 2
imag_part = 3
complex_number = complex(real_part, imag_part) # 结果为 (2 3j)
这些函数可以帮助我们在不同数字类型之间进行转换。在进行转换时,确保目标类型能够容纳原始类型的值,以防止信息丢失。
数字运算内置函数
Python
中的提供了一系列的数字运算内置函数,相关用法可参照下表:
函数 | 说明 |
---|---|
max(x1,x2,...) | 求给定序列的最大值 |
min(x1,x2,...) | 求给定序列的最小值 |
abs(obj) | 求绝对值 |
fabs(obj) | math 模块提供,求绝对值 |
ceil(obj) | math 模块提供,上入取整数 |
floor(obj) | math 模块提供,下舍取整数 |
exp(x) | math 模块提供,求 e 的 x 次幂 |
pow(x, y) | 幂运算,与 x ** y 类似 |
round(x [,n]) | 四舍五入 |
sqrt(x) | math 模块提供,求平方根 |
modf(x) | math 模块提供,返回整数、小数部分 |
log(x) | math 模块提供,求以 e 为底数的 x 对数 |
log10(x) | math 模块提供,求以10 为底数的 x 对数 |
1. max(x1, x2, ...)
返回给定参数的最大值。
代码语言:python代码运行次数:0复制max_value = max(5, 8, 2, 10) # 结果为 10
2. min(x1, x2, ...)
返回给定参数的最小值。
代码语言:python代码运行次数:0复制min_value = min(5, 8, 2, 10) # 结果为 2
3. abs(obj)
返回数的绝对值。
代码语言:python代码运行次数:0复制abs_value = abs(-5) # 结果为 5
4. fabs(obj)
返回浮点数的绝对值。
代码语言:python代码运行次数:0复制fabs_value = fabs(-3.14) # 结果为 3.14
5. ceil(obj)
返回大于或等于给定数的最小整数。
代码语言:python代码运行次数:0复制ceil_value = ceil(4.2) # 结果为 5
6. floor(obj)
返回小于或等于给定数的最大整数。
代码语言:python代码运行次数:0复制floor_value = floor(4.8) # 结果为 4
7. exp(x)
返回 e 的 x 次方。
代码语言:python代码运行次数:0复制exp_result = exp(2) # 结果为 7.389...
8. pow(x, y)
返回 x 的 y 次方。
代码语言:python代码运行次数:0复制power_result = pow(2, 3) # 结果为 8
9. round(x, n)
返回浮点数 x 的四舍五入值,保留小数点后 n 位。
代码语言:python代码运行次数:0复制rounded_value = round(3.14159, 2) # 结果为 3.14
10. sqrt(x)
返回 x 的平方根。
代码语言:python代码运行次数:0复制sqrt_result = sqrt(9) # 结果为 3.0
11. modf(x)
返回 x 的小数部分和整数部分,以元组形式返回。
代码语言:python代码运行次数:9复制fractional, integer = modf(3.14) # 结果为 fractional = 0.14, integer = 3.0
12. log(x)
返回 x 的自然对数。
代码语言:python代码运行次数:0复制log_result = log(10) # 结果为 2.302...
13. log10(x)
返回 x 的以 10 为底的对数。
代码语言:python代码运行次数:0复制log10_result = log10(100) # 结果为 2.0
这些函数提供了处理数学运算的基本工具。根据需要选择适当的函数来执行不同的数学操作。
随机数生成方法:
1. random()
返回一个位于 [0.0, 1.0)
范围内的随机浮点数。
import random
random_float = random.random()
print(random_float)
2. randint(a, b)
返回一个位于 [a, b]
范围内的随机整数。
import random
random_integer = random.randint(1, 10)
print(random_integer)
3. uniform(a, b)
返回一个位于 [a, b]
范围内的随机浮点数。
import random
random_float = random.uniform(1.5, 3.0)
print(random_float)
4. choice(seq)
从非空序列 seq
中随机返回一个元素。
import random
options = ['rock', 'paper', 'scissors']
random_choice = random.choice(options)
print(random_choice)
5. shuffle(seq)
将序列 seq
中的元素随机排列。
import random
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)
6. sample(population, k)
从 population
中随机选择 k
个不重复的元素。
import random
numbers = [1, 2, 3, 4, 5]
random_samples = random.sample(numbers, 3)
print(random_samples)
这些方法提供了在 Python 中生成随机数和进行随机选择的方式。
拓展-时间格式转换方法:
1. 将字符串转换为日期对象
使用 strptime
方法将字符串转换为日期对象。
from datetime import datetime
date_string = "2022-01-15"
date_object = datetime.strptime(date_string, "%Y-%m-%d")
print(date_object)
2. 将日期对象转换为字符串
使用 strftime
方法将日期对象格式化为字符串。
from datetime import datetime
now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)
3. 获取当前日期和时间
使用 datetime.now()
方法获取当前日期和时间。
from datetime import datetime
now = datetime.now()
print(now)
4. 时间差计算
可以使用 timedelta
类来计算两个日期之间的时间差。
from datetime import datetime, timedelta
date1 = datetime(2022, 1, 15)
date2 = datetime(2022, 1, 20)
time_difference = date2 - date1
print(time_difference)
这些方法提供了在 Python 中进行日期和时间格式转换的基本工具。
5. 时:分:秒的格式
使用 divmod
方法将总秒数转换为时:分:秒的格式。divmod
函数返回一个包含商和余数的元组。
total_seconds = 3665 # 1小时1分钟5秒
hours, remainder = divmod(total_seconds, 3600) # 3600秒 = 1小时
minutes, seconds = divmod(remainder, 60) # 60秒 = 1分钟
formatted_time = "{:02}:{:02}:{:02}".format(int(hours), int(minutes), int(seconds))
print(formatted_time)
在这个例子中,divmod(total_seconds, 3600)
计算出总秒数中包含的小时数和余下的秒数。然后,divmod(remainder, 60)
用于计算余下的秒数中包含的分钟数和最终的秒数。最后,使用字符串格式化将小时、分钟和秒格式化为两位数,并用冒号分隔。
可以将 total_seconds
替换为任何其他总秒数的值,以得到相应的时:分:秒格式。
拓展-猜数字游戏
猜数字游戏是一个经典的小游戏,可以通过 Python 编写一个简单的猜数字游戏。下面是一个基本的猜数字游戏的示例代码:
代码语言:python代码运行次数:0复制import random
def guess_number():
secret_number = random.randint(1, 100) # 生成1到100之间的随机整数
attempts = 0
print("欢迎参加猜数字游戏!")
print("我已经选择了一个1到100之间的数字,请开始猜测吧。")
while True:
user_guess = int(input("你的猜测是:"))
attempts = 1
if user_guess == secret_number:
print(f"恭喜你,你猜对了!数字是 {secret_number}。你用了 {attempts} 次尝试。")
break
elif user_guess < secret_number:
print("太小了,请再试一次。")
else:
print("太大了,请再试一次。")
if __name__ == "__main__":
guess_number()
这个猜数字游戏的代码使用了 random
模块生成一个随机整数作为秘密数字,然后通过循环让玩家猜测数字,直到猜中为止。程序会根据玩家的猜测提供反馈,告诉玩家猜得太小或太大。最后,程序会输出猜对的信息以及玩家猜中的次数。
你可以根据需要扩展这个基本的猜数字游戏,添加更多的功能,如错误处理、计分系统、难度级别选择等。这是一个简单而有趣的项目,可以帮助你练习基本的 Python 编程技能。
注释
在大多数编程语言中,注释都是一项很有用的功能。本书前面编写的程序中都只包含Python代码,但随着程序越来越大、越来越复杂,就应在其中添加说明,对你解决问题的方法进行大致的阐述。 注释让你能够使用自然语言在程序中添加说明。
如何编写注释
在Python中,注释用井号(#)标识。井号后面的内容都会被Python解释器忽略,如下所示:
代码语言:python代码运行次数:0复制# 向大家问好
print("Hello Python people!")
# Python 解释器将忽略第1行,只执行第2行。
Hello Python people!
该编写什么样的注释
编写注释的主要目的是阐述代码要做什么,以及是如何做的。在开发项目期间,你对各个部分如何协同工作了如指掌,但过段时间后,有些细节你可能不记得了。当然,你总是可以通过研究代码来确定各个部分的工作原理,但通过编写注释,以清晰的自然语言对解决方案进行概述,可节省很多时间。
要成为专业程序员或与其他程序员合作,就必须编写有意义的注释。当前,大多数软件都是合作编写的,编写者可能是同一家公司的多名员工,也可能是众多致力于同一个开源项目的人员。
训练有素的程序员都希望代码中包含注释,因此你最好从现在开始就在程序中添加描述性注释。作为新手,最值得养成的习惯之一是,在代码中编写清晰、简洁的注释。如果不确定是否要编写注释,就问问自己,找到合理的解决方案前,是否考虑了多个解决方案。如果答案是肯定的,就编写注释对你的解决方案进行说明吧。相比回过头去再添加注释,删除多余的注释要容易得多。从现在开始,本书的示例都将使用注释来阐述代码的工作原理。
我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!