Python语法基础

基本语法

  • 输入
a = int(input()) 
b = int(input()) 
  • 输出
print(a,b,c) # 以空格分隔,then换行
print(a,b,c,end="")# 以end后的值为分隔,不换行
  • python变量均为指针
b=1 # b指向1所在的内存位置
a=b # a指向b所在的内存位置
a is b # a和b所在内存位置相同
a==b # a,b指向值相等
  • 赋值(交换a,b值)
a,b = b,a
print(a,b)
a=b=c=1
print(a,b,c)

字符串

  • 字符串,用‘ ’ ,“ ”
  • “”" 三双引号 “”"中可以包含换行符、制表符
ptint("""Tab(\t)我爱你\n"""")
  • 字符串下标,从左至右0 - n-1 ,从右至左-1 - -n
a="I love you"
print(a[-1]) # I
print(a[0]) # I 
  • 字符串内容不可更改
  • +连接字符串
  • 用in/not in 判断子串
a="Hello"
print("He" in a) # true
print("EL" not in a)# true
  • 字符串–数转化(整数和字符串无法相加
int(x)/float(x)/str(x)/eval(x)
  • string.split() 空格分隔字符串为一个列表
  • ord(x)求字符x的编码
  • chr(x)求编码为x的字符
  • 字符串
  • 字符串函数
s="AABCDE"
s.count(A) # 2
s.find(A,0) #从头开始查找A第一次出现的下标 0,find找不到-1,index找不到报错
s.rfind(A,4) #从尾部开始查找A第一次出现的下标 1,rfind找不到-1,rindex找不到报错
x=s.replace(A,B) #将A替换为B BBBCDE,但是s原本不变AABCDE
s.strip() #去除头尾空白字符的字符串
s.lstrip() #去除头空白字符
s.rstrip() #去除尾空白字符
s.strip('.') #去除头尾.的字符串
  • 字符串切片
s="ABCDE" #s[n:m:z]-->每z个字符取得下标为n到m-1的字符(z为负数则倒着取)
s[0:2] #AB 
s[-3:-1] #CD
s[:2] #AB
s[2:] #CDE
s[::-1] #倒着每1个字符取一个,即将字符串反转EDCBA
s[0:4:2] #AC

列表 List

  • 声明 list = [1,2,3,4] / lsit = [“good”,“fuck”]
  • 列表后面添加元素,不会生成新的列表(注意与元组的区别)
list=[1,2,3]
list2=list
list+=[4]
print(list is list2) # True
  • list.append(200) 在列表尾部添加元素200,del list[1] 删除列表下标为1的元素

  • len(list) 求元素个数长度(列表,字符串,元组等)

  • 对于列表而言,list+=list2 != list=list+list2

list1=list=[1,2,3]
list+=[4,5,6] # 在list尾部添加元素4,5,6
print(list1 is list) # True
list=list+[7,8,9] # 将list和[7,8,9]组合,重新生成新的列表,再赋值给list
print(list1 is list) # False
  • 列表乘法(去掉一层[])
a=[0]*2 # a=[0,0]
b=[[0]]*2+[[0]]*2 # b=[[0],[0],[0],[0]]
c=[[0]*2] # c=[[0,0]]

b[0][0]=5 # b=[[5],[5],[0],[0]]
b[2][0]=6 # b=[[5],[5],[6],[6]]
  • 用 in 判断列表是否包含某个元素
list=[1,2,3,4]
print(3 in list,5 not in list) # true true
  • 列表排序
a.sort() # a列表从小到大排序,默认比较元素本身大小
a.sort(key=function) # 比较以a列表中每一个元素为参数调用方法function后的大小

a.sorted() # 返回一个新的从小到大的列表
  • 自定义比较规则排序
student=[
    ('John','A',15),
    ("Mike","B",12),
    ("Mike","C",18),
    ('Bom',"D",10)
]
student.sort(key=lambda x:x[2]) #student中的每一个元组作为参数,返回元组中下标为2的元素,进行从小到大比较
student.sort(key=lambda x:-x[2]) #student中的每一个元组作为参数,返回元组中下标为2的元素,进行从大到小比较
print(student)

算数表达式

  • / 普通除法,结果一定是小数
  • // 取整
  • **取幂
  • %取余
z = 10.0-1
print(z) # 9.0

逻辑表达式

  • and 且,or或
  • 0,"",[]相当于False,但不等于False
print(not "")# true
print([])# false

条件分支

if 条件1:
   执行语句
elif 条件2:
    执行语句
else:
    执行语句  
### 必须有缩进且对齐!!

循环

  • for
for i in range(5): #[0,5)
for i in range(0,10,3): #[0,10)步长3
for i in [1,2,3,4]: #[1,4]
    
for i in range(5): 
    if i==4:
        break
else:
    # else 会在for循环结束时执行,若break了则不执行
  • 斐波那契数列
n = int(input())
s,temp=0,1
for i in range(1,n+1):
    s+=i*temp
    temp*=i
print(s)

函数

def fun(can1,can2,can3,....):
    sentence
    return can1
  • 全局变量 global n
  • 局部变量注意
n=9
def fun():
    print(n)
    n=10
# UnboundLocalError: local variable 'n' referenced before assignment
  • 递归(上楼梯、汉诺塔、雪花曲线)要善于考虑n-1,n-2对原规模问题的优化
## 上楼梯,一次上1或2级楼梯,上n层楼有多少种方法
def upstep_way(n):
    if n==1:
        return 1
    elif n==2:
        return 2
    else:
        return upstep_way(n-1)+upstep_way(n-2)

转义字符

  • ’ \'后面的字符连在一起成为转义字符
s="abac\t" # \t为转义字符
s=r"abc\t" # 加上r取消转义

元组

  • 由,号分隔
t=123,4556,678
u=t,9999 #输出 ((123,4556,678),999)
  • 元组元素不能赋值(元组元素是指针,指针指向的位置一旦确定,不可更变,但是可以更改指针指向位置的内容
  • 元组元素内容可以修改
v=1,2,[1,2,3]
v[2]=222 #报错
v[2][1]='world' #即 将[1,2,3]改为['world',2,3]
  • 元组切片和访问 与字符串一致
  • 元组后面添加元素时,会生成一个新的元组
t=(1,2,3)*3 # 等价于(1,2,3,1,2,3,1,2,3)

b=1,2,3,4
a=b
print(a is b) # True
t+=(200,) # 生成了一个新的元组
print(a is b) # False
  • 元组排序只能用sorted()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值