Python

咕咕咕...

一些声明

这篇随笔只是涉及一些python的基础语法,太深的理论和实际开发的东西也没有去学习,所以不要期待太多
我始终在Windows上编写和运行python,Mac和Linux上的东西不知道
附上一个刷题网站pythontip
暑假在w3浅学了一点,不自量力写一篇随笔

python

Python 是一门流行的编程语言。它由 Guido van Rossum 创建,于 1991 年发布。

它用于:

Web 开发(服务器端)
软件开发
数学
系统脚本

一些特点:
Python 是为可读性设计的,与英语有一些相似之处,并受到数学的影响。
Python 使用新行来完成命令,而不像通常使用分号或括号的其他编程语言。
Python 依赖缩进,使用空格来定义范围;例如循环、函数和类的范围。其他编程语言通常使用花括号来实现此目的。

门槛

https://www.python.org/
安装python编译器、适合自己的IDE,这里推荐VScode、pythoncharm
可以通过python --version来检查有没有成功安装
可以通过python Name.py来运行名为Name.py的脚本
另外,把 python 作为命令行来运行是可能的。在cmd或powershell中输入python即可进入python终端(但是我不怎么会用)
和c++不同的是,python自带很多模块,但是这可能并不完全能满足我们的需要,所以python自带了一个管理模块的工具pip,可以通过pip安装模块(以requests模块为例)pip install requests
当然,要用这些命令要把exe文件所在位置丢到系统环境变量path里去(不要像某sb一样丢一堆快捷方式的位置进去)

注释

作为一名合格的程序猿,我们当然要遵守行业规范,恳请大家多用注释(不然会被库鲁斯)
单行注释
#print("我是个sb")
多行注释
这里的单引号也可以改成双引号

'''
print('我')
print('是')
print('sb')
'''

print函数

学习大多数语言写的第一行代码多数是输出Hello ,World,所以我也这么干!
语法
print(*objects,sep=' ',end='\n',file=sys.stdin)
其中,objects表示你要输出的对象,sep表示多个对象之间用什么来间隔,end表示最后用什么来结尾,file表示你要输出到什么文件里,原型中的均为默认值,多个对象可用逗号隔开
数字、字符串、列表、字典等都可以直接输出
更多内容可以看这位dalao的博客(如果真的是啥都不会建议还是学了基础再看)
https://blog.csdn.net/sinat_28576553/article/details/81154912
所以我们可以轻松码出第一行代码

print("Hello ,World!")

未来的程序设计师,欢迎来到python的世界!

变量

到这里才算是进入正题
在python中,没有创建变量的命令,只有被赋值时变量才认为被创建

变量名称

变量名必须以字母或下划线字符开头
变量名称不能以数字开头
变量名只能包含字母数字字符和下划线(A-z、0-9 和 _)
变量名称区分大小写(age、Age 和 AGE 是三个不同的变量)
作为一名合格的程序猿,变量名需要清晰易懂,一般采用其意义所对应的英文名,在实际工作中如果你使用一些诸如'a,b,c'这样的变量名,会被库鲁斯

变量类型

常见变量类型主要有:int(整数)、float(实数)、complex(复数)、string(字符串)、list(列表)、bool(布尔)...
可以用type()来查看变量类型
可以用变量类型()实现类型转换

a=int("3") #a将会是整数3

数字类型貌似长度不限,所以你大可以用python水过高精题

变量赋值

a=1           #int
b=2.2         #float
b2=5.6e5
c=5+6j        #complex
d='我是个sb'  #str
d2="我是个sb"  
d3='''
  我是个sb
  我是个sb
   '''            
e=[]          #一个空列表
x=y=z='orange'    #一行为多个变量赋值
x,y,z='apple','orange','banana'

运算的一些误区

python中的"+"不仅可以完成数学运算,还可以实现字符串拼接,但是不能把数字和字符串加起来
python中"/"表示除,"//"表示整除

3/2=1.5
3//2=1 #即为3/2向下取整 

python中的"*"不仅可以完成数学运算,还可以实现字符串的重复
python中的" ** "表示乘方,x ** 2等效于x * x

字符串

有些东西我们不希望让计算机做太多运算和分析,直接照原样存储就好了,这时候我们会用一对""将其引起来将其变为字符串
像许多其他流行的编程语言一样,Python 中的字符串是表示 unicode 字符的字节数组。

简单的分类

