#第3篇分享:python基础语法-磨刀不误砍柴工

#python基础语法
无论学习什么语言,我们最初都要学习这门语言的基础语法及一些基本定义,下图基本涵盖了python学习所有的基础知识,下面我就详细来说上一说,说的不好您见谅:
在这里插入图片描述

1.首先介绍一下数据类型: python数据类型,包含数字,字符串,列表,元组,字典,集合:
a.数字类型包含: 整型:int(1/2/3)、浮点型:float(3.14)、复数:complex(a+bi);

b.字符串 str: str(数字) 、三个单引号:’’’ xxx’’’,双引号:” xxx” 、单引号:‘xxx’ ;

c.列表(可变,有序) list: 可以存储字符串:name = [“张三”,“李四”,“王五” ] ,可以存储数字:num=[1,2,3];
语法: 读取元素name[0/1/2] ,列表合并:name+num ->print(name+num),元素添加append:name.append(num[1]) ,元素删除:del name[1] ,列表删除:del name 切片(切割出部分数据形成一个新的列表):name(start:end:step)

d.元组 (不可变,有序) tuple: name = (“张三”,“李四”,“王五”) ,num=(1,2,3) ;(不可变就是不可以单独删除某个元素,与列表对应)
语法: 读取元素:name[0] ,元组合并:name+num ,更改元组:name = num , 删除元组:del name , 切片(切割出部分数据形成一个新的元组):num(start:end:step);

e.字典(可变,无序) dict: name ={‘f’:’123’,’y’:’124’,’h’:’125’};(无序,依靠键值对识别)
语法: 读取值:name[‘f’]->‘123’,添加元素:name[key] = value ,
删除元素:del name[‘h’] ;

f.集合(可变,无序,唯一): name = {f , y , h},name1 = {f , y};
语法: 添加元素:name.add(‘a’) ,删除元素:remove.name(f),
删除集合:del name,交集、并集、差集运算:name&name1
name|name1 name-name1
注:查看数据类型:type(xxx)

2.python的运算符和其他语言基本一致, 如果有其编程基础理解起来会更容易:
a.算数运算符:+、 - 、* 、/ 、%(取余) 、//(取整)、**(幂)
b.逻辑运算符:and、or、not (结果:True 、False)
c.赋值运算符:a= b
d.比较运算符:>、<、== 、>=、<=、!=
e.位运算符:&(位与)、|(位或)、^(位异或)、~(位取反)
<<(左移运算符)、>>(右移运算符)

注:优先级问题:分号分隔等级在这里插入图片描述

3.python基本的语句:
a.输入函数:a= int(input(“请输入数值”)) b= int(input(“请输入数值”))->对于可变的数值变量可以用input函数,比如年龄;
b. 输出函数:print(a,b,”我爱小甲鱼”)->对于我们不确定的数据可以利用这个函数打印,观察输出是否理想;
注:
#1.注释代码:(代码不用还不想删掉,或者给代码加入说明):
// 注释的内容 、’’‘注释内容’’’、Ctrl + /(快速加注释/取消注释)
#2.Python对于缩进非常严格,也就是同一级别的代码一定要对齐,否则一定会报错;

4.python 条件控制语句if,当我们需要选择的时候,就可以用if语句进行控制,下面是基本用法:

if 条件1print(1)
 elif 条件2:
  print(2)
 elif 条件3:
  print(3)
 else:
  print('当以上条件都不满足时,我能显示出来!')
 解释:
  当条件1成立时,输出1,后面的语句不会执行
  当条件1不成立,条件2成立时,输出2,条件2后面的语句不会执行
  当条件1和条件2都不满足,条件3成立时,输出3,条件3后面语句不会执行
  当条件123都不满足时,执行else语句,输出'当以上条件都不满足时,我能显示出来!'

实例展示:

