第二课堂笔记:python入门

数据类型和操作

python的常见数据类型

标准数据类型

不可变数据

  • Number(数字)
  • String(字符串)
  • Tuple(元组)

可变数据

  • List(列表)
  • Set(集合)
  • Dictionary(字典)

其他

  • Type(类型)
Number
  1. int(整数)

    离散的数据类型

  2. float(浮点数)

    • 浮点数误差:

      ​ 精确计算浮点数

      import decimal
      a = decimal.Decimal('0.1')
      b = decimal.Decimal('0.2')
      print(a + b) # 0.3(字符对象,不能直接与浮点数比较)
      
    • 科学计数法(E记法)

      4e-05(4乘10的负五次方)即0.00004

  3. bool(布尔数)

    • 可当作整型对待,True相当于1,False相当于0

    • False:

      • 定义为False的对象(None, False)

      • 值为0的数字类型:0,0.0,0j,Decimal(0),Fraction(0, 1)(分子0,分母1的有理数)

      • 空的序列和集合:'', (), [], {}, set(), range(0)

  4. complex(复数)

    x = 1+2j
    x.real # 获取实部数值(浮点数
    x.imag # 获取虚部数值(浮点数
    

python的运算

运算符

  • 算术:+, -, *, @, /, //(地板除,向下取整), **, %, - , +
  • 关系:<, <=, >=, >, ==, !=
  • 赋值:+=, -=, *=, /=, //=, **=, %=
  • 逻辑:and, or, not

其他运算操作

  • abs(x) # 绝对值
  • complex(re, im) # 返回一个复数
  • c.conjugate() # 返回c的共轭复数
  • divmod(x, y) # 返回(x // y, x % y)
  • pow(x, y) #计算x的y次方,同x ** y

变量和函数

变量(variables)

变量命名规则

  • 必须以字母或下划线(_)开头

  • 命名可由字母、数字和下划线组成

  • 大小写敏感

  • 尽量避免使用保留字命名

    • 查询保留字

      import keyword
       
      keyList = keyword.kwlist
      print(keyList)
       
      >>> ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 
          'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally',
           'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
           'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
      

函数(Functions)

创建和调用

def myfunc(): # 创建
	pass # 空语句,常用作占位符
	
myfunc() # 调用

参数

def myfunc(x): # 创建
	print(x)
	
myfunc(12) # 调用

>>>12

位置参数

def myfunc(x, y, z): # 创建
	return "".join(z, y, x)
	
myfunc(1, 2, 3) # 调用

>>>3, 2, 1

关键字参数

  • 调用函数时明确传入变量给到哪个参数
  • 位置参数必须在关键字参数之前
def myfunc(x, y, z): # 创建
	return "".join(z, y, x)
	
myfunc(x = 1, y = 2, z = 3) # 调用

>>>3, 2, 1

默认参数

  • 定义函数时预设参数的值,如果调用函数时没有给该参数传递值,则该参数默认采用预设的值

  • 默认参数必须在最后

    def myfunc(x, y, z = 3): # 创建
    	return "".join(z, y, x)
    	
    myfunc(x = 1, y = 2) # 调用
    
    >>>3, 2, 1
    

收集参数

将参数打包为元组
def myfuc(*args):
	print(args)
	
myfunc(1, 2, 3, 4, 5)

>>>(1, 2, 3, 4, 5) # 元组
def myfuc():
	return 1, 2, 3

myfunc()

>>>(1, 2, 3) # return多个值时函数自动将它们打包为元组
  • 如果在收集参数后面需要其他参数,需要用关键字参数指定其他参数

    def myfuc(*args, a, b):
    	print(args, a, b)
    	
    myfunc(1, 2, 3, a = 4, b = 5)
    
    >>>(1, 2, 3, 4, 5)
    
将参数打包为字典
def myfuc(**kwargs):
	print(kwargs)
	
myfunc(a = 1, b = 2, c = 3)

>>>{'a':1, 'b':2, 'c':3}

此时必须使用关键字参数

解包参数

解包元组
args = (1, 2, 3, 4)
def myfunc(a, b, c, d)
	print(a, b, c, d)
	
myfunc(*args)

>>>1 2 3 4
解包字典
kwargs = {'a':1, 'b':2, 'c':3, 'd':4}
def myfunc(a, b, c, d)
	print(a, b, c, d)
	
myfunc(**args)

>>>1 2 3 4

Tips

  • 使用help()查看函数文档时,常在函数原型中看到"/"

    abs(x, /)
    sum(iterable, /, start=0)
    

    "/"左边的参数必须传递位置参数,右侧随意

    自定义函数也可以使用这个语法

    def abc(a, /, b, c)
    
  • 接上,"*"右边只能是关键字参数

返回值

return 2x

执行完return语句后,函数立即返回,不执行return后面的语句

