原创

python知识整理

安装环境、IDE

下载 python 环境

官网 https://www.python.org/

官网太慢了,换个地址 https://www.onlinedown.net/soft/14542.htm

安装 IDE

https://www.cnblogs.com/Dr-wei/p/11845218.html

建议不装汉化包

IDE 汉化包下载 https://pan.baidu.com/s/1sweHYIyiA_gZR7XoMaBTXw?errmsg=Auth+Login+Sucess&errno=0&ssnerror=0&

Python pip 安装与使用

python 使用 excel


pip uninstall xlrd
pip install xlrd==1.2.0

入门文档

https://docs.python.org/zh-cn/3/

https://docs.python.org/zh-cn/3.7/index.html

基础教程 https://www.runoob.com/python/python-tutorial.html

基本数据类型

基本数据类型


2 + 2

50 - 5*6
乘、除
8/5

乘方
5**2

赋值:
>>> width = 20
>>> height = 5 * 9
>>> width * height
900

混合类型运算数的运算会把整数转换为浮点数
4 * 3.75 - 1

浮点型

height=float(input("请输入您的身高:"))    # 输入身高
weight=float(input("请输入您的体重:"))    # 输入体重
bmi=weight/(height*height)         # 计算BMI指数

# 判断身材是否合理
if bmi<18.5:
    print("您的BMI指数为:"+str(bmi))    # 输出BMI指数
    print("体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
    print("您的BMI指数为:"+str(bmi))    # 输出BMI指数
    print("正常范围,注意保持 (-_-)")
if bmi>=24.9 and bmi<29.9:
    print("您的BMI指数为:"+str(bmi))    # 输出BMI指数
    print("体重过重 ~@_@~")
if bmi>=29.9:
    print("您的BMI指数为:"+str(bmi))   # 输出BMI指数
    print("肥胖 ^@_@^")

整型

a = 100                                # 变量a,值为100
b = 5                                  # 变量b,值为5
print(9)                              # 输出数字9
print(a)                               # 输出变量a的值100
print(a*b)                            # 输出 a*b的结果500
print("go big or go home")         # 输出字符串“go big or go home”

字符

print("a")  # 输出字符a
print(chr(97))  # 输出字符a
print("A")  # 输出字符A
print(chr(65))  # 输出字符A
print("B")  # 输出字符B
print(chr(66))  # 输出字符B
print("+")  # 输出字符+
print(chr(43))  # 输出字符+
print(8)  # 输出字符8
print(chr(56))  # 输出字符8
print("[")  # 输出字符[
print(chr(91))  # 输出字符[
print("]")  # 输出字符]
print(chr(93))  # 输出字符]

字符串拼接

str='aaa'+'bbbb'
print(str)

print("sniper"+" is "+"very good")


title = '我喜欢的名言警句'                            # 使用单引号,字符串内容必须在一行中
mot_cn = "命运给予我们的不是失望之酒,而是机会之杯。" # 使用双引号,字符串内容必须在一行中
# 使用三引号,字符串内容可以分布在多行中
mot_en = '''Our destiny offers not the cup of despair,
but the chance of opportunity.'
''
print(title)
print(mot_cn)
print(mot_en)

位移运算

print("12&8 = "+str(12&8))         # 位与计算整数的结果
print("4|8 = "+str(4|8))             # 位或计算整数的结果
print("31^22 = "+str(31^22))     # 位异或计算整数的结果
print("~123 = "+str(~123))          # 位取反计算整数的结果

打开文件

fp = open(r'D:\mr.txt','a+')                # 打开文件
print("要么出众,要么出局",file=fp)         # 输出到文件中
fp.close()                                    # 关闭文件

输出日期

import datetime                                     # 调用日期模块datetime
print("当前年份:"+str(datetime.datetime.now().year)) # 输出当前年份,当前是2018年,输出2018
# 输出当前日期和时间,如18-11-20 15:30:23,注意代码中的单引号和字母大小写,不能写错
print("当前日期时间:"+datetime.datetime.now().strftime('%y-%m-%d %H:%M:%S'))

流程控制语句

for 循环

print("计算1+2+3+……+100的结果为:")
result = 0           # 保存累加结果的变量
for i in range(101):
    result += i     # 实现累加功能
print(result)       # 在循环结束时输出结果


for i in range(1,10,2):
    print(i,end = ' ')


string = '不要再说我不能'
print(string)         # 横向显示
for ch in string:
    print(ch)         # 纵向显示

a=[1,2,3,4,5,6]
for i in a:
    print(i)

for i in range(1,10):
    if i%2 == 0:             # 判断是否为偶数
        print(i,end = ' ')
    else:                     # 不是偶数
        pass                  # 占位符,不做任何事情

if 语句

a = input("请输入数字(1——7)")
if a == '1':
    print("今天是:星期一")
elif a == '2':
    print("今天是:星期二")
elif a == '3':
    print("今天是:星期三")
elif a == '4':
    print("今天是:星期四")
elif a == '5':
    print("今天是:星期五")
elif a == '6':
    print("今天是:星期六")
elif a == '7':
    print("今天是:星期日")

for 语句

words = ['cat''window''defenestrate']
for w in words:
 print(w, len(w))

break、continue、else 语句

for n in (1,2,3,4,5,6):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
    else:
        # loop fell through without finding a factor
        print(n, 'is a prime number')

数据结构:列表、字典

列表相加

nba1 = ["德怀特·霍华德","德维恩·韦德","凯里·欧文","保罗·加索尔"]
nba2 = ["迈克尔·乔丹","比尔·拉塞尔","卡里姆阿卜杜勒·贾巴尔","威尔特·张伯伦",
      "埃尔文·约翰逊","科比·布莱恩特","蒂姆·邓肯","勒布朗·詹姆斯","拉里·伯德",
      "沙奎尔·奥尼尔"]
print(nba1+nba2)

检测是否在里面

nba = ["德怀特·霍华德","德维恩·韦德","凯里·欧文","保罗·加索尔"]
print("保罗·加索尔" in nba)
print("保罗·加索尔"  not in nba)


num = [7,14,21,28,35,42,49,56,63]
print("序列num的长度为",len(num))
print(max(num)+min(num))

遍历排名

team = ["休斯敦 火箭""金州 勇士""波特兰 开拓者""犹他 爵士""新奥尔良 鹈鹕""圣安东尼奥 马刺""俄克拉荷马城 雷霆""明尼苏达 森林狼"]
for item in team:
    print(item)

for index, item in enumerate(team):
    print(index + 1, item)

列表插入

phone = ["摩托罗拉","诺基亚","三星","OPPO"]
len(phone)        # 获取列表的长度
phone.append("iPhone")
print(len(phone))        # 获取列表的长度
print(phone)

删除

verse = ["长亭外","古道边","芳草碧连天"]
del verse[-1]
print(verse)

迭代删除

team = ["火箭","勇士","开拓者","爵士","鹈鹕","马刺","雷霆","森林狼"]
value = "公牛"              # 指定要移除的元素
if team.count(value)>0:   # 判断要删除的元素是否存在
    team.remove(value)     # 移除指定的元素
print(team)


song = ["云在飞""我在诛仙逍遥涧""送你一匹马""半壶纱""云在飞""遇见你""等你等了那么久"]
position = song.index("半壶纱")
print(position)

排序

grade = [98,99,97,100,100,96,94,89,95,100]     # 10名学生语文成绩列表
print("原列表:",grade)
grade.sort()                                        # 进行升序排列
print("升  序:",grade)
grade.sort(reverse=True)                         # 进行降序排列
print("降  序:",grade)


char = ['cat','Tom','Angela','pet']
char.sort()                     # 默认区分字母大小写
print("区分字母大小写:",char)
char.sort(key=str.lower)      # 不区分字母大小写
print("不区分字母大小写:",char)



grade = [98,99,97,100,100,96,94,89,95,100]     # 10名学生语文成绩列表
grade_as = sorted(grade)                         # 进行升序排列
print("升序:",grade_as)
grade_des = sorted(grade,reverse = True)       # 进行降序排列
print("降序:",grade_des)
print("原序列:",grade)

生成随机值

import random                                           #导入random标准库
randomnumber = [random.randint(10,100) for i in range(10)]
print("生成的随机数为:",randomnumber)

字典

dictionary = {'qq':'84978981','明日科技':'84978982','无语':'0431-84978981'}
print(dictionary)

name_list = ['绮梦','冷伊一','香凝','黛兰']     # 作为键的列表
dictionary = dict.fromkeys(name_list)
print(dictionary)

字典遍历

dictionary = {'qq':'84978981','明日科技':'84978982','无语':'0431-84978981'}
for item in dictionary.items():
    print(item)

for key, value in dictionary.items():
    print(key, "的联系电话是", value)

添加元素

dictionary = dict((('绮梦''水瓶座'), ('冷伊一''射手座'), ('香凝''双鱼座'), ('黛兰''双子座')))
dictionary["碧琦"] = "巨蟹座"  # 添加一个元素
print(dictionary)

修改

dictionary["香凝"] = "天蝎座"  # 添加一个元素。当元素存在时,相当于修改功能
print(dictionary)

删除

del dictionary["香凝"]  # 删除一个元素
print(dictionary)

dictionary = dict((('绮梦''水瓶座'), ('冷伊一''射手座'), ('香凝''双鱼座'), ('黛兰''双子座')))
if "香凝1" in dictionary:  # 如果存在
    del dictionary["香凝1"]  # 删除一个元素
print(dictionary)

函数

异常捕获

def division():
    '''功能:分苹果'''
    print("\n===================== 分苹果了 =====================\n")
    apple = int(input("请输入苹果的个数:"))             # 输入苹果的个数
    children = int(input("请输入来了几个小朋友:"))
    result = apple // children                          # 计算每人分几个苹果
    remain = apple - result * children                # 计算余下几个苹果
    if remain > 0:
        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result,
              "个,剩下", remain, "个。")
    else:
        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
if __name__ == '__main__':
    try:                                                   # 捕获异常
        division()                                       # 调用分苹果的函数
    except ZeroDivisionError:                          # 处理异常
        print("\n出错了 ~_~ ——苹果不能被0个小朋友分!")
    except ValueError as e:                            # 处理ValueError异常
        print("输入错误:", e)                            # 输出错误原因
    else:                                                   # 没有抛出异常时执行
        print("分苹果顺利完成...")

过滤字符串

def filterchar(string):
    '''功能:过滤危险字符(如黑客),并将过滤后的结果输出
       about:要过滤的字符串
       没有返回值

       '
''
    import re                                      # 导入Python的re模块
    pattern = r'(黑客)|(抓包)|(监听)|(Trojan)'   # 模式字符串
    sub = re.sub(pattern, '@_@', string)        # 进行模式替换
    print(sub)
about = '我是一名程序员,喜欢看黑客方面的图书,想研究一下@_@。'
filterchar(about)

定义函数

def demo(obj):
    print("原值:", obj)
    obj += obj

调用函数

print("=========值传递========")
mot = "唯有在被追赶的时候,你才能真正地奔跑。"
print("函数调用前:", mot)
demo(mot)  # 采用不可变对象——字符串
print("函数调用后:", mot)
print("=========引用传递 ========")
list1 = ['绮梦''冷伊一''香凝''黛兰']
print("函数调用前:", list1)
demo(list1)  # 采用可变对象——列表
print("函数调用后:", list1)

可变参数

def printcoffee(*coffeename):  # 定义输出我喜欢的咖啡名称的函数
    print('\n我喜欢的咖啡有:')
    for item in coffeename:
        print(item)  # 输出咖啡名称
printcoffee('蓝山')
printcoffee('蓝山''卡布奇诺''土耳其''巴西''哥伦比亚')
printcoffee('蓝山''卡布奇诺''曼特宁''摩卡')

全局变量和局部变量

message = '唯有在被追赶的时候,你才能真正地奔跑。'     # 全局变量
print('函数体外:message =',message)                # 在函数体外输出全局变量的值
def f_demo():
    message = '命运给予我们的不是失望之酒,而是机会之杯。' # 局部变量
    print('函数体内:message =',message)             # 在函数体内输出局部变量的值
f_demo()   # 调用函数
print('函数体外:message =',message)                # 在函数体外输出全局变量的值

函数带返回值

import math                   # 导入math模块
def circlearea(r):           # 计算圆的面积的函数
    result = math.pi*r*r     # 计算圆的面积
    return result            # 返回圆的面积
r = 10                        # 半径
print('半径为',r,'的圆面积为:',circlearea(r))

面向对象

定义类

class Geese:
    '''大雁类'''
    def __init__(self):          # 构造方法
        print("我是大雁类!")
wildGoose = Geese()              # 创建大雁类的实例

带参结构体

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)        # 创建大雁类的实例