#美观注释方法
'''
作者:天甜费
昵称:一飞冲天咻咻
人生格言:爱代码,爱人生
import xxxx
from   xxxx  import xxx
'''
import datetime                                #调入时间模块1111
imyear = input("请输入您的出生年份:")         #输入出生年份
nowyear = datetime.datetime.now().year         #计算当前年份
age=nowyear-int(imyear)                        #计算实际年龄
print("您的年龄为:"+str(age)+"岁")            #输出年龄

if age < 18:
    print("您现在为未成年人 (*^_^*)")
elif age >= 18 and age<66:
    print("您现在为青年人 ( ఠൠఠ )ノ")
elif age >= 66 and age<80:
    print("您现在为中年人 ( ̄▽ ̄)")
else :
    print("您现在为老年人(❤ ω ❤)")

# num = input("输入字符:")
# print(num+"的ASCII码为:", ord(num))

运行后截图:
在这里插入图片描述

5.python 循环语句while语句,for语句,当我们需要重复做同一件事情的时候,我们需要想起他们:
a.while语句:

i = 1      #创建并初始化一个控制while循环的变量i
while i <= 10:
        print("hello")   #此处执行10次
        i += 1 

运行后截图:
在这里插入图片描述

b.for语句:
注:
break:跳出整个循环,不会再循环后面的内容
continue:跳出本次循环,continue后面的代码不再执行,但是循环依然继续
eixt():结束程序的运行

for i in range(10):   #与C语言不同,in后面的数值会赋值给i,循环次数看in后面数据个数,range相当于一个列表list: [0,1,2,3,4,5,6,7,8,9],所以正常会循环十次
    if i == 5:
    #break
    #continue
    exit()
  print(i)
print('hello python')

实例展示:

def xunhuan():                      #加入了一个函数,可以被调用
    for i in  range(1,10,1):
        print(i, end=" ")           #不会换行print(end=" ")

    string1 = ["天甜费", "一飞冲天咻咻"]   #列表
    string2 = "天甜"                #字符串
    for fei in string1:
        print(fei)
    for i in string2:
        print(i)

f = 2 ;
while f >= 1:                       #while 语句演示
    f = f-1
    xunhuan()

运行后截图:
在这里插入图片描述
6.迭代器及生成器:
学习网址:迭代器和生成器学习链接
a.迭代器: 可以for循环出来的数据结构: python中,任意对象,只要定义了__next__方,iter()中的方法,它就是一个迭代器:字符串、列表、元组、字典、集合都是;字典和集合虽是无序的,但是仍可迭代,自行验证,很有趣的;
b.生成器: 在python中,这种一边循环一边计算的机制,称为生成器(Generator);生成器也是一种迭代器,但是你只能对其迭代一次,这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。程序存在 yield/存在循环计算 的公式:都可称之为迭代器
生成器存在目的: 节省空间占有率
**生成器介绍链接: **yield和return
实例展示: 第一个函数,需要的数值是通过计算得出来的num = num +1,yield返回后就会释放内存,节约空间; 而第二个函数需要所有数据都在内存中存好了才能被取出来,浪费内存,这两者会在处理大量数据的时候看出区别,前者会比后者利用的空间少的多,减少内存压力:
在这里插入图片描述
在这里插入图片描述
7.模块导入:
python我们之前介绍过其中一个优势就是第三方模块众多,当时说的是兄弟多,但是兄弟多没人来帮也不行呀,所以兄弟之间就定义了一个暗号,表示见到暗号说到就到:
a.from xxx import xxx
b.import xxx

注:模块是 函数封装 后的效果,可以用import引用自己写好的函数。(过程现在不需要我们去深究,只是明白使用规则就可以了)
python自带系统模块,也可以导入第三方模块(后面会讲如何导入第三方模块),或者引用自己模块。
系统查找模块的顺序,首先找文件夹内是否存在,在找python环境变量目录中是否有,若都没有则报错:

实例展示:
#定义一个module.py的简单模块,下面是模块里面的程序

#定义一个model.py的简单模块,下面是模块里面的程序
pinetree = '我是一棵松树'        #定义一个全局变量
def fun_module():              #定义一个函数
  pinetree = '挂上彩灯/礼物......我要变成一颗圣诞树\n' #更新变量值
  print(pinetree)

