zoukankan      html  css  js  c++  java
  • Python基础语法—8小时入门版

    # Author By Mikigo
    # Time 2021/9/30
    

    一、Python基础

    (一)输入输出

    1. print

    (1)print("hello world") 括号表示调用函数print,括号内的字符串用引号引起来。
    
    (2)print("hello","world","mikigo") 可接受多个参数。
    
    (3)print(name)不加引号表示调用变量。
    
    (4)print(100+200) 不加引号,表示直接运算。
    

    2. input

    (1)input() 输入,光标会等待键盘输入。
    
    (2)input("请输入内容") 括号内建议输入提示信息。
    
    (3)input输入的值都会被当成字符串,包括数字。
    

    (二)数据类型

    1. 整数 int 没有小数点。
    
    2. 浮点数 float :有小数点。
    
    3. 布尔值 bool :True 或 False 。注意首字母大写。
    
    4. 空值 None :空值,但和0有区别。
    
    5. type() 查看数据类型(isinstance)。
    

    (三)变量、表达式

    1. 变量赋值

    (1)name="mikigo" 表示将mikigo这个字符串赋值给变量name,注意要加引号,不加引号会被认为是一个变量

    (2)a,b,c=7,8,9 多元赋值,表示将值一一对应的复制到等号前面的变量,但位置的个数一定要一致。

    (3)数据类型的转换

        - str(age) 表示将变量age转换成字符型
    
        - int(1.5)表示将float转换成int(取整为1)
    
        - float(6) 表示将int转换成float
    

    2. 表达式

    (1)+ - * /
    
    (2)% 表示取余数
    
    (3)// 表示取商数
    
    (4)** 表示次幂 ,比如10**5 表示10的5次幂
    

    (四)字符串string

    1.格式化字符串

    (1)%d(data) 表示数字站位
    
    (2)%s(string) 表示对字符串站位
    
    (3)%r 任何类型都可以接收,但字符串最终打印出来有引号。
    
    (4)格式:print("%s = %d" % (age,19))
    
    (5)"mikigo{}".format(("good",))
    
    (6)f"mikigo{good}"
    

    2.字符串操作

    (1)字符串相加 比如:"mi"+ "ki" >miki

    (2)* 比如:2*"mi"> mimi

    (3)[ ] 表示通过索引截取字符,第1个字符索引是0

    (4)[ : ] 表示截取字符串 比如:[2:4]表示从索引2开始,截取到索引3(不包含4)

    (5)in 表示in后面字符串中是否包含in前面的字符,比如 "i" in "miki" >>True

    (6)not in 用法与in类似但是取反

    (7)r/R 表示所有字符都按照字面意思来使用。比如:print(r"hello mikigo") 换行字符 不起作用,直接输入引号内的字符串。

    3.字符串的常见函数方法

    (1)len(str) 返回字符串的长度

    (2)count计数

    - "mikigo".count("mi") 直接跟字符或字符串,则返回字符出现的次数
    
    - "mikigo".count("i",2,10) 表示在索引2到10之间(不包含10),返回字符出现的次数
    

    (3)startswith或endswith 以什么开始或以什么结束

    - "mikigo".startswith("m") 表示判断是否以字符m开始,>true
    
    - "mikigo".endswith("m") 表示判断是否以字符m结束,>False
    

    (4)find 查找字符或字符串,返回索引位置,如果找不到会返回-1

    - "mikigo".find("i") 表示找出字符i在字符串中第一次出现的索引位置,>1
    
    - "mikigo".rfind("i") 表示从右开始找出字符i在字符串中第一次出现的索引位置,>3
    

    (5)index 用法同find,区别在于,找不到时会报错

    (6)strip 删除或截掉

    - " mikigo ".strip() 删除前后的空格
    
    - " mikigo ".rstrip("o") 删除右边的字符o
    
    - " mikigo ".lstrip("m") 删除左边的字符m
    

    (7)replace 替换

    - "mikigo".replace("i","oo") 表示将字符串中的所有字符i替换称字符串oo
    
    - "mikigo".replace("i","oo",1) 表示将字符串中的字符i替换为oo,只替换一次
    

    (8)join 加入:"miki".join("ab") >> "amikib" 每个字符拆开,加入某个字符或字符串。

    (9)split 以分隔符截取

    - "mikigo".split("i") 表示以字符i作为分隔符,将字符串进行分隔。
    
    - "mikigo".split("i",1) 表示以字符i作为分隔符,以第1个i作为字符串的分隔符 进行分隔。
    
    - "mikigo
    hello".splitlines() 或  "mikigo
    hello".splitlines(keepends=False) 表示按行("
    ","
    ","
    ")分隔(不包含换行符)。
    
    - "mikigo
    hello".splitlines(keepends=True) 表示以
    换行,且包含换行符。
    
    - 扩展: 多种方式分割字符串  re.split('a|b', 'fdasfweqgasfewaq')
    

    (五)列表(list)

    1.list基本操作

    (1)列表(list)用[ ]表示,是有序,可变,可指定位置取值的。

    (2)列表里面的元素,可以是任意数据类型,包括列表、None、bool

    (3)同一列表中可存放不同的数据类型

    2.切片

    (1)lst[index ]取单个元素,直接跟索引。比如lst[2],表示取索引2的元素

    (2)lst[0:2] 取一个区间。表示取索引0到1的元素

    (3)lst[0:5:2] 表示按步长2去取索引0到4之间的元素。

    (4)lst[-1] 表示取最后一个

    (5)lst[::-1] 表示将一个列表反向排序

    3.list常见的函数和方法

    (1)函数

    1)len(list) 列表的长度,即列表中元素的个数

    2)max(list) 相同的数据类型取最大值。

    (2)方法

      1)list.append(obj) 在列表末尾添加新的对象。list.append("ab"),表示在末尾加入字符串"ab",但append一次只能增加一个元素。
    
      2)list.count(obj) 统计某个元素在列表中出现的次数。
    
      3)list.extend(seq) 在末尾追加另一个序列。追加的是一个列表,不能是单个元素。比如list.extend([123])
    
      4)list.index(obj) 找出某个元素的第一个索引位置。
    
      5)list.insert(index,obj) 将对象插入到列表(位置,元素)
    
      6)list.pop(index) 删除某个位置的元素(默认删除最后一个)。比如list.pop(1)表示删除索引1的元素,且返回元素的值。
    
      7)list.remove(obj) 删除列表中的某个元素的第一个,修改列表本身。
    
      8)list.reverse() 反向排序
    
      9)list.sort() 重新排序
    
      10)list.clear() 清空列表
    
      11)list.copy() 复制列表
    

    (六)元组(tuple)

    1.定义:以小括号括起来的有序列表,但不能修改。

    2.eg. a=(2,3,4,5)

    (七)字典(dict)

    1.定义:字典是用大括号括起来,由键值对(key:value)组成的,且是无序的。

    2.key是唯一的,一般赋值为string,value可以是任意数据类型

    3.常用操作

    (1)dt["key"] 根据键读取值
    
    (2)dt["old_key"]="new_value" 根据键修改值
    
    (3)dt["new_key"]="new_value" 新增键值对
    
    (4)len(dt) 返回元素的量(键值对)
    

    4.dict常用方法

    (1)key in dict 判断键是否在字典中
    
    (2)dict.items() 返回列表,列表由元组组成,每个元组由一个键值对将键和值拆分为两个字符串组成。
    
    (3)dict.keys() 将所有的键组成一个列表。
    
    (4)dict.values() 将所有的值组成一个列表。
    
    (5)dict1.update(dict2) 将字典2中的键值对添加到字典1中
    
    (6)dict.get(key,default=None) 返回指定键的值,如果值不存在,返回default值。比如:dict.get("name","peter") 如果字典中有name这个键,则直接返回其对应的值,如果没有这个键,则返回"peter"
    
    (7)dict.setdefault(key,default=None) 和get一样会返回指定键的值,但若键不在字典中,会添加成为新的键值对。比如:dict.setdefault("name","peter"),如果字典中有name这个键,则返回其对应的值,如果没有,则会将定义的值,添加到字典中。
    
    (8)dict.pop(key,default=None) 删除键对应的值,key不存在返回default值。
    
    (9)dict.copy() 浅复制
    
    (10)dict.clear() 清除所有元素
    

    二、过程控制

    (一)条件语句

    if 条件判断:(缩进和冒号)
    	print("字符串")
    else:
    	print("字符串")
    

    2.else 可以不要,语法上没有问题

    3.运算符

    1)< , <= , > , >= , == , !=

    2)and , or , not , in , not in, is

    (二)循环语句

    1.while

    while 判断条件:
      	语句
    else :
     	 语句
    
     ②break 终止循环语句
    
     ③continue 结束本次循环,继续进行下一轮循环。
    

    2.for语句(遍历序列的元素)

    for i in [1,2,3,4]:
    	print(i)
    
    • in 后面可以跟元组、列表、字符串,但跟字典时只能取到字典中的键(key)。

    • range(函数)

      • range(3) 表示从索引0,取到索引2(开区间)
      • range(1,4) 表示从索引1,取到索引3
      • range(1,10,2) 表示从索引1,取到索引10,步长为2

    三、函数

    (一)定义

    函数是可重复使用的,具有一定功能的代码段。

    1)def 函数名(参数1,参数2,····)

    def add(a,b):
     c = a + b
     print(c)
    

    (二)返回值

    调用函数后,将执行结果返回给调用者。

    def add(a,b):
       c = a + b
       return c
    

    >>x=add(1,2) #返回一个c的值赋给x,如果返回值有多个,而变量只有1个,则会生成一个元组。也可以用多个变量对应多个返回值,即多元赋值。

    (三)参数

    1、位置参数(形参)

    def func(name,age):
        print(name,age)
    

    位置参数时根据位置顺序传入函数,调用函数时必须与定义时的参数数量一致。

    2、默认参数

    • def func(name,age=18): print("a未被定义") # 参数在定义的时候就赋值的

    • 默认参数在调用的时候如果不传入,则会使用默认参数,如果给传递了参数,则值会被覆盖。

    3、可变参数

    def func(*args):
       sum = 0
       for n in args:
       	 sum = sum +n
       	 return sum
    

    >>func(1,2,3,···) #传入的参数数量可变,会自动组装称一个元组,如果传入0个参数,结果时返回一个空元组。

    • 如果传入的参数是一个元组,调用的时候在函数括号内加*号(参数解构)

      tp=(1,2,3,4)

      resule = add(*tp)

    4、关键字参数(键和值)

    def func(**kwargs):
        print(kwargs)
    

    >>func(name="peter") # 结果是打印一个字典{"name":"peter"}

    • 如果传入的参数是一个字典,调用的时候在函数括号内加**

      >>dct = {"eat1":"酸辣粉","eat2":"螺狮粉"}

      >>func(**dct)

    5、组合参数

    顺序为位置参数,可变参数,默认参数,关键字参数

    def func(name,age,*args,gender=’男’,**kwargs)
    

    四、类(class)

    (一)类的实例

    1.类的实例是对象,一个实例包含属性(有什么)和方法(能做什么)。

    2.类的声明:class 类名(): #类名单词首字母大写,如果是多个单词,单词与单词之间不空格,直接挨着写,但每个单词首字母需要大写。

    3.定义类的属性和方法

    class Person():
    
    	def __init__ (self,name,age):  # __init__是固定格式,`self`也是固定格式。
    		self.name = name
    		self.age = age  #定义了两个属性。
    	def run(self,food):
    		print("%s都%d岁了,天天吃%s" % (self.name,self.age,food))  #定义了一个方法。(外部变量不加self)
    

    (2)方法调方法或方法调属性等,内部调用都要加self。 ②

    (3)调用外部变量时,不加self。

    (4)调用

    ① 实例化:x = Person("peter",18)
    
    ② print(x.name) 调用类的属性
    
    ③ print(x.run("肉"))
    

    (二)继承

    1.子类继承父类的属性和方法

    class Student(Person):  #继承时括号内直接写父类的类名
    		pass #完全继承父类的属性和方法。
    
    class Student(Person):
    
    	def __init__(self,name,age,cno)
    		Person.__init__(self,name,age)  
    		self.cno = cno #在父类的基础上新增属性,需要先将父类指定进来。否则新增属性会将父类的属性覆盖。
    	def run(self):
    		r = Person.run(self)
    		return r  # 在父类的基础上新增方法,需要先指定父类的方法。
    

    方法重新定义后,调用的时候,默认先去调用子类的方法,然后再去调用父类的方法。

    (三)访问限制

    1.访问限制可以使,类内部的属性和方法,不能外部随便访问。用法是在属性或方法前面加双下划线,表示私有属性。

    2.访问限制,不能被外部随便访问,但可以被内部调用,私有属性可以用方法调用,私有方法,可以定义其他方法调用。

    class Person():
    	def  __init__(self,name):
    		self.__name = name
    	def  __eat(self,food):
    		return "%s爱上吃%s"% (self.__name,food)
    

    (四)编码规范

    1.缩进,4个空格的缩进,空格和tab不能混用(tab仅在编辑器中可使用)。

    2.类名的单词以大写字母开头。

    3.函数和类的属性命名以小写,用下划线连接

    4.所有的命名都应采用有意义的英文单词,多单词由下划线连接。

    五、模块

    (一)引入模块

    (1)import 后面直接跟模块名或类或函数. eg1. import time

    (2)from 路径 import 类或函数 #路径最好用绝对路径 eg2. from model.A import add

    (二)安装三方库

    (1)sudo pip3 install pymysql(三方库名) #在命令行直接输入即可(命令行安装时注意)。

    (2)在pycharm里面,点击file,选择setting,选择Project,选择Project Interpreter,在右上角点+号,输入库名即可安装。

    (3)如果是需要下载的三方库,下载后查看文件包里面的readme文件,根据描述进行安装。

    六、异常处理

    (一)try语句

    (1)try ... except...except 表示当程序运行错误后,被except捕捉到,返回一个可定义的信息,且不会影响后续语句的执行。每个except后面跟不同的返回信息。

    try:
        print(a)
        10/0
    except NameError:
        print("a未被定义")
    except ....
    

    (2)try ...except...finally 同(1)一样,但finally后的语句,无论是否发生异常,都会执行。

    (3)try...except...else 同(1)一样,但else后的语句,是在没有发生异常的情况才会执行。

    (二)抛出异常

    ①>> raise NameError("这是一个名称错误")

    (三)常见的异常分类

    ① AssertionError assert(断言)语句失败。

    ② AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有x这个属性。

    ③ IOError 输入/输出异常,基本上是无法打开文件。

    ④ ImportError 无法引入模块或者包,基本上是路径问题。

    ⑤ IndentationError 语法错误,代码没有正确对齐。

    ⑥ IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]。

    ⑦ KeyError 试图访问字典里不存在的键。

    ⑧ Kerboardinterrupt Ctrl+C被按下,主要针对无限循环。

    ⑨ NameError 使用一个还未被赋值予对象的变量。

    ⑩ SyntaxError 代码非法,代码不能解释。

    ⑪ TypeError 传入对象类型与要求的不符。

    ⑫ UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另一个同名的全局变量,导致你以为正在访问它。

    ⑬ ValueError 传入一个调用者不期望的值,即使值的类型是正确的。

    ⑭ FileNotFoundError 试图打开一个不存在的文件或目录。

    七、文件读写

    (一)以读的形式打开,并能写(r+)

    1) >> f = open("test.txt","r+")

    >> f.write("xxx")

    >> f.flush()

    >> f.close()

    2)光标会放在文件开头,输入的输入会覆盖开头

    (二)以写的形式打开,并能读(w+)

    1) >> f = open("test.txt","w+")

    >> data = f.read()

    >> print(date)

    2)若文件已存在会将其覆盖,若文件不存在,会新建文件。

    (三)追加模式(a+)

    1) >> f = open("test.txt","a+")

    2)光标在文件的末尾,写入会追加到末尾,若文件不存在,会新建文件。

    with open("test.txt","r+",encoding="utf-8") as f:
    	f.write("我是中文")
    	f.flush()
    
    没伞的孩子,就要学会在雨中奔跑!
  • 相关阅读:
    让你成功安装vscode中go的相关插件
    初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录
    java Concurrent包学习笔记(一):ExecutorService
    mysql主从复制(收藏)
    java Concurrent包学习笔记(三):ReentrantLock
    myBatis中if test 字符串注意事项
    mybatis标签
    安装docker跨主机网络flannel
    正则:数字字母下划线组合,长度6-10;至少包含一个大写字母、一个小写字母、一个数字
    shell [] [[]]的区别(转)
  • 原文地址:https://www.cnblogs.com/mikigo/p/15355046.html
Copyright © 2011-2022 走看看