单行字符串

a='我是个sb'
b="我是个sb"

多行字符串

a='''
全体目光向我看齐
我宣布个事儿
我是个sb!
'''
b="""
全体目光向我看齐
我宣布个事儿
我是个sb!
"""

字符串的索引

python中没有字符类型,字符即为长度为 1 的字符串
可以通过方括号来访问某一位置的元素,注意,字符串下标从 0 开始,可以是负数,但是绝对不能超过字符串长度-1

a='我是个sb'
print(a[1])

裁剪

可以通过裁剪语法访问某一范围的元素,注意这里的范围左闭右开

a='我是个sb'
print(a[1:4])
#输出'是个s'

python支持负数下标,其意义为从末尾开始计数,字符串的第 len-1 位也是第 -1 位

a='我是个sb'
print(a[-4:-1])
#输出'是个s'

一些函数

使用这些函数不需要引入新的模块(#include<cstring>:勿cue)
这里的函数都是返回一个新值,对原来的字符串没有影响

获取长度

a='我是个sb'
print(len(a)) 
#输出5

去除首尾空白符

a='   我是个sb  '
b=a.strip() 
print(b)

小写/大写

a='I am an sb'
print(a.lower())#返回一个字母小写的字符串
print(a.upper())#返回一个字母大写的字符串

替换

a='我是个sb'
b=a.replace("sb","傻子")
print(b)

分割

以分隔符为基准将原字符串分割为若干子字符串,返回一个以字符串为元素的列表

a='我是个,sb'
b=a.spilt(',')
print(b)

查找

找到某一个字符的位置

a='我是个sb'
b=a.find('我')
print(b)

是否存在

a='我是个sb'
x='sb' in a
y='sb' not in a
print(x)
print(y)

格式

字符串可以通过'+'进行串联,但是不能把字符串和数字连到一起,format函数可以有效解决
format可以将接收的参数格式化,将其填充到占位符 {} 中

a='11{}51{},1919{}10'
b=a.format(4,4,8)

c='11{0}51{2},1919{1}10' #通过这样的方式将参数填在相应的位置
d=c.format(4,8,4)

数组

Python中有四种数组数据类型:

列表(List)是一种有序和可更改的集合。允许重复的成员。
元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。
集合(Set)是一个无序和无索引的集合。没有重复的成员。
词典(Dictionary)是一个无序,可变和有索引的集合。没有重复的成员。
选择集合类型时,了解该类型的属性很有用。

为特定数据集选择正确的类型可能意味着保留含义,并且可能意味着提高效率或安全性。
这里着重列表和词典

列表

列表有序且更改,其中的元素可以是数字、字符串,甚至还可以是列表

创建

list=[] #这是一个空列表

索引

下标从 0 开始
同样支持裁剪语法、负索引,同字符串

修改

list=[1,2,3]
list[1]=5

遍历

通过for循环遍历
python对格式的要求很大,通过缩进来分割代码块,所以该有的缩进换行一定要有

for x in list:
    print(x)
#x为列表中的元素

是否存在

同字符串

添加项目

append(element),在列表末尾添加参数
insert(position,element),在指定位置添加参数
如果position超过列表长度则在末尾添加

list=["abc"]
list.append("123")
list.insert(2,"123")

删除项目

remove(element),删除指定元素
pop(position),删除指定位置的元素,默认为删除最后一个
del关键字,删除关键字之后的元素
clear(),清空列表

list=['a','b','c']
list.remove('a')
list.pop()
del list[0]
del list #删除整个列表
list.clear()

复制

list1 = list2,这是对列表地址的引用,list1 的修改会影响到 list2
copy()可以实现真正的复制

list2 = list1.copy()

也可以用内建列表的方法

list2 = list(list1)

合并

可以直接'+'串联
可以通过extend()函数

list1.extend(list2)
#将list2添加到list1末尾

生成

循环时我们往往需要一定范围的整数列表,可以用 range() 生成
语法
range(start,end,step)
其中,start表示起点位置,默认值为0,end表示终点位置,区间左闭右开,step表示步长,默认值为1

二维列表

其实就是套娃
建立比较麻烦,用法和一维列表相同,索引用两个方括号

s = []
for i in range(5):
    s.append([]) #往列表里塞列表
	for j in range(5):
	    s[i].append(j)
print(s)

有一个叫列表推导式的东西,基本形式为[ 表达式,for() if ],其中 if 可有可无,如果条件语句返回true,则执行后面的语句,如果后面没有语句,则直接把元素加进列表

s = [[] for i in range(5)]建立了一个含有五个空列表的列表
s = [[j for j in range(5)] for i in range(5)]和上面的建立等效

元组

元组时有序且不可更改的数组

建立

tuple = (1,2,3)

用法和 list 基本相同

集合

集合符合数学中集合的无序性和互异性,即集合中的元素没有重复,并且不支持索引

建立

set = {1,2,3}

用法见w3

字典

字典相当于c++中的map,通过键来索引,不同项之间用逗号隔开

建立

dic = {}
dic2={
    'name'='sb'
}

索引

print(dic['name'])
print(dic.get('name'))

修改

dic['name'] = 'xiaoming'

如果字典中不存在相应键值,则为添加操作

删除

pop(key)删除键值key对应的项
del关键字用法同list

遍历

dic = {
   'name' : 'sb',
   'age'  : 114,
   'sex'  : male
}
for i in dic:
    print(dic[i]) #i为字典中的键
for i in dic.values():
    print(i) #i为字典中的值

是否存在

in 和 not in 检查字典中是否存在相应的键

复制

同列表

嵌套

字典套字典

Person = {
   "child1" : {
    "name" : "Phoebe Adele",
    "year" : 2002
  },
  "child2" : {
    "name" : "Jennifer Katharine",
    "year" : 1996
  }
  ...
}

当然,也可以嵌套已经存在的字典

child1 = {
  "name" : "Phoebe Adele",
  "year" : 2002
}
child2 = {
  "name" : "Jennifer Katharine",
  "year" : 1996
}
Person = {
  'child1':child1,
  'chile2':child2
}

if、else分支

语法

if 条件:
   表达式
elif 条件:
   表达式
else:
   表达式

elif,else可以省略,缩进不可以省略
支持数学逻辑条件
等于:a == b
不等于:a != b
小于:a < b
小于等于:a <= b
大于:a > b
大于等于:a >= b
条件用 and 或 or 来连接,相当于c++中的 && ,||

for循环

语法

for x in list:
    表达式

x 为list中的元素
可以用range生成整数列表,详见列表部分
continue 跳出当前操作,进入下一次循环
break 跳出整个循环或者跳出到上一层(嵌套)
总之和c++一样

while循环

语法

while 条件:
    表达式

只要条件为true,循环就会无休止地进行下去,所以如果是数学逻辑作为条件,记得自增

函数

语法

def func(参数):
    表达式
    return

参数同样不需要提前声明类型

默认参数值

如果没有传入参数,函数就会自动传入默认参数

def func(name = 'sb'):
    print("I am " + name)
func("Li Hua")
func()

未知参数

如果你不知道要传入多少个参数,可以通过"*" 传参,此时参数为list

def func(*name):
    print("I am " + name[0])
func("Li Hua","Xiao Ming")

在函数中改变参数的值

在网上找了找,貌似不能实现c++那样通过取地址符改变参数值的功能

但是可以

修改全局变量

在没有声明的前提下函数不可以修改全局变量,所以在修改之前通过globe关键字声明,具体见下面的汉诺塔代码

返回值

return 关键字后为返回值,可以为任何数据类型,当然也可以什么都没有
同c++,函数执行 return 语句后就会跳出函数

递归

python同样支持递归操作,函数调用同样使用栈,层数过多会爆栈
打个汉诺塔

cnt=0
def hanoi(id,start,end,mid):
    global cnt 
    if id==1:
	    cnt=cnt+1
    else:
        hanoi(id-1,start,mid,end)
        cnt=cnt+1
        hanoi(id-1,mid,start,end)

hanoi(int(input()),'A','B','C')
print(cnt)

类(class)

这个东西类似于c++中的sturct,我还不清楚c++中的class是个啥,姑且就当成struct理解了
你可以在类中定义各种属性,可以是函数,可以是变量,当然,你还可以嵌套

class Myclass:
      属性

通过 “.” 来访问其属性

参数self

你可以对创建的实例进行操作,参数self代表你创建的实例
需要注意,self必须是类函数参数中的第一个
可以使用别的名称,但是建议使用约定俗成的self

class Myclass:
      def func(self,name)
	      self.name=name
p = Myclass()

内置预处理函数

posted @   Chano_sb  阅读(108)  评论(7编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示