Python上手基础

目录

一、列表 list

1、访问特定元素

2、修改元素

3、添加元素

4、给一个空列表添加元素

5、指定处插入元素,其它元素依次向右移动

6、pop弹出指定元素

(1)弹出栈顶元素

(2)弹出指定处元素

7、删除指定处元素

8、将列表元素颠倒

9、列表长度

10、求列表最大、最小、聚合值

11、列表排序

(1)永久更改列表数据升序

(2)永久更改列表数据降序

(3)暂时更改表顺序升序

12、for 和 list 组合

13、range 和 list 组合

(1)使用range 给一个空列表赋值

(2)range 步长使用

(3)列表解析

(4)切片

(5)指定切片范围遍历

(6)切片赋值列表

二、元组  tuple

1、定义

2、形式

3、元组注意点

三、字典 dict

1、字典一般用法(键值对)

2、添加键值对

3、删除键值对

4、遍历字典返回k v键值对值,使用items()

5、返回字典中所有 key,使用    keys()

6、查询字典内key值,使用 not in  和 in 与if搭配

7、查询字典key排序结果

8、查询字典中values值使用values()

9、查询字典中values不重复的值,使用set集合

10、将字典存储在列表打印出

11、按照格式打印字典小例子

四、if 和 while

1、if

(1)基本格式

(2)多个条件

(3)判断空列表

2、while

(1)基本格式

(2)简单用户输入的循环小例子

(3)利用字典的循环输入小例子

五、函数块 def

1、基本形式

2、传参函数

3、关键字传参

六、文件操作 file

1、打开文件

2、写文件内容

3、一个例子 查看某一目录下的目录及文件

七、对象

1、类的实例化

2、方法

3、继承

(1)单继承例子

(2)多继承例子

4、方法重写

5、类的专有方法

6、命名空间

(1)内置名称

(2)全局名称

(3)局部名称

(4)查找顺序

八、设计模式

1、单例模式

2、补充:初始化动作只执行一次

九、错误和异常

1、对错误进行处理

2、预判错误进行处理

3、处理未知错误

4、异常捕获完整语法

5、利用异常的传递性,在主程序捕获异常

6、一个用户密码例子,主动抛出异常

十、操作mysql数据库

1、创建数据库

2、创建表

3、新增数据

4、查询


一、列表 list

1、访问特定元素

# 访问特定元素
content = [1,2,'ac','ok']
print(content)
print(content[2].title())
print(content[-1])

2、修改元素

# 修改元素
content = [1,2,'ac','ok']
content[2] = "mysql"
print(content)

3、添加元素

 # 最后添加元素
content = [1,2,'ac','ok']
content.append("2222")
print(content)

4、给一个空列表添加元素

#为一个空列表 添加元素
mylist = []
mylist.append(1)
mylist.append(2)
print(mylist)

5、指定处插入元素,其它元素依次向右移动

#指定处插入元素,其它元素依次向后
content = [1,2,'ac','ok']
content.insert(2,"index")
print(content)

6、pop弹出指定元素

(1)弹出栈顶元素

#获取栈顶元素
list1 = [0,1,2,3,4]

list2 = list1.pop()
print(list1)
print(list2)

(2)弹出指定处元素

#获取指定索引处元素
list1 = [0,1,2,3,4]
list2 = list1.pop(2)
print(list1)
print(list2)

7、删除指定处元素

#删除指定元素
list1 = [0,1,2,3,4]
list1.remove(3)
print(list1)

8、将列表元素颠倒

#将列表颠倒
list = [2,4,5,1]
list.reverse()
print(list)

9、列表长度

#列表长度
list = [2,4,5,1]
print(len(list))

10、求列表最大、最小、聚合值

#求列表最大、最小、聚合值
list = [1,4,7]
print(max(list))
print(min(list))
print(sum(list))

11、列表排序

(1)永久更改列表数据升序

# 按照升序排序 ,更改表数据,回不来
list = [2,4,5,1]
list.sort()
print(list)

(2)永久更改列表数据降序

#倒序  true和false  第一个字母必须大写
list1 =[2,3,9,5]
list1.sort(reverse=True)
print(list1)

(3)暂时更改表顺序升序

# 按照升序排序 ,更改表数据,临时改变
list = [2,4,5,1]
sorted(list)
print(list)
print(sorted(list))

12、for 和 list 组合

list = [1,2,3,4,5]
# python 中使用缩进表示结构与信息 ,同一个语句块使用相同的缩进
for i in list:
    print(i)
