Python学习
类型转换

eval()函数
eval()函数去除字符串两边引号,执行内部操作。
点击查看代码
s = '3.234+3'
x = eval(s)
age = eval(input('输入:')) # 转换为int类型
基本运算


分支结构以及循环
if
示例:
点击查看代码
if a == 111:
print('Yes!')
if n%2:
print("奇数!")
if not n%2:
print("偶数!")
if n%2:
print("奇数")
else:
print("偶数")
if 条件1 or 条件2 and 条件3 :
elif :
elif :
else :
match
仅在python3.11及以上版本中
与C语言类似:
点击查看代码
score = input("你好:")
match score:
case 'A':
print("优秀")
case 'B':
print('不错')
for
点击查看代码
for i in range(1,11): #包含1不包含11
print(i)
for :
else: # 只有在for break之后才会执行else语句
while
与for语句相似
序列相关内容


列表

列表可以存储不同类型数据
点击查看代码
lst = ['hello','world','!',12,23.4]
print(lst)
lst = list('hello,world') #每一个字母为一个元素
print(lst)
lst = list(range(-1,12,3))
print(lst)
#同样可以使用内置函数
使用enumerate(lst)可以返回序列的序号(从0开始)以及对应元素。使用示例:
点击查看代码
for index, item in enumerate(lst,start=10):
print(index,item)
#列表生成操作
lst = [item for item in range(0,10)]
lst = [item**item for item in range(0,10)]
lst =[random.randint(1, 100) for _ in range(0,11) ]
# 双重列表遍历
lst = [
[i for i in range(1,11)],
[i for i in range(11,21)],
[i for i in range(21,31)]
]
print(lst)
for row in lst:
for item in row:
print(item,end=' ')
print()
lst = [[j for j in range(0,5)]for i in range(0,5)]#多维列表生成
列表的常用操作:

元组
元组用括号包裹,相关操作与序列相同

需要注意的是元组地生成式是一个迭代器,需要使用tuple()转换为元组
字典
字典类型是一个键值对(key,value)。
列表基本创建方法:
点击查看代码
d ={10:'cat',20:'dog',30:'pig'}
print(d)
lst1 = [10,20,30]
lst2 = ['cat','dog','pig']
ziptmp = zip(lst1,lst2) #返回的是一个迭代器
d = dict(ziptmp)
print(d)
d = dict(cat = 10,dog = 30, pig = 40)
print(d)
点击查看代码
d = dict(cat = 10,dog = 30, pig = 40)
print(d['cat'])
for item in d.items():
print(item) #返回一系列元组(idex,item)
#也可以:
for idex,item in d.items():#将元组拆分开来
print(idex,'---->',item)
字典的相关操作:

字典的生成式需要指定key和value的值。
点击查看代码
import random
d = {i:random.randint(0, 10) for i in range(0,10)}
在python3.11中,两个字典d1和d2可以使用d1|d2合并
集合
集合也是用{}表示,只能存储不可变类型
字符串相关知识
首先是字符串常用操作:


异常处理
使用try except将可能出错的代码包括在里面可以捕获错误类别,else是所有代码没有出错后执行的代码,finally是最后无论如何都输出的代码。示例:
点击查看代码
try:
num1 = eval(input())
num2 = eval(input())
print(num1/num2)
except ZeroDivisionError:
print("divide zero!!")
except ValueError:
pass
except BaseException:
pass
raise
raisek=可以手动抛出一个异常,提供给程序处理。
常见异常类型