定义类属性

class Geese:
    '''雁类'''
    neck = "脖子较长"                        # 定义类属性(脖子)
    wing = "振翅频率高"                   # 定义类属性(翅膀)
    leg = "腿位于身体的中心支点,行走自如"   # 定义类属性(腿)
    def __init__(self):                   # 实例方法(相当于构造方法)
        print("我属于雁类!我有以下特征:")
        print(Geese.neck)                  # 输出脖子的特征
        print(Geese.wing)                  # 输出翅膀的特征
        print(Geese.leg)                   # 输出腿的特征
geese = Geese()                                 # 实例化一个雁类的对象

定义实例属性

class Geese:
    '''雁类'''
    def __init__(self):                              # 实例方法(相当于构造方法)
        self.neck = "脖子较长"                        # 定义实例属性(脖子)
        self.wing = "振翅频率高"                      # 定义实例属性(翅膀)
        self.leg = "腿位于身体的中心支点,行走自如"   # 定义实例属性(腿)
        print("我属于雁类!我有以下特征:")
        print(self.neck)                      # 输出脖子的特征
        print(self.wing)                      # 输出翅膀的特征
        print(self.leg)                       # 输出腿的特征
geese = Geese()                                  # 实例化一个雁类的对象

定义一个成员方法

class People:
    def __init__(self,name,age):
        self.age = age
        self.name = name

    def say(self):
        print("hi "+self.name)