print("++++++")
print(i)

13、range 和 list 组合

(1)使用range 给一个空列表赋值

第一种写法

#所谓列表,就是一个序列,其中的元素有序、可变、不限类型
mylist = []
for num in range(1,5):
    mylist.append(num)
print(mylist)

 第二种写法

#使用 list和 range函数 生成数值列表
nums = list(range(1,5))
print(nums)

(2)range 步长使用

#第一个参数表示起始值   第二个表示终止值  第三个表示步长
nums2 =list(range(1,6,2))
print(nums2)

例子

#打印一个列表的平方
numbers =[]
for nums3 in range(1,5):
    numbers.append(nums3**2)
print(numbers)

(3)列表解析

#列表解析
list =[ i for i in range(1,5)]
list1 = [ i**2 for i in range(1,5)]
print(list)
print(list1)

(4)切片

#切片
list = [i for i in range(1,5)]
print(list)
print(list[1:3])
print(list[1:])
print(list[:1])
print(list[-2:])

(5)指定切片范围遍历

#遍历切片
list = [i for i in range(0,5)]
print(list)
for nums in list[1:3]:
    print(nums)

(6)切片赋值列表

#快速复制列表或其中个别元素
list = [i for i in range(0,5)]
list1 = list[1:]
list2 = list

print(list1)
print(list2)

二、元组  tuple

1、定义

#元组是不可修改的列表

2、形式

#元组

mytuple = (1,2,3)
print(mytuple)

3、元组注意点

#一个元素的元组,要加 逗号 来标识元组
mytuple2 =(1,)
print(mytuple2)

#通过分号区分在一行的语句
mylist = [1,2]; mylist[1] =10
print(mylist)




结果:
D:\pythontest\python\venv\Scripts\python.exe D:/pythontest/python/com/peizk/demo_tuple.py
(1,)
[1, 10]

三、字典 dict

1、字典一般用法(键值对)

#  字典
mydict = {"a":"1","b":"2","c":[1,2,3]}
print(mydict["a"])
print(mydict["c"][1])

2、添加键值对

#添加键值对

mydict ={}

mydict["a"] = 1
mydict["b"] = 1
mydict["c"] = 1
print(mydict)

3、删除键值对

mydict ={}
mydict["a"] = 1
mydict["b"] = 1
mydict["c"] = 1
print(mydict)
#删除键值对
del mydict["a"]
print(mydict)

4、遍历字典返回k v键值对值,使用items()

# 遍历字典返回k v键值对值,使用items
mydict ={"zhangsan":"a"
         ,"lisi":"b"
         ,"wangwu":"c"
         ,"zhaoliu":"d"
         ,"duqi":"d"}
print(mydict)

for k,v in mydict.items():
    print(k+"_"+v)

5、返回字典中所有 key,使用    keys()

mydict ={"zhangsan":"a"
         ,"lisi":"b"
         ,"wangwu":"c"
         ,"zhaoliu":"d"
         ,"duqi":"d"}
# keys 返回字典中所有的key
for k in mydict.keys():
    print(k+"最喜欢"+mydict[k])

#默认什么不写 就是key
for name in mydict:
    print(name)

6、查询字典内key值,使用 not in  和 in 与if搭配

mydict ={"zhangsan":"a"
         ,"lisi":"b"
         ,"wangwu":"c"
         ,"zhaoliu":"d"
         ,"duqi":"d"}
#查询某个名字是否在字典中
if "zhangsan" not in mydict.keys():
    print("zhansgan is not in mydict")

if "lisi" in mydict.keys():
    print("lisi in mydict")

7、查询字典key排序结果

mydict ={"zhangsan":"a"
         ,"lisi":"b"
         ,"wangwu":"c"
         ,"zhaoliu":"d"
         ,"duqi":"d"}
#按顺序查名字
#使用sorted函数首先对key集合进行排序
for name in sorted(mydict.keys()):
    print(name.upper())

8、查询字典中values值使用values()

mydict ={"zhangsan":"a"
         ,"lisi":"b"
         ,"wangwu":"c"
         ,"zhaoliu":"d"
         ,"duqi":"d"}
#只查 values
for values in mydict.values():
    print(values)

9、查询字典中values不重复的值,使用set集合

mydict ={"zhangsan":"a"
         ,"lisi":"b"
         ,"wangwu":"c"
         ,"zhaoliu":"d"
         ,"duqi":"d"}
