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)
其中key可以是一个元组。 字典没有索引值,需要通过key值来取值,如d[key],d.get[value]
点击查看代码

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

posted @ 2024-11-26 21:24  史茗宇  阅读(28)  评论(0)    收藏  举报