函数
函数的定义以及调用
使用def关键字实现,示例代码:
点击查看代码
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 26 20:45:45 2024
@author: smy
"""
def sum(n):
s =0;
for i in range(0,n+1):
s +=i
print('sum is %d' %s)
sum(10)
sum(100)
可变参数的传递
示例代码:
点击查看代码
def func(*params):# 可变参数
for i in params: print(i)
func(1,2,3,4)
func([1,2,3,4])
func(*[1,2,3,4])
def func2(**params):# 可变参数
print(type(params))
for idex,value in params.items():
print(idex,'---->',value)
func2(a=1,b=2,c=3,d=4)
dic = {'a':1,'b':2,'c':3,'d':4}
func2(**dic)
匿名函数 lambda

只有一句语句的函数的简化形式。
点击查看代码
def calc(a,b):
return a+b
print(calc(1,2))
s = lambda a,b: a+b # 匿名函数
print(s(1,2))
#排序也可以使用匿名函数
student_scores = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
student_scores.sort(key=lambda x:x[1],reverse=True)
print(student_scores)
常用函数

下面是常用数学函数:

常用迭代器函数:

简要示例代码:
点击查看代码
lst = [21,21,234,5,45,645,6,36,5,7,47,68,57976]
asc_list = sorted(lst) # sorted() function
print(asc_list)
asc_list = sorted(lst, reverse=True)# sorted() function
print(asc_list)
new_list = reversed(lst)
print(list(new_list))
new_list = all(lst)
print(new_list)
其他常用函数

面向对象程序设计
面向过程的编程都是功能上的封装,面向对象是行为上的封装(类和对象)。
一个类由下列这几部分组成:

点击查看代码
class Person():
pass
class Cat():
pass
class Dog():
pass
class Student():
school = '北京邮电大学'#变量
def __init__(self,name,age): #初始函数,必须要有
self.name = name
self.age = age
def study(self):
print('%s正在学习'%self.name)
def play(self):
print('%s正在玩'%self.name)
#静态方法
@staticmethod
def show():
print('我是静态方法')
#类方法
@classmethod
def show2(cls):
print('我是类方法,我是%s'%cls.school)
#创建对象
per = Person()
c = Cat()
d = Dog()
s = Student('smy',18)
#实例属性使用点
print(s.name,s.age)
s.study()
#静态方法,类方法调用
Student.show()
Student.show2()
下面是一个简易应用实例:
点击查看代码
class Student():
school = '北京邮电大学'#变量
def __init__(self,name,age): #初始函数,必须要有
self.name = name
self.age = age
def study(self):
print('%s正在学习'%self.name)
def play(self):
print('%s正在玩'%self.name)
#静态方法
@staticmethod
def show():
print('我是静态方法')
#类方法
@classmethod
def show2(cls):
print('我是类方法,我是%s'%cls.school)
s1 = Student('smy',18)
s2 = Student('smy2',19)
s3 = Student('smy3',20)
s4 = Student('smy4',21)
stu = [s1,s2,s3,s4]
for i in stu:
i.study()
封装、继承和多态
封装

继承

实例代码可以很好的展示使用方法:
点击查看代码
class Person():#默认继承的object类
def __init__(self, name, age):
self.name = name
self.age = age
def func(self):
print("My name is " + self.name)
class Student(Person):#继承自Person
def __init__(self, name, age, school):
super().__init__(name, age)#调用父类的构造函数
self.school = school
class Doctor(Person):#继承自Person
def __init__(self, name, age, hospital):
super().__init__(name, age)#调用父类的构造函数
self.hospital = hospital
stu = Student("Jack", 18, "SZU")
stu.func()
doc = Doctor("Mike", 20, "SZU")
doc.func()
同时,一个子类也可以继承多个父类
点击查看代码
class Father1():
def __init__(self,name):
self.name=name
def showA(self):
print("Name:",self.name)
class Father2():
def __init__(self,age):
self.age=age
def showB(self):
print("Age:",self.age)
class Son(Father1,Father2):
def __init__(self, name,age,gender):
Father1.__init__(self,name)
Father2.__init__(self,age)
self.gender=gender
son = Son("Ram",25,"Male")
方法重写

重写的方法必须和父类方法名称相同
例子很简单:
点击查看代码
class Father():
def __init__(self,name):
self.name=name
def show(self):
print("Name:",self.name)
class Son(Father):
def __init__(self, name,gender):
Father.__init__(self,name)
self.gender=gender
def show(self):
super().show()# calling father class method
print("Gender:",self.gender)
son = Son("Ram","Male")
son.show()
多态

object类
所有类都直接或者间接继承自object类
在对象中还有一些特殊方法;

python模块
模块的调用方法:

内置常用模块

random

time



浙公网安备 33010602011771号