#使用set进行去重,set集合和列表的区别在于set集合不可以重复
for values in set(mydict.values()):
    print(values)

10、将字典存储在列表打印出

user1 ={"name":"zhansgan"
         ,"age":17
         ,"sex":"m"
         }
user2 ={"name":"lisi"
         ,"age":18
         ,"sex":"wm"
         }
user3 ={"name":"wangwu"
         ,"age":17
         ,"sex":"m"
         }

list = [user1,user2,user3]

for i in list:
    for k,v in i.items():
        #如果k =age ,就说明 v是 int类型 需要转换为 str类型 再打印
        if k == "age":
            v = str(v)
        #end = 表示 将默认的\n 换为 |||
        print(k+"______"+v,end="|||")
    #用于换行
    print()

11、按照格式打印字典小例子

like_lesson = {
    "zhangsan":["shuxue","yuwen"]
    ,"lisi":["shuxue"]
    ,"wangwu":["shuxue","yingyu"]
}

for name,lesson in like_lesson.items():
    print(name+"like lesson :",end ="")
    for less in lesson:
        print(less+";",end = "")
    print()

四、if 和 while

1、if

(1)基本格式

num1 =3
if num1>3:
    print("大于3")
else:
    print("小于3")

(2)多个条件

num2 =3
if num2 =="1":
    print("周一")
elif num2 =="2":
    print("周二")
else:
    print("周日")

(3)判断空列表

list = []
if list:
    for val in list:
        print(val)
else:
    print("空")

2、while

(1)基本格式

# 基本
value = 5
while value>0:
    print(value)
    value -= 1

(2)简单用户输入的循环小例子

#一个简单的用户循环判断
while True:
    mystr = input("请输入y|n")
    if mystr =="y":
        print("正在继续")
        continue
    elif mystr == "n":
        break
    print("正在继续")

(3)利用字典的循环输入小例子

#小例子2
responses ={}
goon = True
while goon:
    name = input("your name:")
    respons = input("xingqu")
    responses[name] = respons

    answer = input("y/n")
    goon =answer == 'y'
for k,v in responses.items():
    print(k+"---"+v)

五、函数块 def

1、基本形式

""" def 用来定义函数 """

def hello():
    print("Helo peizk")
hello()

2、传参函数

def hello2(name):
    print("hello "+str(name))
hello2("zhansgan")
hello2(123)

3、关键字传参

"""关键字传参"""

def pet_describe(pet_name="填写宠物name",pet_type="填写宠物type"):
    print("这是一个叫"+pet_name+"的"+pet_type)

pet_describe(pet_name="aaa",pet_type="bbb")
#默认值
pet_describe()

六、文件操作 file

1、打开文件

"""第一个r 代表转义文件路径 第二个r 代表只读模式  第三个 代表字符集"""

file = open(r"C:\Users\86131\Desktop\账号密码.txt","r",encoding="UTF-8")


for line in file.readlines():
    print(line,end="")

"""关闭文件流"""
file.close()

2、写文件内容

"""文件以写模式打开,以utf-8编码进行处理"""

file  = open (r"C:\Users\86131\Desktop\test.py","w",encoding="UTF-8")
for i in range(10):
    """使用write方法,向打开的文件写内容"""
    file.write(str(i))
file.close()

3、一个例子 查看某一目录下的目录及文件

import os
def print_path(mypath):
    """获取目录下的所有文件或文件夹名称"""
    list = os.listdir(mypath)
    for list in list:
        file_path = mypath + "\\" + list
        if os.path.isdir(file_path):
            print(file_path + "is 目录")
            """递归获取"""
            print_path(file_path)
        else:
            print(file_path + "is 文件")

mypath = r"D:\javatest"
"""判断是否是一个文件"""
print(os.path.isdir(mypath))
print("is 目录")
"""获取目录下的所有文件或文件夹名称"""
print_path(mypath)

七、对象

1、类的实例化

class myclass:
    pass

#类的实例化
myclass1 =myclass()

#打印对象的内存地址,id返回具体数值
print(myclass1)
print(id(myclass1))

2、方法

class User:
    name ="zhangsan"
    age = 26

    """默认调用"""
    def __init__(self):
        """不加self  就是局部变量"""
        self.name ="lisi"
        self.age = 29
        
    """可使用类时直接指定"""
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def method(self):
        return "hello "

user =User("wangwu",18)
print(user.name+"----"+str(user.age))
print(user.method())


"""  类方法需要加 cls    静态方法不用   都可以被直接调用"""