如果没有return,函数会自行返回None

作用域问题

global:在函数内引用全局变量的值,即不生成同名局部变量

nonlocal:在函数内引用全局变量的值,并有修改该变量的值的权限

global x
nonlocal x

当函数嵌套使用时,内层函数仍无法直接修改外层函数的变量,但可以引用外层变量的值

条件

if

判断条件成立,则运行其包含的语句或代码块

if-else

判断条件成立,则运行其包含的代码块,不成立则执行另外的语句或代码块

if-elif

多个条件,一个不成立就判断另一个

if-elif-else

在上一类的基础上,如果所有条件都不成立,则执行另外的代码

条件表达式

条件成立时执行的语句 if condition else 条件不成立时执行的语句

if-else

a = 3
b = 5
small = a if a < b else b

if-elif-else

score = 66
level = ('D' if 0 < score < 60 else
         'C' if score < 70 else
         'B' if score < 80 else
         'A' if score < 100 else
         "请输入0-100之间的数")

while循环

while condition is True:
	statement(s)
	if condition:
		break
	else: continue
else

break 语句

跳出循环体

continue语句

跳出循环体并回到循环体的判断位置

else语句

当循环正常结束时,进行else语句

for循环

for variable in 可迭代对象:
	statement(s)

可迭代对象

可依次取出元素的对象

  • 序列(字符串,列表,range()

range()

  • range(n):从0开始的n个数字
  • range(m, n):前闭后开的区间(开始的数字,结束的数字)
  • range(m, n, l): l为步长,即每两个数之间相差的数
  • 步长可以为负数,如range(10, 5, -2)

字符串

编写方式

  • 单引号

  • 双引号

    如果字符串内需要使用单/双引号,可用另一种引号包裹字符串

    也可使用转义字符

  • 三引号

原始字符串

在字符串前加"r",使字符串内的转义字符不再有效

跨行字符串

  • 在每一行的末尾加上一个"\"
  • 用’‘’ ‘’‘或”“” “”“包裹字符串

方法

大小写切换

  • (x.)capitalize(): 基于原字符串生成一个新字符串,其首字母为大写,其余为小写
  • (x.)casefold(): 全小写(不止英文
  • (x.)title(): 将每个单词的首字母变成大写,其余变小写
  • (x.)swapcase(): 大小写反转
  • (x.)upper(): 全大写
  • (x.)lower(): 全小写(仅限英文

左中右对齐

  • center(width, fillchar=' '):若宽度不足则以空格(默认,可更改)补充,使字符串居中
  • ljust(width, fillchar=' '):若宽度不足则以空格(默认,可更改)补充,使字符串居左
  • rjust(width, fillchar=' '):若宽度不足则以空格(默认,可更改)补充,使字符串居右
  • zfill(width):以0填充左侧

查找

  • count(sub[, start[, end]]): 查找子字符串在字符串内出现的次数,可选参数限制查找范围
  • find(sub[, start[, end]]): 定位子字符串在字符串中的下标索引值,从左往右,如果找不到,返回-1
  • rfind(sub[, start[, end]]): 定位子字符串在字符串中的下标索引值,从右往左,如果找不到,返回-1
  • index:与find相似,但找不到会报错
  • rindex:与rfind相似,但找不到会报错

替换

  • expandtabs([tabsize=8]):用空格代替制表符并返回新的字符串,参数指定一个tab等于多少空格

  • replace(old, new, count=-1):old替换为new,count指定次数

  • translate(table):根据转换规则的表格替换字符串内字符,返回新字符串

    x = "I love A"
    x.translante(str.maketrans("ABCDEFG", "1234567", love(指定的忽略内容)))
    
    >>>"I 1"
    

判断

  • startswith(prefix[, start[, end]])
  • endswith(suffix[, start[, end]])
  • isupper()
  • islower()
  • istitle()
  • isalpha()
  • isascii()
  • isspace()
  • isprintable()
  • isdecimal()
  • isdigit()
  • isnumeric()
  • isalnum()
  • isdentifier()

截取

  • strip(chars=None)
  • lstrip(chars=None)
  • rstrip(chars=None)
  • removeprefix(prefix)
  • removesuffix(suffix)

索引和切片

与列表相同

格式化字符串

"1 + 2 = {}, 2*2 = {}".format(1+2, 2*2)

>>>'1 + 2 = 3, 2*2 = 4'


"1 + 2 = {1}, 2*2 = {0}".format(2*2, 1+2)

>>>'1 + 2 = 3, 2*2 = 4'

位置参数

"{0}{0}{1}{1}".format("y", "n")

>>>'yynn'

关键字参数

"life is {a}, you need {b}".format.(a = "short", b = "Python")

>>>'life is short, you need Python'
posted @   Melnis8  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示