Python3 学习笔记3-数据转换、注释、运算符、数字(Number)和字符串

一、 数据类型转换:

        在Python中,数据类型转换是编程中常见的操作,它允许你将数据从一种类型转换为另一种类型。这种转换可以是隐式的,也可以是显式的。

(1)隐式类型转换:

        隐式类型转换,也称为自动类型转换,是指Python解释器在执行某些操作时自动进行的数据类型转换。这种转换通常发生在不同类型的数据进行数学运算时。Python会根据需要自动将数据类型转换为更通用的类型,以确保操作的有效性和数据的完整性。

  • 例如,当你将一个整数与一个浮点数相加时,整数会自动转换为浮点数,以保持精度:
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo  # num_int 被自动转换为浮点数
print(num_new)  # 输出: 124.23

(2)显式类型转换:

        显式类型转换是指程序员明确指定要将数据转换为哪种类型。这通常通过调用特定的类型转换函数来实现。Python提供了多种内置函数来执行显式类型转换,如int(), float(), str(), list(), tuple(), set(), dict()等。

  • int(x): 将x转换为整数。
  • float(x): 将x转换为浮点数。
  • str(x): 将x转换为字符串。
  • list(x): 将x转换为列表。
  • tuple(x): 将x转换为元组。
  • set(x): 将x转换为集合。
  • dict(x): 将x转换为字典。
  • 例如,你可以将一个浮点数显式转换为整数:
num_flo = 3.14
num_int = int(num_flo)  # 显式转换为整数
print(num_int)  # 输出: 3
  • 或者将一个字符串转换为浮点数:
num_str = "3.14"
num_flo = float(num_str)  # 显式转换为浮点数
print(num_flo)  # 输出: 3.14

(3)内置函数执行转换 :

int([x,base])

将x转换为一个整数

float(x)

将x转换到一个浮点数