class User:
    @classmethod
    def say_hello(cls):
        print("类方法")
        print(cls.__class__)

    @staticmethod
    def say_my_hello():
        print("静态方法")

user = User()
user.say_hello()
user.say_my_hello()
"""在类的内部定义方法  必须包含参数self 代表类的实例"""
class User:
    """self 代表对象本身  ,任何都可以  一般习惯用self"""
    def say_hello(self):
        print(self)
        print(self.__class__)

user = User()
print(user.say_hello())

# 这种写法不可以
# print(User.say_hello())

3、继承

(1)单继承例子

class Person:
    name = ""
    age =0
    #有两个下划线,私有属性,外部无法访问,只能在类内部访问(通过类内部方法访问)
    __weight = 0

    #初始化
    def __init__(self,name,age,weight):
        self.name =name
        self.age = age
        self.__weight =weight
    def say_hello(self):
        print(self.name+"---"+str(self.age)+"------"+str(self.__weight),end="")

# Progra 类继承 Person 类
class Progra(Person):
    language = ""
    def __init__(self,name,age,weight,language):
        self.language =language
        # self.name = name
        # self.age =age
        #调用父类的构造器
        Person.__init__(self,name,age,weight)

    #重写父类方法
    def say_hello(self):
        Person.say_hello(self)
        print("----"+self.language)

progra = Progra("zhangsan","25","175","java")
progra.say_hello()

(2)多继承例子

"""若父类中有相同的方法名,并且在子类中使用时未指定,则从左到右找第一个"""
class A:
    def code(self):
        print("可以写代码")
    def cook(self):
        print("可以写做饭代码")

class B:
    def play(self):
        print("我会打游戏")

    def cook(self):
        print("我会做饭")

class C(A,B):
    pass

c = C()
c.play()
c.code()
c.cook()

4、方法重写

class Fu:
    name = ""
    age =""
    def __init__(self):
        self.name ="张三"
        self.age =18
    def say_hello(self):
        print(self.name+"----"+str(self.age))

class Zi(Fu):
    def __init__(self):
        """相当于重写传空值"""
         pass
    def say_hello(self):
        print("aaaaaaaa")
        """重写方法"""
        super(Zi,self).say_hello()

zi = Zi()
zi.say_hello()

5、类的专有方法

class User:
    """new 创建对象,如果该方法返回为None,则init方法不会被调用"""
    def __new__(cls, *args, **kwargs):
        return super().__new__(cls)
        # return None

    """构造方法:对对象属性值进行初始化"""
    def __init__(self):
        self.name ="张三"
        self.age = 18

    def say_hello(self):
        print(self.name+str(self.age))

    """在销毁对象是被调用"""
    def __del__(self):
        print("析构方法被调用了")

user =User()
user.say_hello()

6、命名空间

(1)内置名称

Python 语言内置的名称,比如函数abs,char和异常名称BaseException,Exception等

(2)全局名称

模块中定义的名称,记录了,模块的变量,包括函数,类等

(3)局部名称

函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量,(类中定义的也是)

(4)查找顺序

局部  -->  全局 --> 内置

如果都找不到,就会引发一个  NameError异常

八、设计模式

1、单例模式

单例模式设计如下

"""单例模式"""

class  Play():
    #记录第一个被创建对象的引用
    instance = None
    def __new__(cls, *args, **kwargs):
        #判断类属性是否为空
        if cls.instance is None:
            #调用父类的方法,为第一个对象分配空间
            cls.instance = super().__new__(cls)
        #返回类属性保存的对象引用
        return cls.instance

play1 =Play()
play2 =Play()

print(play1)
print(play2)
print(id(play1))
print(id(play2))

2、补充:初始化动作只执行一次

"""单例模式"""

class  Play():
    #记录第一个被创建对象的引用
    instance = None
    #记录是否执行过初始化动作
    init_flag = False
    def __new__(cls, *args, **kwargs):
        #判断类属性是否为空
        if cls.instance is None:
            #调用父类的方法,为第一个对象分配空间
            cls.instance = super().__new__(cls)
        #返回类属性保存的对象引用
        return cls.instance
    def __init__(self):
        #1判断是否执行过初始化
        if self.init_flag :
            return
        #2没有则执行初始化,并更改flag值
        print("初始化aaa")
        self.init_flag = True

play1 =Play()
play2 =Play()

print(play1)
print(play2)
print(id(play1))
print(id(play2))

九、错误和异常

1、对错误进行处理

