前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python入门第六讲】贴近生活数据类型 | 数字

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

原创
作者头像
GoBoy
发布2024-01-25 09:19:32
16100
代码可运行
发布2024-01-25 09:19:32
举报
运行总次数:0
代码可运行

在编程中,经常使用数字来记录、可视化数据、存储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
代码运行次数:0
复制
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
代码运行次数:0
复制
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腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义整数的方式:
    • 1. 直接赋值:
      • 2. 进制表示法:
        • 3. 使用 int() 构造函数:
          • 4. 使用运算符进行计算:
          • 定义浮点数的方式:
            • 1. 直接赋值:
              • 2. 使用 float() 构造函数:
                • 3. 使用运算符进行计算:
                  • 4. 科学计数法表示:
                  • 定义复数的方式:
                    • 1. 直接赋值:
                      • 2. 使用 complex() 构造函数:
                        • 3. 使用运算符进行计算:
                        • 布尔值
                        • 常用的数字操作符:
                          • 1. 算术操作符:
                            • 2. 比较操作符:
                              • 3. 赋值操作符:
                              • 数字类型转换方法:
                                • 1. int(x [,base]) - 转为整数
                                  • 2. float(x) - 转为浮点数
                                    • 3. complex(real[, imag]) - 转为复数
                                    • 数字运算内置函数
                                      • 1. max(x1, x2, ...)
                                        • 2. min(x1, x2, ...)
                                          • 3. abs(obj)
                                            • 4. fabs(obj)
                                              • 5. ceil(obj)
                                                • 6. floor(obj)
                                                  • 7. exp(x)
                                                    • 8. pow(x, y)
                                                      • 9. round(x, n)
                                                        • 10. sqrt(x)
                                                          • 11. modf(x)
                                                            • 12. log(x)
                                                              • 13. log10(x)
                                                              • 随机数生成方法:
                                                                • 1. random()
                                                                  • 2. randint(a, b)
                                                                    • 3. uniform(a, b)
                                                                      • 4. choice(seq)
                                                                        • 5. shuffle(seq)
                                                                          • 6. sample(population, k)
                                                                          • 拓展-时间格式转换方法:
                                                                            • 1. 将字符串转换为日期对象
                                                                              • 2. 将日期对象转换为字符串
                                                                                • 3. 获取当前日期和时间
                                                                                  • 4. 时间差计算
                                                                                    • 5. 时:分:秒的格式
                                                                                    • 拓展-猜数字游戏
                                                                                    • 注释
                                                                                      • 如何编写注释
                                                                                        • 该编写什么样的注释
                                                                                        领券
                                                                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档