p = People("sniper",33)
p.say()

将方法转换为属性

class Rect:
    def __init__(self,width,height):
        self.width = width                 # 矩形的宽
        self.height = height               # 矩形的高
    @property                             # 将方法转换为属性
    def area(self):                      # 计算矩形的面积的方法
        return self.width*self.height   # 返回矩形的面积
rect = Rect(800,600)                     # 创建类的实例
print("面积为:",rect.area)             # 输出属性的值

继承

class Fruit:  # 定义水果类(基类)
    color = "绿色"  # 定义类属性

    def harvest(self, color):
        print("水果是:" + color + "的!")  # 输出的是形式参数color
        print("水果已经收获……")
        print("水果原来是:" + Fruit.color + "的!");  # 输出的是类属性color


class Apple(Fruit):  # 定义苹果类(派生类)
    color = "红色"

    def __init__(self):
        print("我是苹果")


class Orange(Fruit):  # 定义橘子类(派生类)
    color = "橙色"

    def __init__(self):
        print("\n我是橘子")

    # 重写harvest()方法的代码




apple = Apple()  # 创建类的实例(苹果)
apple.harvest(apple.color)  # 调用基类的harvest()方法
orange = Orange()  # 创建类的实例(橘子)
orange.harvest(orange.color)  # 调用基类的harvest()方法


