一、基本数据类型

python中定义变量虽然不用定义数据类型,但不代表python没有数据类型,数据类型是一类值,每个值只属于一个数据类型。

python中常见的数据类型包括:

  • 数字类型:整数(int)、浮点数(float)、复数(complex)、布尔(bool)
  • 序列类型:字符串(str)、列表(list)、元组(tuple)
  • 集合类型:集合(set)、冻结集合(frozenset)
  • 映射类型:字典(dict)
  • 二进制类型:字节(bytes)、字节数组(bytearray)、内存视图(memoryview)

今天我们学习数字类型。

二、数字类型:整数、浮点数、复数、布尔型

数据类型 说明    例子
整数(int) 值是整数 -2,1,3,5
浮点数(float) 值是小数 3.14,2.68,12.911
复数(complex) 通过x + yj形式表示实部与虚部组合的值  3+4j  
布尔(bool) 只有两种值:True和False true,false

这四种数字类型中,学习中最让我费解的是复数(complex),它采用实部+虚部的组合的方式形成一个值,我的疑问是复数的作用和应用场景是什么?

AI给我的答案是:Python内置的复数类型为科学计算和工程应用提供了高效支持,通过x + yj形式表示实部与虚部的组合,并支持多种内置属性和运算方法。应用场景主要在信号处理、控制系统、电气工程、量子物理、工程计算等领域。

原谅我这几个领域我都没怎么接触过,自小到大数学底子也不是很好,希望在后续学习中能够成长到需要编写使用复数的程序。(立个flag)

言归正传,写点代码加深印象。

程序一:整数除以整数得到浮点数

#定义1个整数
a_int = 4
print(a_int/2)

输出的结果是:2.0

这就有意思了,一个整数除以另一个整数,按照常理得数应该是整数,但实际得出的结果是浮点数,看来又有问题需要解决了。

答案其实我们可以猜到,在python中,将任意两个数相除,结果总是浮点数,即便这除数和被除数都是整数。

程序二:结合运算符的计算

#定义两个数字类型变量
a_int = 20
b_float = 5.0
#加、减、乘、除
print(a_int+b_float)
print(a_int-b_float)
print(a_int*b_float)
print(a_int/b_float)
# ** 表示幂运算
print(a_int**b_float)

运算输出的结果都是浮点数,可以看出只要和浮点数进行了运算,最后的结果都会变成浮点数。

程序三:复数的加减乘除

a=3+4j
b=4+3j
print(a+b)
print(a-b)
print(a*b)
print(a/b)

得出的结果加法和减法很好理解,但是到了乘法和除法就有点弄不清运算逻辑了。

凡事不明问AI,说实话AI真是个好东西,不管是学习还是帮助写代码都是很好的帮手,建议大家学习的时候要结合AI一起学习,效果成倍提升。

(1)复数乘法计算原理:

给定两个复数:
z1 = a + bj
z2 = c + dj

那么它们的乘积为:
z1 * z2 = (a + bj) * (c + dj) = (ac - bd) + (ad + bc)j

记忆方法:按照多项式乘法展开,注意 j² = -1。

示例:

z1 = 3 + 4j
z2 = 2 - 1j

# 手动计算:
# (3+4j)*(2-1j) = 3*2 + 3*(-1j) + 4j*2 + 4j*(-1j)
#               = 6 -3j +8j -4j²
#               = 6 +5j -4*(-1)   # 因为 j² = -1
#               = 6 +5j +4
#               = 10 +5j

# Python计算
result = z1 * z2
print(result)  # 输出:(10+5j)

(2)复数除法计算原理:

复数除法需要用到共轭复数。给定两个复数:
z1 = a + bj
z2 = c + dj (c和d不同时为0)

那么 z1 / z2 = (a + bj) / (c + dj)

为了化简,分子分母同时乘以分母的共轭复数(c - dj):

z1 / z2 = [(a + bj) * (c - dj)] / [(c + dj) * (c - dj)]

分子展开:
(a + bj)*(c - dj) = (ac + bd) + (bc - ad)j

分母:
(c + dj)*(c - dj) = c² - (dj)² = c² + d² # 因为 (dj)² = d² * j² = -d²,所以减号变加号

所以:
z1 / z2 = [(ac + bd) + (bc - ad)j] / (c² + d²)

即:
实部 = (ac + bd) / (c² + d²)
虚部 = (bc - ad) / (c² + d²)

示例:

z1 = 3 + 4j
z2 = 2 - 1j

# 手动计算:
# 分子: (3+4j)*(2+1j)  注意分母的共轭是 2+1j
#        = 3*2 + 3*1j + 4j*2 + 4j*1j
#        = 6 +3j +8j +4j²
#        = 6 +11j -4
#        = 2 +11j
# 分母: (2-1j)*(2+1j) = 4 - (1j)² = 4 +1 = 5
# 所以结果为 (2 +11j)/5 = 0.4 + 2.2j

# Python计算
result = z1 / z2
print(result)  # 输出:(0.4+2.2j)

过于复杂了,得花点时间慢慢消化,没耐心的暂时跳过吧。

程序四:整数中的下划线

#可使用下划线将其中的位分组,使其更清晰易读中的下划线
#外国的千分数字法
foreign_number=14_000_000_000
#中国的万分数字法
local_number=140_0000_0000
print(f"外国以1000为分割写法:{foreign_number}")
print(f"中国以10000为分割写法:{local_number}")

在书写很大的数时,可使用下划线将其中的位分组,使其更清晰易读,这些下划线在打印时是不会打印的。

程序五:布尔数据类型

#定义两个数字
a_num = 5
b_num = 10
#两个数字是否相等,返回一个bool值
c_bool = a_num == b_num

print(c_bool)

“布尔”数据类型只有两种值:True和False,要注意它们的首字母都是大写的。一般在后续学习的if语句中会广泛使用布尔数据类型。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