Python 快速入门

本文为C/C++程序员提供了一个快速入门Python的教程,内容涵盖变量类型、字符串处理、输入与类型转换、数字与布尔类型、逻辑运算、控制结构、循环、列表、元组、字符串操作、字典、集合、函数以及闭包等内容。
摘要由CSDN通过智能技术生成

更好的阅读体验?

0.前景知识🧀

本教程适用于学过c/cpp语言者快速入门Python

0.1c语言变量的数据类型是事先定义的,而python是后天接受的,即python会在运行时自动识别变量类型

0.2

x=1
y=2
x,y=y,x # 类比swap(x,y)

0.3

字符串用单引号双引号都可(3个单/双引号表示长字符串–>解决多换行问题)

print('Life is short,you need Python')
print("Life is short,you need Python") # 自带末尾换行\n
print('''a
a
a
a
b''')
print("hello world\n"*20) # 输出二十行相同字符串

0.4 缩进是命📢

缩进代表代码块

1.输入

a=input() a a a 赋值

a=input("请输入a:") 终端显示 请输入a: 后,可输入 a a a

  • 搭配强制类型转换:类型(变量) 这里和 cpp 的强转有区别

    a=int(input())

2.数字类型

  • 引入库 import random

    • a=random.randint(1,100) 生成从 1 到 100 的随机数
  • 引入库 import decimal

    import decimal
    a=decimal.Decimal('0.1')
    b=decimal.Decimal('0.2')
    c=decimal.Decimal('0.3')
    print(c==a+b)//输出true
    
    
  • a=1+2j ( 以浮点数的形式 )

    print(a)//输出(1+2j)
    print(a.real)//1.0 实部
    print(a.imag)//2.0 虚部
    
    
  • 地板除 - 类比 cpp 中整数除法(取整)

    print(3/2) 		# 1.5
    print(3//2) 	# 1
    
  • abs() 绝对值 o r or or

    print(abs(-0.33))# 0.33
    print(abs(1+2j)) # 2.23606797749979
    
  • x y x^y xy pow()** 两种

    x=2
    y=3
    print(x**y)	    # 8
    print(pow(x,y))	# 8
    print(pow(x,y,5)) # 2的3次方对5取余
    

3.布尔类型 bool()

  • True

    True 就是 1 1 1

  • False

    False 就是 0 0 0

4.逻辑运算 (与 cpp 逻辑运算类比)

  • and 类比 &&
  • or 类比 ||
  • not 类比 !

注: python 可以对任何类型进行真值运算,按照 短路求值 原则 ( 优先级:and > or > not

print(2 and 3) # 3
print('123' and '456') # 456
print(0 or '123') # 123
print(0 or 1 and not 2) # 0

5. if

# 2<3
if 2>3 :
    print('2>3')
elif 2==3 :
    print('2=3')
else:
    print('2<3')
    
print('2<3') if 2<3 else print('2>3') # 2<3

6.循环 ( breakcontinuecpp 用法相同 )

  • while

    a=1;
    while a<10:
        print(a)
        a+=1
    else:
        print(a) # 10,当while后面为假时,else执行一次(如果在while里break了,就不会执行这个else)
    
  • for 类比 cpp 的范围 for 循环

    先了解一下range()

    range(start, stop, step)

    • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

    • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 左闭右开

    • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

      for i in range(1,10): # 1 2 3 4 5 6 7 8 9
          print(i)
      for i in range(1,10,2):# 1 3 5 7 9
          print(i)
      
      

7.列表

list=[1,2,3,4,5,"上山打老虎"]
for i in list:
    print(i,end=' ')
print(len(list)) # 6

print(list[-3]) # 4 下标是负数代表倒数第几个元素
  • 切片🗡️
print(list[3:6])  # 4 5 上山打老虎 左闭右开

print(list[:3])  # 1, 2, 3

print(list[3:])  # 4, 5, 上山打老虎

print(list[::-2])  # 上山打老虎, 4, 2

list[len(list):]=['x','y','z'] # 在末尾添加元素
print(list) # 1, 2, 3, 4, 5, 上山打老虎, x, y, z

list[3:]=['x','y','z']
print(list) # 1, 2, 3, x, y, z
  • 增删✏️
list.remove('上山打老虎') # 删除指定元素
print(list) # 1, 2, 3, 4, 5

list.insert(2,'三') # 下标2处添加新元素'三'
print(list) # 1, 2, 三, 3, 4, 5

list.pop(2) # 弹出指定下标元素,并返回该元素
print(list) # 1, 2, 3, 4, 5
  • 常用函数
list = [6,8,7,1,2,5,3,2,8,2]

list.sort() # 快排
print(list) # 1, 2, 2, 2, 3, 5, 6, 7, 8, 8

list.reverse() # 反转
print(list) # 8, 8, 7, 6, 5, 3, 2, 2, 2, 1

nums1=list[5:] # 切片赋值
print(nums1) # 3, 2, 2, 2, 1

list[list.index(7)]=0 # 更改某个特定元素 index() 找出某元素的第一个下标
print(list) # 8, 8, 0, 6, 5, 3, 2, 2, 2, 1

print(list.count(8)) # 2
  • 常见操作
a=[1,2,3]
b=[4,5,6]
c=a+b
print(c) # 1, 2, 3, 4, 5, 6

matrix=[[1,2,3],[4,5,6],[7,8,9]]
for i in matrix:
    for j in i:
        print(j,end=' ')
    print()
# 1 2 3
# 4 5 6
# 7 8 9

print(matrix[1][1]) # 5
  • 列表推导式
list=[1,2,3,4,5]
list=[i*2 for i in list]
print(list) # 2, 4, 6, 8, 10

matrix=[[1,2,3],[4,5,6],[7,8,9]]
dia=[matrix[i][i] for i in range(len(matrix))]
print(dia) # 1, 5, 9
MATRIX=[i for row in matrix for i in row] # 嵌套循环
print(MATRIX) # 1, 2, 3, 4, 5, 6, 7, 8, 9

a='abc'
a=[i*2 for i in a]
print(a) # aa, bb, cc

even=[i for i in range(10) if i%2==0]
print(even) # 0, 2, 4, 6, 8

a=['a1','a2','a3','bc','de']
b=[i for i in a if i[0]=='a']
print(b) # a1, a2, a3

a=[1,2,3]
b=[4,5,6]
c=[x+y for x in a for y in b] # 嵌套循环 (就是把循环压到一行)
print(c) # 5, 6, 7, 6, 7, 8, 7, 8, 9
  • 易错点🚨

    • 潜拷贝 (只能拷贝最外面一层,用于一维拷贝)
      list=[1,1,1,1,1]
    nums=list # 此时不是赋值,而是引用
    nums[0]=2 # 直接修改了list
    print(list) # 2 1 1 1 1 
    # 正确做法:切片/copy()
    nums=list[:]
    # nums=list.copy()
    nums[0]=2
    print(nums) # 2, 1, 1, 1, 1
    print(list) # 1, 1, 1, 1, 1
    
    • 深拷贝
    import copy # 导入 copy 模块
    
    matrix=[[1,2,3],[4,5,6],[7,8,9]]
    x=copy.deepcopy(matrix)
    

8.元组

简单来说就是不可变(赋值)列表

a=(1,2,3)
b=(1,) # 逗号不能省略,否则会认为 b 是 int 类型

9.字符串

x="上海自来水来自海上"

x.count('海') # 2
x.count('海',0,3) # 1

x.find('海') # 1
x.rfind('海') # 7 从右向左 找不到返回-1

x=x.replace('上海','江苏')
print(x) # 江苏自来水来自海上

# f-字符串 语法糖
print(f'输出:{x}') #输出:江苏自来水来自海上

# 修改字符串中某个元素
y='一二三'
y=list(y) # 先转换成列表
y[0]='三'
y=''.join(y) # 再变成字符串
print(y) # 三二三

函数太多了 Python 字符串 | 菜鸟教程

10.字典

a={'a':'A','b':'B'}
b=dict(a='A',b='B')
print(a==b) # True

a.pop('a') # 删
print(a) # {'b': 'B'}
del b['b'] # 删
print(b) # {'a': 'A'}

c={'a':'A','b':'B','c':'C','d':'D'}
keys=c.keys()
values=c.values()
items=c.items()
#这三者改一个三个都会跟着变
print(keys) # (['a', 'b', 'c', 'd'])
print(values) # (['A', 'B', 'C', 'D'])
print(items) # ([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')])

#字典也能嵌套
d={'a':{'b':'c'},'d':{'e':'f'}}
print(d['a']) # {'b': 'c'}
print(d['d']['e']) # f

e={y:x for x,y in c.items()}
print(e) # {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

11.集合

a={'a','b','c','d'}
b={i for i in a}
c=set('abcd') # 可迭代对象

print(a==b) # True
print(c) # {'b', 'c', 'd', 'a'}  随机,因为集合是无序的
print('a' in c) # True

d=[1,1,1,2,2,3]
print(len(d)==len(set(d))) # False 判断是否有重复元素

很多函数 集合 | 菜鸟教程

12.函数

def gcd(a,b):
    return a if b==0 else gcd(b,a%b)

print(gcd(6,21)) # 3

def add(a,b,c):
	return ''.join(a,b,c)

print(add(b='1',a='2',c='3')) # 213 参数指定名字的话,可以忽视顺序 (位置参数必须在关键字参数之前)

def more(*x): # 可传入任意组参数,以元组的形式存储 (收集参数)
	print(x)
	print(x[1])
	return x[0],x[1],x[2] # 可返回多组数据

print(more('aa','bb','cc','dd'))

a,b,c=more('11','22','33')
print(a,b,c) # 11 22 33

def Dic(**dic): # 收集字典参数
    print(dic)

Dic(a='A',b='B',c='C',d='d') # 'a': 'A', 'b': 'B', 'c': 'C', 'd': 'd'

e=('aa','bb','cc')
print(more(*e)) # ('aa', 'bb', 'cc') 用*解包

x=10
def ChangeX():
    global x # 调用全局变量x
    x=1000 # 此时修改x,改的是全局变量的x

ChangeX()
print(x) # 1000
  • 简单闭包

    def power(exp):
        def exp_of(base):
            return base**exp
        return  exp_of
    
    square=power(2)
    cube=power(3)
    
    print(square(3)) # 9
    print(cube(2)) # 8
    
    def outer():
        x=0
        y=0
        def inner(x1,y1):
            nonlocal x,y
            x+=x1
            y+=y1
            print(f"现在的x={x},y={y}")
        return  inner
    
    move=outer()
    
    move(1,2) #现在的x=1,y=2
    move(-2,-5) # 现在的x=-1,y=-3
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值