complex(real,[imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个 (key, value)元组序列。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

 二、注释:

        在Python中,注释是编写代码时用来解释代码的文字,它们不会被Python解释器执行。注释对于提高代码的可读性和维护性非常重要。Python支持两种类型的注释:单行注释和多行注释。

(1)单行注释:

  • 单行注释是最常见的注释方式,它以井号(#)开头,直到该行结束的所有内容都会被视为注释。
# 这是一个单行注释
print("Hello, World!")  # 这也是一个单行注释

(2)多行注释:

  • 多行注释通常用于添加更详细的说明,或者在代码中暂时禁用多行代码。在Python中,多行注释可以通过三个连续的单引号(''')或三个连续的双引号(""")来实现。
  • 使用三个单引号的多行注释:

'''
这是一个多行注释
它可以跨越多行
这些内容都不会被执行
'''
print("Hello, World!")
  • 使用三个双引号的多行注释:

"""
这是一个多行注释
它也可以跨越多行
这些内容同样不会被执行
"""
print("Hello, World!")

(3)注意事项:

  • 多行注释实际上是字符串的一种形式,因此它们可以被赋值给变量或用于其他字符串操作。只有当它们独立于代码存在时,才会被视为注释。
  • 多行注释不能嵌套。尝试嵌套多行注释会导致语法错误。
  • 单行注释可以嵌套在多行注释中,但通常不推荐这样做,因为它可能会使代码难以阅读。

(4)嵌套多行注释错误:

'''
这是外部的多行注释
可以包含一些描述性的内容

    '''
    这是尝试嵌套的多行注释
    会导致语法错误
    '''
'''
# 这段代码会导致语法错误

(5)推荐做法

  • 为了保持代码的清晰和可维护性,建议使用单行注释来添加简短的说明,而将多行注释用于添加更详细的描述或在代码中暂时禁用代码块。避免在注释中使用嵌套结构,以减少混淆和潜在的错误。

三、运算符:

        在Python中,运算符用于执行数学、逻辑、赋值等操作。

(1)算术运算符:

+加 - 两个对象相加
-

减 - 得到负数或是一个数减去另一个数

*乘 - 两个数相乘或是返回一个被重复若干次的字符串
/除 - x 除以 y
%取模 - 返回除法的余数
**幂 - 返回x的y次幂
//取整除 - 往小的方向取整数

(2)比较(关系)运算符:

==等于 - 比较对象是否相等
!=不等于 - 比较两个对象是否不相等
>大于 - 返回x是否大于y
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
>=大于等于 - 返回x是否大于等于y。
<=小于等于 - 返回x是否小于等于y。

(3)赋值运算符: 

=简单的赋值运算符
+=加法赋值运算符
-=减法赋值运算符
*=乘法赋值运算符
/=除法赋值运算符
%=取模赋值运算符
**=幂赋值运算符
//=取整除赋值运算符
:=

海象运算符,这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。

Python3.8 版本新增运算符。

  • 海象运算符的使用: 
# 传统写法
n = 10
if n > 5:
    print(n)

# 使用海象运算符
if (n := 10) > 5:
    print(n)

(4)逻辑运算符:

andx and y布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。
orx or y布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

(5)位运算符:

&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^按位异或运算符:当两对应的二进位相异时,结果为1
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

(6)成员运算符:

n如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

(7)身份运算符:

  • isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
    is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

(8)运算符优先级:

        以下表格列出了从最高到最低优先级的所有运算符, 相同单元格内的运算符具有相同优先级。 运算符均指二元运算,除非特别指出。 相同单元格内的运算符从左至右分组(除了幂运算是从右至左分组):

(expressions...),

[expressions...]{key: value...}{expressions...}

圆括号的表达式

x[index]x[index:index]x(arguments...)x.attribute

读取,切片,调用,属性引用

await x

await 表达式

**

乘方(指数)

+x-x~x

正,负,按位非 NOT

*@///%

乘,矩阵乘,除,整除,取余

+-

加和减

<<>>

移位

&

按位与 AND

^

按位异或 XOR

|

按位或 OR

in,not inis,is not<<=>>=!===

比较运算,包括成员检测和标识号检测

not x

逻辑非 NOT

and

逻辑与 AND

or

逻辑或 OR

if -- else

条件表达式

lambda

lambda 表达式

:=

赋值表达式

  • 注意:Python3 已不支持 <> 运算符,可以使用 != 代替,如果你一定要使用这种比较运算符,可以使用以下的方式:
>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True

 (9)代码示例:

# 算术运算符
a = 10
b = 20
print(a + b)  # 输出 30
print(a - b)  # 输出 -10
print(a * b)  # 输出 200
print(a / b)  # 输出 0.5
print(a % b)  # 输出 10
print(a ** b) # 输出 10**20
print(a // b) # 输出 0

# 比较运算符
print(a == b)  # 输出 False
print(a != b)  # 输出 True
print(a > b)   # 输出 False
print(a < b)   # 输出 True
print(a >= b)  # 输出 False
print(a <= b)  # 输出 True

# 赋值运算符
c = 0
c += a  # 等同于 c = c + a
print(c)  # 输出 10
c -= b
print(c)  # 输出 -10
c *= a
print(c)  # 输出 -100
c /= b
print(c)  # 输出 -0.5

# 逻辑运算符
print(a and b)  # 输出 20
print(a or b)   # 输出 10
print(not a)    # 输出 False

# 位运算符
x = 12  # 1100
y = 9   # 1001
print(x & y)  # 输出 8  (1000)
print(x | y)  # 输出 13 (1101)
print(x ^ y)  # 输出 5  (0101)
print(~x)     # 输出 -13 (二进制补码表示)
print(x << 2) # 输出 48 (11000)
print(x >> 2) # 输出 3   (0011)

# 成员运算符
print('a' in 'abc')  # 输出 True
print('b' not in 'abc')  # 输出 False

# 身份运算符
x = [1, 2, 3]
y = [1, 2, 3]
print(x is y)  # 输出 False
print(x is not y)  # 输出 True

# 运算符优先级
print(a + b * c)  # 先乘法后加法,输出 50
print((a + b) * c)  # 先加法后乘法,输出 500

四、 Python3 数字(Number):

        在Python中,数字是内置的数据类型,用于表示整数、浮点数、复数等数值。Python的数字类型非常灵活,支持多种数值操作和转换。

(1)Python3数字类型:

  • 整型(int):表示正或负整数,没有大小限制。
  • 浮点型(float):表示带有小数部分的数,可以使用科学计数法表示。
  • 复数(complex):由实数部分和虚数部分组成。

(2)数字的表示:

  • 十六进制:以 0x 或 0X 开头,如 0xA0F 表示十六进制数。
  • 八进制:以 0o 或 0O 开头,如 0o37 表示八进制数。

(3)数字类型转换:

  • int(x):将 x 转换为整数。
  • float(x):将 x 转换为浮点数。
  • complex(x):将 x 转换为复数,虚数部分为0。
  • complex(x, y):将 x 和 y 转换为复数,x 为实数部分,y 为虚数部分。

(4)数字运算:

  • Python支持基本的算术运算,如加、减、乘、除、取模、幂运算等。整数除法使用 // 运算符,返回不大于结果的最大整数。使用 % 运算符可以得到除法的余数。

(5)数学函数:

  • Python的 math 模块提供了丰富的数学函数,如绝对值、三角函数、对数、幂函数等。使用这些函数前需要导入 math 模块。
  •  绝对值

    • math.fabs(x): 返回x的浮点数形式的绝对值。
  • 幂函数

    • math.pow(x, y): 返回x的y次幂。
    • math.sqrt(x): 返回x的平方根。
  • 对数函数

    • math.log(x[, base]): 返回x的自然对数(底数为e),如果指定了base,则返回以base为底的对数。
    • math.log10(x): 返回x的以10为底的对数。
  • 三角函数

    • math.sin(x): 返回x的正弦值,x是弧度。
    • math.cos(x): 返回x的余弦值,x是弧度。
    • math.tan(x): 返回x的正切值,x是弧度。
  • 反三角函数

    • math.asin(x): 返回x的反正弦值,结果的单位是弧度。
    • math.acos(x): 返回x的反余弦值,结果的单位是弧度。
    • math.atan(x): 返回x的反正切值,结果的单位是弧度。
    • math.atan2(y, x): 返回从原点到点(x, y)的反正切值,结果的单位是弧度。
  • 角度与弧度转换

    • math.degrees(x): 将弧度x转换为角度。
    • math.radians(x): 将角度x转换为弧度。
  • 最大值和最小值

    • math.ceil(x): 返回大于或等于x的最小整数。
    • math.floor(x): 返回小于或等于x的最大整数。
    • math.trunc(x): 截去x的小数部分,返回整数部分。
  • 其他函数

    • math.hypot(x, y): 计算直角三角形的斜边长度,即sqrt(x*x + y*y)
    • math.copysign(x, y): 返回x的绝对值,但符号与y相同。
    • math.degrees(x): 将弧度转换为角度。
    • math.radians(x): 将角度转换为弧度。
  • 数学常量

    • math.pi: 圆周率π。
    • math.e: 自然对数的底数e。 
import math

# 计算绝对值
print(math.fabs(-10))  # 输出 10.0

# 计算幂
print(math.pow(2, 3))  # 输出 8
print(math.sqrt(16))   # 输出 4.0

# 计算对数
print(math.log(10))    # 输出自然对数
print(math.log10(100)) # 输出 2.0

# 计算三角函数
print(math.sin(math.pi / 2))  # 输出 1.0
print(math.cos(0))            # 输出 1.0

# 计算反三角函数
print(math.asin(1))  # 输出 pi/2
print(math.atan(1))   # 输出 pi/4

# 角度与弧度转换
print(math.degrees(math.pi / 2))  # 输出 90.0
print(math.radians(180))          # 输出 pi

# 最大值和最小值
print(math.ceil(4.7))  # 输出 5
print(math.floor(4.7)) # 输出 4

# 其他函数
print(math.hypot(3, 4))  # 输出 5.0

# 数学常量
print(math.pi)  # 输出 π
print(math.e)   # 输出 e

(6)随机数函数:

  • Python的 random 模块提供了生成随机数的函数,如随机选择、随机排列、生成指定范围内的随机数等。

(7)三角函数和数学常量:

  • Python的 math 模块也包括了常用的三角函数和数学常量,如 pie
  •  math.sin(x) - 返回x的正弦值。x的单位是弧度。

  • math.cos(x) - 返回x的余弦值。x的单位是弧度。

  • math.tan(x) - 返回x的正切值。x的单位是弧度。

  • math.asin(x) - 返回x的反正弦值。x的值域应该在[-1, 1]之间,返回值的单位是弧度。

  • math.acos(x) - 返回x的反余弦值。x的值域应该在[-1, 1]之间,返回值的单位是弧度。

  • math.atan(x) - 返回x的反正切值。返回值的单位是弧度。

  • math.atan2(y, x) - 返回给定的Y和X坐标值的反正切值。与math.atan(y/x)不同,它会考虑Y和X的符号以决定正确的象限。

  • math.radians(x) - 将角度x转换为弧度。

  • math.degrees(x) - 将弧度x转换为角度。 

import math

# 计算sin(pi/2)
print(math.sin(math.pi / 2))  # 输出接近于 1.0

# 计算cos(pi)
print(math.cos(math.pi))  # 输出接近于 -1.0

# 计算tan(0)
print(math.tan(0))  # 输出 0

# 计算asin(1)
print(math.asin(1))  # 输出 pi/2

# 计算acos(-1)
print(math.acos(-1))  # 输出 3*pi/2

# 计算atan(1)
print(math.atan(1))  # 输出 pi/4

# 使用atan2确定象限
print(math.atan2(1, 1))  # 输出 pi/4
print(math.atan2(-1, -1))  # 输出 3*pi/4

# 角度转弧度
print(math.radians(180))  # 输出 pi

# 弧度转角度
print(math.degrees(math.pi))  # 输出 180

(8)示例代码:

import math
import random

# 整数
var1 = 1
var2 = 10

# 浮点数
float_num = 3.14

# 复数
complex_num = 3 + 4j

# 十六进制和八进制
hex_num = 0xA0F
oct_num = 0o37

# 整数运算
print(10 + 20)  # 输出 30
print(100 - 15)  # 输出 85
print(50 * 6)    # 输出 300
print(8 / 5)     # 输出 1.6
print(17 // 3)   # 输出 5
print(17 % 3)    # 输出 2

# 幂运算
print(5 ** 2)  # 输出 25

# 绝对值和三角函数
print(abs(-10))  # 输出 10
print(math.cos(math.pi / 2))  # 输出 0.0

# 随机数
print(random.randint(1, 10))  # 输出 1 到 10 之间的随机整数

# 数学常量
print(math.pi)  # 输出 π
print(math.e)   # 输出 e

 五、字符串:

        在Python中,字符串是不可变的数据类型,这意味着一旦创建了字符串,就不能更改它。字符串可以用单引号'、双引号"或三引号'''"""来创建。

(1)字符串的创建:

var1 = 'Hello World!'
var2 = "Runoob"
var3 = """This is a
multi-line string"""

(2)字符串的访问:

  • Python中的字符串不能像列表那样直接访问单独的字符,因为字符串是不可变的。但是可以通过索引和切片来访问字符串中的部分内容。

(3)字符串的更新:

  • 虽然字符串不可变,但可以通过拼接和格式化来创建新的字符串。

(4)字符串的转义字符:

  • 在字符串中,特殊字符可以用反斜杠\来转义。

(5)字符串的运算符:

  • +:连接两个字符串。
  • *:将字符串重复指定次数。
  • []:通过索引访问字符串中的字符。
  • innot in:检查字符串中是否包含指定字符。

(6)字符串格式化:

  • Python支持多种字符串格式化方法,包括传统的%格式化和str.format()方法,以及Python 3.6中引入的f-string。
      %c 格式化字符及其ASCII码
      %s 格式化字符串
      %d 格式化整数
      %u 格式化无符号整型
      %o 格式化无符号八进制数
      %x 格式化无符号十六进制数
      %X 格式化无符号十六进制数(大写)
      %f 格式化浮点数字,可指定小数点后的精度
      %e 用科学计数法格式化浮点数
      %E 作用同%e,用科学计数法格式化浮点数
      %g %f和%e的简写
      %G %f 和 %E 的简写
      %p 用十六进制数格式化变量的地址
  • 格式化操作符辅助指令: 
*定义宽度或者小数点精度
-用做左对齐
+在正数前面显示加号( + )
<sp>在正数前面显示空格
#在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0显示的数字前面填充'0'而不是默认的空格
%'%%'输出一个单一的'%'
(var)映射变量(字典参数)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

(7)三引号字符串:

  • 使用三引号可以创建多行字符串,这在处理多行文本时非常方便。

(8 )f-string:

  • f-string是Python 3.6引入的一种新的字符串格式化机制,它允许在字符串中直接插入变量和表达式。

(9)Unicode字符串:

  • 在Python 3中,所有字符串都是Unicode字符串。

(10)字符串内建函数:

        Python 的字符串类型提供了许多内建的字符串操作方法,这些方法可以帮助你执行常见的字符串操作,如搜索、替换、大小写转换等。

  • capitalize() - 将字符串的第一个字符转换为大写,其余字符转换为小写。

  • title() - 将字符串的每个单词的首字母转换为大写,其余字母转换为小写。

  • upper() - 将字符串中的所有小写字母转换为大写。

  • lower() - 将字符串中的所有大写字母转换为小写。

  • swapcase() - 将字符串中的小写字母转换为大写,大写字母转换为小写。

  • index(sub[, start[, end]]) - 返回子字符串sub在字符串中首次出现的索引,如果找不到则抛出ValueError

  • find(sub[, start[, end]]) - 检查字符串中是否包含子字符串sub,如果包含则返回首次出现的索引,否则返回-1

  • rfind(sub[, start[, end]]) - 类似于find(),但是从字符串的右侧开始查找。

  • count(sub[, start[, end]]) - 返回子字符串sub在字符串中出现的次数。

  • startswith(prefix[, start[, end]]) - 检查字符串是否以prefix开始,如果是则返回True

  • endswith(suffix[, start[, end]]) - 检查字符串是否以suffix结束,如果是则返回True

  • replace(old, new[, count]) - 将字符串中的old子串替换为new,如果指定了count,则替换不超过count次。

  • split(sep=None, maxsplit=-1) - 根据分隔符sep将字符串分割为一个列表,maxsplit指定分割的次数。

  • splitlines([keepends]) - 将字符串按行分割为一个列表,如果keependsTrue,则保留行尾的换行符。

  • strip([chars]) - 移除字符串头尾处的空白字符,或者指定的字符。

  • rstrip([chars]) - 移除字符串尾部的空白字符,或者指定的字符。

  • lstrip([chars]) - 移除字符串头部的空白字符,或者指定的字符。

  • center(width[, fillchar]) - 返回一个字符串,它是将原字符串居中,并用fillchar填充至指定的width

  • ljust(width[, fillchar]) - 返回一个字符串,它是将原字符串左对齐,并用fillchar填充至指定的width

  • rjust(width[, fillchar]) - 返回一个字符串,它是将原字符串右对齐,并用fillchar填充至指定的width

  • zfill(width) - 返回字符串的副本,其中字符串被填充为指定的宽度,用'0'字符填充。

  • expandtabs(tabsize=8) - 将字符串中的制表符\t转换为空格,每个制表符转换为tabsize指定数量的空格。

  • isalpha() - 如果字符串至少有一个字符并且所有字符都是字母,则返回True

  • isdigit() - 如果字符串只包含数字,则返回True

  • isalnum() - 如果字符串至少有一个字符并且所有字符都是字母或数字,则返回True

  • isspace() - 如果字符串中只包含空白字符,则返回True

  • islower() - 如果字符串中所有区分大小写的字符都是小写,则返回True

  • isupper() - 如果字符串中所有区分大小写的字符都是大写,则返回True

  • istitle() - 如果字符串是“标题化”的(即每个单词的首字母都是大写),则返回True

  • encode(encoding='utf-8', errors='strict') - 将字符串编码为指定的编码格式。

  • decode(encoding='utf-8', errors='strict') - 解码字符串,将其转换为指定编码格式的字符串。

  • format(*args, **kwargs) - 格式化字符串,类似于%格式化。

  • join(iterable) - 将序列中的元素连接成字符串,元素之间用该字符串分隔。

  • isdecimal() - 检查字符串是否只包含十进制字符。

  • maketrans(x[, y[, z]]) - 返回一个转换表,用于字符串转换

(11)示例代码:

# 字符串创建
s1 = 'Python'
s2 = "Hello, World!"
s3 = """This is a
multi-line string"""

# 字符串访问
print(s1[0])  # 输出 P
print(s2[7:-1])  # 输出 World

# 字符串更新
new_str = s1 + " 3.8"
print(new_str)  # 输出 Python 3.8

# 字符串格式化
name = "Runoob"
age = 5
print("My name is %s, and I am %d years old." % (name, age))

# 使用f-string
name = 'Runoob'
age = 5
print(f"My name is {name}, and I am {age} years old.")

# 三引号字符串
multi_line_str = """This is a
multi-line string"""
print(multi_line_str)

# 字符串内建函数
print(s1.upper())  # 输出 PYTHON
print(s2.split(","))  # 输出 ['Hello', ' World!']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值