#定义一个test模块调用module.py模块:

import module                              #引入模块
print('输出全局变量为:',module.pinetree)   #操作变量
module.fun_module()                        #操作函数

运行后截图:
在这里插入图片描述
8.文件操作:
a. 打开文件操作: file = open(“D:\abc.txt”, r/w/a, encoding =‘utf-8’)或者
with open(“D:\abc.txt”, r/w/a, encoding =‘utf-8’) as file
注:
#1.“D:\abc.txt”:是文件的绝对路径;
#2.r/w/a:是模式选择,r:只读模式,w:只写模式,a:追加写入模式;二进制写入在后面加个b,例如ab;
#3.encoding =‘utf-8’:编码模式utf-8,通用编码。
b.写入文件操作: file.write(string)->打开文件要选择w/a模式;
c.读取文件操作: response=file.read()->打开文件要选择r模式;
d.关闭文件操作: file.close()->读写操作完成后要关闭文件才会保存。

实例展示:

file = open("D:\\fei.txt","a",encoding='utf-8')
file.write("费")
file.close()

file = open("D:\\fei.txt","r",encoding='utf-8')
File = file.read()
print(File)
file.close()

运行后截图:
在这里插入图片描述
在这里插入图片描述
9.os:对文件及目录进行处理:
下图是os操作的函数介绍,需要的时候可以查找一下,有时间也可以练习一下,加深理解和印象,编程就是要不断的敲代码,就像运动员一样,无论之前多厉害,只要有一段时间不锻炼,就会明显感到退步:学如逆水行舟,不进则退。

在这里插入图片描述
10.异常处理try: 异常处理学习链接
异常处理就是把可能会出错的代码放到下面的语法中,最常用形式:
a.try:
可能会犯错误的程序
except 错误类型(错误类型要选对):
print(“程序出错了”)
b.try:
可能会犯错误的程序
except Exception as reason:
print(“程序出错了”,reason. __ class __ .__ name__)
finally:
出错后也会执行的程序

实例展示:

a = [1, 2, 3]
try:
    a[3]
except Exception as e:
    print('错误类型是', e.__class__.__name__)
    print('错误明细是', e)
finally:
    print('hello')

运行后截图:
在这里插入图片描述
11.对象: 都说python是高级语言,主要是因为面向对象,那么我们就来揭开面向对象的庐山真面目:

举例子:C语言是面向过程的语言,也就是盖一座房子要描述搬砖、和泥、砌墙等;python及其他一些高级语言是面向对象的语言,也就是只需要描述长宽高样式等即可盖出一座房子;
理解了上面也只是明白了对象的定义,距离真正使用还是有一段距离的:
a.对象分为静态和动态两个部分:属性(定义的变量)及行为(封装在类里面的函数,可以有很多个):类是封装属性和行为的载体,class 类名xxx

import random as r

class Fish:                 #父类,定义一个鱼:Fish类
    def __init__(self):
        self.x = r.randint(1,10)   #父类,定义2个属性x,y
        self.y = r.randint(1,10)    
    def move(self):
        self.x -= 1
        print("我的位置是:",self.x,self.y)
class Glodfish(Fish):       #子类,定义一个金鱼:GlodFish类,继承Fish父类的方法,下面的其他鱼也是一样的
    pass
class Carp(Fish):         
    pass
class Salmen(Fish):       
    pass
class Shark(Fish):        
    def __init__(self):
        super().__init__() #子类,操作这个语句,就可以使用父类的属性
        #super().__init__派生类(子类)调用基类(父类)的**类属性**,要进行声明;
        self.hungry = True     
    def eat(self):         #子类,定义一个方法
        if self.hungry:
            print("吃货的梦想就是天天有的吃,哈哈")
            self.hungry = False
        else:
            print("太撑了,吃不下了!")
F = Fish()     #父类,实例化(类实例化之后就可以操作属性及方法),比如下面的方式
F.move()
F.move()

S = Shark()      #子类,实例化
print(S.hungry)  #类实例化之后就可以操作属性及方法
S.eat()
S.move()

