【Python入门第六讲】贴近生活数据类型 | 数字

2024-01-25 09:19:32 浏览数 (2)

在编程中,经常使用数字来记录、可视化数据、存储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 是虚数部分。虚数部分用字母 jJ 表示。复数在数学和工程领域中有广泛的应用,例如在信号处理和控制系统中。

布尔值

在 Python 中,布尔值 TrueFalse 分别对应数字 10。这意味着可以将布尔值与数字进行算术运算,并得到相应的结果。

代码语言:python代码运行次数:0复制
True   True  # 结果为 2
False   False  # 结果为 0
True - False  # 结果为 1

这种转换是由 Python 的动态类型特性决定的。当你进行布尔值与数字之间的算术运算时,Python 会自动将布尔值转换为相应的数字。

需要注意的是,在进行布尔运算时,True 被视为 1,而 False 被视为 0。这在一些情况下可能会导致预期之外的结果,因此在使用时需要小心确保类型的一致性。

常用的数字操作符:

1. 算术操作符:

  • :加法
  • -:减法
  • *:乘法
  • /:除法
  • //:整除(返回商的整数部分)
  • %:取余
  • **:幂运算
代码语言:python代码运行次数: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

2. 比较操作符:

  • ==:等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于
代码语言:python代码运行次数:0复制
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. 赋值操作符:

  • =:赋值
  • =:加法赋值
  • -=:减法赋值
  • *=:乘法赋值
  • /=:除法赋值
  • //=:整除赋值
  • %=:取余赋值
  • **=:幂运算赋值
代码语言:python代码运行次数:0复制
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 进行解析。

代码语言:python代码运行次数:0复制
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 转换为浮点数。

代码语言:python代码运行次数:0复制
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。

代码语言:python代码运行次数: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) 范围内的随机浮点数。

代码语言:python代码运行次数:0复制
import random

random_float = random.random()
print(random_float)

2. randint(a, b)

返回一个位于 [a, b] 范围内的随机整数。

代码语言:python代码运行次数:0复制
import random

random_integer = random.randint(1, 10)
print(random_integer)

3. uniform(a, b)

返回一个位于 [a, b] 范围内的随机浮点数。

代码语言:python代码运行次数:0复制
import random

random_float = random.uniform(1.5, 3.0)
print(random_float)

4. choice(seq)

从非空序列 seq 中随机返回一个元素。

代码语言:python代码运行次数:0复制
import random

options = ['rock', 'paper', 'scissors']
random_choice = random.choice(options)
print(random_choice)

5. shuffle(seq)

将序列 seq 中的元素随机排列。

代码语言:python代码运行次数:0复制
import random

numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)

6. sample(population, k)

population 中随机选择 k 个不重复的元素。

代码语言:python代码运行次数:0复制
import random

numbers = [1, 2, 3, 4, 5]
random_samples = random.sample(numbers, 3)
print(random_samples)

这些方法提供了在 Python 中生成随机数和进行随机选择的方式。

拓展-时间格式转换方法:

1. 将字符串转换为日期对象

使用 strptime 方法将字符串转换为日期对象。

代码语言:python代码运行次数:0复制
from datetime import datetime

date_string = "2022-01-15"
date_object = datetime.strptime(date_string, "%Y-%m-%d")
print(date_object)

2. 将日期对象转换为字符串

使用 strftime 方法将日期对象格式化为字符串。

代码语言:python代码运行次数:0复制
from datetime import datetime

now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)

3. 获取当前日期和时间

使用 datetime.now() 方法获取当前日期和时间。

代码语言:python代码运行次数:0复制
from datetime import datetime

now = datetime.now()
print(now)

4. 时间差计算

可以使用 timedelta 类来计算两个日期之间的时间差。

代码语言:python代码运行次数:0复制
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 函数返回一个包含商和余数的元组。

代码语言:python代码运行次数:0复制
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腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

0 人点赞