class Fruit:       # 定义水果类(基类)
    def __init__(self,color = "绿色"):
        Fruit.color = color   # 定义类属性
    def harvest(self):
        print("水果原来是:" + Fruit.color + "的!");  # 输出的是类属性color
class Apple(Fruit):     # 定义苹果类(派生类)
    def __init__(self):
        super().__init__()
        print("我是苹果")
apple = Apple()      # 创建类的实例(苹果)
apple.harvest()      # 调用基类的harvest()方法



模块

christmastree.py
pinetree = '我是一棵松树'  # 定义一个全局变量(松树)
def fun_christmastree():  # 定义函数
    '''功能:一个梦
       无返回值
    '
''
    pinetree = '挂上彩灯、礼物……我变成一棵圣诞树 @^.^@ \n'  # 定义局部变量赋值
    print(pinetree)  # 输出局部变量的值
# *************************判断是否以主程序的形式运行*************************#
if __name__ == '__main__':
    print('\n下雪了……\n')
    print('=============== 开始做梦…… =============\n')
    fun_christmastree()  # 调用函数
    print('=============== 梦醒了…… ===============\n')
    pinetree = '我身上落满雪花,' + pinetree + ' -_- '  # 为全局变量赋值
    print(pinetree)  # 输出全局变量的值


main.py
import christmastree                      # 导入christmastree模块
print(christmastree.pinetree)




bmi.py
def fun_bmi(person,height,weight):
    '''功能:根据身高和体重计算BMI指数
       person:姓名
       height:身高,单位:米
       weight:体重,单位:千克
    '