b.对象进行类化后:类具有封装、继承、多态等特性,可以使软件设计更加灵活,能更好的进行代码的复用;万物皆对象。
c.定义一个大雁类,喙、翅膀、爪属性;觅食、飞行、睡觉等行为---->封装;
d.四边形(父类):长方形,正方形, 平行四边形(子类)—>继承
e.螺丝:长螺丝,短螺丝---->体现面向对象的多态特性。

类里面变量定义:变量传递,类属性,实例属性;

#1.魔术方法__init__()
class Geese:
     def __init__(self,beak,wing,claw):
         print("我是大雁类,我有以下特征:")
         print(beak)
         print(wing)
         print(claw)
beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
wing_1 = "翅膀长而尖"
claw_1 = "爪子是噗状的"

wildGoose = Geese(beak_1,wing_1,claw_1) #变量传递

#2.创建类属性,指定义在类中,且在方法外面的:
class Geese:
    beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
    wing_1 = "翅膀长而尖"
    claw_1 = "爪子是噗状的"           #三个类属性,直接定义在类下面
    def __init__(self):
        print("我是大雁类,我有以下特征:")
        print(Geese.beak_1)
        print(Geese.wing_1)
        print(Geese.claw_1)

wildGoose = Geese()

#3.创建实例属性,指定义在类的方法中的属性:
class Geese:
    def __init__(self):                                              #类的方法
        self.beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
        self.wing_1 = "翅膀长而尖"
        self.claw_1 = "爪子是噗状的"#三个实例属性,定义在 __init__(self)下面
        print("我是大雁类,我有以下特征:")
        print(self.beak_1)
        print(self.wing_1)
        print(self.claw_1)

wildGoose = Geese()

#4.实例属性通过实例名进行修改:
class Geese:
    def __init__(self):
         self.beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
         self.wing_1 = "翅膀长而尖"
         self.claw_1 = "爪子是噗状的"
         print("我是大雁类,我有以下特征:")
         print(self.beak_1)
         print(self.wing_1)
         print(self.claw_1)

wildGoose1 = Geese()
wildGoose2 = Geese()
wildGoose1.wing_1 = "毛绒绒的"
print(wildGoose1.wing_1)
print(wildGoose2.wing_1)

#5.类里面创建方法:
class Geese:
    def __init__(self):
         self.beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
         self.wing_1 = "翅膀长而尖"
         self.claw_1 = "爪子是噗状的"
         print("我是大雁类,我有以下特征:")
         print(self.beak_1)
         print(self.wing_1)
         print(self.claw_1)
    def fly(self):
        print("我能飞")

wildGoose1 = Geese()
wildGoose1.fly()


#6.重写父类方法
class Fruit:
    color = "绿色"
    def harvest(self,color):
        print("水果是:"+color+"的")
        print("水果原来是:"+Fruit.color+"的")
class Orange(Fruit):
    color = "橙色"
    def __init__(self):
        print("我是橙子")
    def harvest(self,color):
        print("橙子是::" + color + "的")
        print("橙子原来是:" + Fruit.color + "的")

#7.派生类中调用基类__init__()
class Fruit:
     def __init__(self,color = "绿色"):
         Fruit.color = self.color
     def harvest(self):
         print("水果原来是:"+Fruit.color+"的")
class Orange(Fruit):
     color = "橙色"
     def __init__(self):
         super().__init__()
         print("我是橙子")

orange = Orange()
orange.harvest()

以上就是基础知识部分的学习,我这里做了一个基本的整理及总结,但是要想成为一个优秀的大牛,就要不断的汲取知识,学无止境,况且入坑。

之前听过一句话感觉不错,学到的就要教人,赚到的就要给人,这也是我做这件事的初衷,因为当我遇见BUG或者不会的知识点的时候,去百度搜索总能找到方法或者思路,所以我也想贡献自己微薄的力量。

第三篇分享,持续更新中,,,,,*

猜你喜欢

转载自blog.csdn.net/weixin_46008828/article/details/108566094