try:
    #不能确定执行的错误代码
    numbers = int(input("input"))
except:
    #对于错误的处理代码
    print("出错啦")

print("--"*50)

2、预判错误进行处理

try:
    #不能确定执行的错误代码
    numbers = int(input("input"))
    num = 10/numbers
except ValueError:
    #对于错误的处理代码
    print("请输入数字")
except ZeroDivisionError:
    print("除数不能为0")

3、处理未知错误

try:
    #不能确定执行的错误代码
    numbers = int(input("input"))
    num = 10/numbers

except Exception as result:
    print("发生错误,为 %s" %result)

4、异常捕获完整语法

try:
    #不能确定执行的错误代码
    numbers = int(input("input"))
    num = 10/numbers

except ZeroDivisionError:
    print("除数不能为0")

except Exception as result:
    print("发生错误,为 %s" %result)

else:
    print("try 代码未出错才会执行")

finally:
    print("一定会执行的代码")

5、利用异常的传递性,在主程序捕获异常

def demo1():
    numbers = int(input("input"))
    num = 10/numbers

def demo2():
    demo1()

#利用异常的传递性,在主程序捕获异常
try:
    demo2()
except Exception as result:
    print(result)

6、一个用户密码例子,主动抛出异常

"""
需求:定义一个 input_passwd 函数,提示用户输入密码
    如果用户输入的密码长度小于 8 就抛出异常
    如果用户输入的密码长度 >= 8 就返回输入的密码
知识点:
    1、可以使用 Exception 创建对象
    2、可以使用 raise 抛出异常对象
"""

def input_passwd():
    #1提示用户输入密码
    passwd = input("请输入密码:")

    #2判断密码长度,若 >= 8 ,返回密码
    if len(passwd) >= 8:
        return passwd

    #3若密码长度 < 8 ,抛出异常
    print("主动抛出异常")

    #>1创建异常对象
    ex = Exception("密码长度不够")
    #>2主动抛出异常
    raise ex

#主程序 捕获异常
try:
    passwd=input_passwd()
    print(passwd)
except Exception as result:
    print(result)

十、操作mysql数据库

1、创建数据库

#导入包
from pymysql import *
#建立到数据库的连接
conn =connect(host="localhost",user="root",passwd="123456")
#获取游标
mycuor = conn.cursor()

#执行语句
rownum = mycuor.execute("create database pytest")

print(rownum)

#关闭游标
mycuor.close()
#关闭连接
conn.close()

2、创建表

#导入包
from pymysql import *
#建立到数据库的连接
conn =connect(host="localhost",user="root",passwd="123456",database="pytest")
#获取游标
mycuor = conn.cursor()

#执行语句 双引号只能写一行,三引号可以多行
rownum = mycuor.execute("""
CREATE TABLE `ctrip_hotel_order` (
  `orderid` int DEFAULT NULL,
  `hotel_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
""")

print(rownum)

#关闭游标
mycuor.close()
#关闭连接
conn.close()

3、新增数据

#导入包
from pymysql import *
#建立到数据库的连接
conn =connect(host="localhost",user="root",passwd="123456",database="pytest")
#获取游标
mycuor = conn.cursor()

#开启事务
conn.begin()
try:
    #执行语句 双引号只能写一行,三引号可以多行,注意多行的插入格式!!!
    rownum = mycuor.execute("""
    insert into ctrip_hotel_order values(1,1),(100,100)
    """)

    #打印受影响行数
    print(rownum)
    #提交事务
    conn.commit()

#若出现异常撤销
except Exception as result:
    print("出错了 %s" %result)
    conn.rollback()

finally:
    #关闭游标
    mycuor.close()
    #关闭连接
    conn.close()

4、查询

#导入包
from pymysql import *
#建立到数据库的连接
conn =connect(host="localhost",user="root",passwd="123456",database="pytest")
#获取游标
mycuor = conn.cursor()

try:
    #执行语句 双引号只能写一行,三引号可以多行
    rownum = mycuor.execute("""
    select * from  ctrip_hotel_order where orderid =%s and hotel_id =%s
    """,(2,2))
    """传入值必须是元组"""

    #打印受影响行数
    print(rownum)

    #输出所有结果 用循环
    result = mycuor.fetchall()
    for result in result:
        print(result)
        #输出特定字段用index
        print(result[1])
#若出现异常撤销
except Exception as result:
    print("出错了 %s" %result)


finally:
    #关闭游标
    mycuor.close()
    #关闭连接
    conn.close()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值