在编程中,经常使用数字来记录、可视化数据、存储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)。
数字的相关操作还包括数字运算、类型转换、数学函数、以及随机数相关函数等等...
integer_number = 42
binary_number = 0b1010 # 二进制表示,结果为10
octal_number = 0o52 # 八进制表示,结果为42
hexadecimal_number = 0x2a # 十六进制表示,结果为42
int()
构造函数:constructed_integer = int(3.14) # 将浮点数转换为整数,结果为3
calculation_result = 5 + 7 # 结果为12,这里产生了一个整数对象
这些都是定义整数对象的方法。整数是一种不可变的数据类型,可以用于表示没有小数部分的数值,包括正数、负数和零。
float_number = 3.14
float()
构造函数:constructed_float = float(42) # 将整数转换为浮点数,结果为42.0
calculation_result = 5.0 / 2 # 结果为2.5,这里产生了一个浮点数对象
scientific_notation = 6.022e23 # 表示为6.022乘以10的23次方
这些都是定义浮点型数字对象的方法。浮点数用于表示带有小数部分的数值,包括正数、负数和零。在计算中,浮点数可以进行更精确的数学运算,但也需要注意浮点数运算可能产生的精度问题。
complex_number = 2 + 3j
complex()
构造函数:constructed_complex = complex(1, -2) # 结果为1-2j
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
。这在一些情况下可能会导致预期之外的结果,因此在使用时需要小心确保类型的一致性。
+
:加法-
:减法*
:乘法/
:除法//
:整除(返回商的整数部分)%
:取余**
:幂运算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
==
:等于!=
:不等于<
:小于>
:大于<=
:小于等于>=
:大于等于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
=
:赋值+=
:加法赋值-=
:减法赋值*=
:乘法赋值/=
:除法赋值//=
:整除赋值%=
:取余赋值**=
:幂运算赋值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
这些操作符可以用于对数字进行各种常见的数学和比较运算。
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
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
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 对数 |
max(x1, x2, ...)
返回给定参数的最大值。
max_value = max(5, 8, 2, 10) # 结果为 10
min(x1, x2, ...)
返回给定参数的最小值。
min_value = min(5, 8, 2, 10) # 结果为 2
abs(obj)
返回数的绝对值。
abs_value = abs(-5) # 结果为 5
fabs(obj)
返回浮点数的绝对值。
fabs_value = fabs(-3.14) # 结果为 3.14
ceil(obj)
返回大于或等于给定数的最小整数。
ceil_value = ceil(4.2) # 结果为 5
floor(obj)
返回小于或等于给定数的最大整数。
floor_value = floor(4.8) # 结果为 4
exp(x)
返回 e 的 x 次方。
exp_result = exp(2) # 结果为 7.389...
pow(x, y)
返回 x 的 y 次方。
power_result = pow(2, 3) # 结果为 8
round(x, n)
返回浮点数 x 的四舍五入值,保留小数点后 n 位。
rounded_value = round(3.14159, 2) # 结果为 3.14
sqrt(x)
返回 x 的平方根。
sqrt_result = sqrt(9) # 结果为 3.0
modf(x)
返回 x 的小数部分和整数部分,以元组形式返回。
fractional, integer = modf(3.14) # 结果为 fractional = 0.14, integer = 3.0
log(x)
返回 x 的自然对数。
log_result = log(10) # 结果为 2.302...
log10(x)
返回 x 的以 10 为底的对数。
log10_result = log10(100) # 结果为 2.0
这些函数提供了处理数学运算的基本工具。根据需要选择适当的函数来执行不同的数学操作。
random()
返回一个位于 [0.0, 1.0)
范围内的随机浮点数。
import random
random_float = random.random()
print(random_float)
randint(a, b)
返回一个位于 [a, b]
范围内的随机整数。
import random
random_integer = random.randint(1, 10)
print(random_integer)
uniform(a, b)
返回一个位于 [a, b]
范围内的随机浮点数。
import random
random_float = random.uniform(1.5, 3.0)
print(random_float)
choice(seq)
从非空序列 seq
中随机返回一个元素。
import random
options = ['rock', 'paper', 'scissors']
random_choice = random.choice(options)
print(random_choice)
shuffle(seq)
将序列 seq
中的元素随机排列。
import random
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)
sample(population, k)
从 population
中随机选择 k
个不重复的元素。
import random
numbers = [1, 2, 3, 4, 5]
random_samples = random.sample(numbers, 3)
print(random_samples)
这些方法提供了在 Python 中生成随机数和进行随机选择的方式。
使用 strptime
方法将字符串转换为日期对象。
from datetime import datetime
date_string = "2022-01-15"
date_object = datetime.strptime(date_string, "%Y-%m-%d")
print(date_object)
使用 strftime
方法将日期对象格式化为字符串。
from datetime import datetime
now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)
使用 datetime.now()
方法获取当前日期和时间。
from datetime import datetime
now = datetime.now()
print(now)
可以使用 timedelta
类来计算两个日期之间的时间差。
from datetime import datetime, timedelta
date1 = datetime(2022, 1, 15)
date2 = datetime(2022, 1, 20)
time_difference = date2 - date1
print(time_difference)
这些方法提供了在 Python 中进行日期和时间格式转换的基本工具。
使用 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 编写一个简单的猜数字游戏。下面是一个基本的猜数字游戏的示例代码:
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解释器忽略,如下所示:
# 向大家问好
print("Hello Python people!")
# Python 解释器将忽略第1行,只执行第2行。
Hello Python people!
编写注释的主要目的是阐述代码要做什么,以及是如何做的。在开发项目期间,你对各个部分如何协同工作了如指掌,但过段时间后,有些细节你可能不记得了。当然,你总是可以通过研究代码来确定各个部分的工作原理,但通过编写注释,以清晰的自然语言对解决方案进行概述,可节省很多时间。
要成为专业程序员或与其他程序员合作,就必须编写有意义的注释。当前,大多数软件都是合作编写的,编写者可能是同一家公司的多名员工,也可能是众多致力于同一个开源项目的人员。
训练有素的程序员都希望代码中包含注释,因此你最好从现在开始就在程序中添加描述性注释。作为新手,最值得养成的习惯之一是,在代码中编写清晰、简洁的注释。如果不确定是否要编写注释,就问问自己,找到合理的解决方案前,是否考虑了多个解决方案。如果答案是肯定的,就编写注释对你的解决方案进行说明吧。相比回过头去再添加注释,删除多余的注释要容易得多。从现在开始,本书的示例都将使用注释来阐述代码的工作原理。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有