''
    print(person + "的身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
    bmi=weight/(height*height)                  # 用于计算BMI指数,公式为“体重/身高的平方”
    print(person + "的BMI指数为:"+str(bmi))   # 输出BMI指数
    # 判断身材是否合理
    if bmi<18.5:
        print("您的体重过轻 ~@_@~\n")
    if bmi>=18.5 and bmi<24.9:
        print("正常范围,注意保持 (-_-)\n")
    if bmi>=24.9 and bmi<29.9:
        print("您的体重过重 ~@_@~\n")
    if bmi>=29.9:
        print("肥胖 ^@_@^\n")

def fun_bmi_upgrade(*person):
    '''功能:根据身高和体重计算BMI指数(升级版)
       *person:可变参数该参数中需要传递带3个元素的列表,
       分别为姓名、身高(单位:米)和体重(单位:千克)
    '
''
    for list_person in person:
        for item in list_person:
            person = item[0]  # 姓名
            height = item[1]  # 身高(单位:米)
            weight = item[2]  #体重(单位:千克)
            print("\n" + "="*13,person,"="*13)
            print("身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
            bmi=weight/(height*height)           # 用于计算BMI指数,公式为“体重/身高的平方”
            print("BMI指数:"+str(bmi))          # 输出BMI指数
            # 判断身材是否合理
            if bmi<18.5:
                print("您的体重过轻 ~@_@~")
            if bmi>=18.5 and bmi<24.9:
                print("正常范围,注意保持 (-_-)")
            if bmi>=24.9 and bmi<29.9:
                print("您的体重过重 ~@_@~")
            if bmi>=29.9:
                print("肥胖 ^@_@^")




main.py
import bmi                     # 导入bmi模块
bmi.fun_bmi("尹一伊",175,120)  # 执行模块中的fun_bmi()方法

# 在导入模块时设置别名的应用
# import bmi as m                     # 导入bmi模块
# m.fun_bmi("尹一伊",175,120)  # 执行模块中的fun_bmi()方法



文件操作

读 9 个字符

with open('message.txt','r') as file:  # 打开文件
    string = file.read(9)                 # 读取前9个字符
    print(string)

读一行

print("\n","="*35,"蚂蚁庄园动态","="*35,"\n")
with open('message.txt','r') as file:   # 打开保存蚂蚁庄园动态信息的文件
    number = 0   # 记录行号
    while True:
        number += 1
        line = file.readline()
        if line =='':
            break    # 跳出循环
        print(number,line,end= "\n")  # 输出一行内容
print("\n","="*39,"over","="*39,"\n")

全部读出来

print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
with open('message.txt','r') as file:        # 打开保存蚂蚁庄园动态信息的文件
    messageall = file.readlines()              # 读取全部动态信息
    for message in messageall:
        print(message)                           # 输出一条动态信息
print("\n","="*29,"over","="*29,"\n")

正文到此结束