PYTHON 二月 17, 2021

简明 Python 基础

文章字数 8.1k 阅读约需 15 mins. 阅读次数 0

引言

本篇将介绍我在学习有关Python时的一些笔记分享。
所用教学平台:MOOC
所用IDE:Jupyter Notebok

Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。


自动补全

# Jupyter Notebook 首单元添加: 
%config IPComplete.greddy=True

基础操作

Print

print("Hello Python...")

# print 默认换行,若不需要换行,则:
print("Hello", end="")
print("Python...")

# 或
print("Hello", " Python...")

变量与基本数据类型

# Python 无需手动指定数据类型,会根据给定值进行自动指定
int_a = 5
float_b = 6.3
str_c = "Hello"

print(int_a, float_b, str_c)
print(int_a, type(int_a))
print(float_b, type(float_b))
print(str_c, type(str_c))

# 复数
complex_a = 1 + 2j # 实部 + 虚部
complex_b = complex(3.14, 5.12) # complex(实部, 虚部)

print(complex_a, type(complex_a))
print(complex_b, type(complex_b))

# 布尔
bool_T = True
bool_F = False

print(bool_T, type(bool_T))
print(bool_F, type(bool_F))

# 逻辑运算
# and,or,not - 与,或,非
print(True or False)
print(False and False)

not False == True #do not use ! to refrence not
15 == True

保留字

  • and
  • exec
  • not
  • assert
  • finally
  • or
  • break
  • for
  • pass
  • class
  • from
  • print
  • continue
  • global
  • raise
  • def
  • if
  • return
  • del
  • import
  • try
  • elif
  • in
  • while
  • else
  • is
  • with
  • except
  • lambda
  • yield

转义

# 转义字符是“\”
print("This is the first line...\nThis is the second line...")

# 若不想让转义符生效,则可在字符串前添加“r”,表示原始字符串
print(r"This is the fitst lint...\nThis is the second line...")

输出段落

三个连续单引号或双引号进行标识

print('''Hello World
Hello Python
Hello Anaconda''')

字符串操作

# 字符串拼接
"Hello" + " String"

# 输出 20 次 Hello
"Hello " * 20 

列表

list1 = [1,2,3,4]
print(list1)

print(list1[1])
print(list1[-1]) # 从右向左输出第一个元素(倒序输出)
# 列表截取/切片
list2 = [1,2,3,4,5,6]

print(list2[0:3]) # 不包含尾/结束下标的元素,即4
print(list2[-3:-1]) # 不包含倒数第一个下标元素,即6
# 切片步长
list3 = [1,2,3,4,5,6]

print(list3[::2]) # 不限制起点与终点下标,每隔2个步长进行打印
print(list3[1::2]) # 从起点下标1开始,每隔2个步长进行打印

元组(Tuple)

  • 元组与列表类似,但元组一旦定义即不能对数据进行修改

  • 元组写在小括号里,元素之间用逗号隔开。

  • 元组中元素的类型可以不相同,与列表类似。也支持嵌套。

tuple1 = (1,2,3,4,5,"Hello World",[6,7,8,9],(10,11))

print(tuple1,type(tuple1))
print(tuple1[0])
print(tuple1[-1])
print(tuple1[5:-1])
print(tuple1[-1][-1])

集合(Set)

  • 集合是一个无序的、且不含重复元素的序列

  • 集合主要用来进行成员关系测试和删除重复元素

  • 可以使用大括号{}或set()函数创建集合

  • 自动去重

set1 = {1,2,2,3,3,1}
print(set1)

print(1 in set1) # 判断1是否存在于set1集合中,存在返回True,否则返回Flase
print(5 in set1)

set2 = {1,2,3,4}
set3 = {4,5,6}

集合操作

# 集合的并
print(set2 | set3)

# 集合的交
print(set2 & set3)

# 集合的差
print(set2 - set3)

# 集合的补,在两个集合中不同时存在的元素集合
print(set2 ^ set3)

# 等同于 == (集合的并 - 集合的补)
print((set2 | set3) - (set2 & set3))

字典(Dict)

  • 字典是一种映射,用{}标识,是一个无序的键(key)值(value)对的集合,键必须使用不可变的类型

  • 在同一个字典中,键的值是唯一

  • 在字典中的元素都是通过键来存取

dict1 = {"name" : "zhangsan","height" : 175, "weight" : 72}
print(dict1["height"]) # 通过键取值

dict1["weight"] = 73 # 修改字典数据。若字典中无该数据,则新增;反之覆盖.
print(dict1)

# 内置函数: clear(), keys(), values()
print(dict1.keys()) # 输出键
print(dict1.values()) # 输出值
print(dict1.clear()) # 清空字典

dict2 = {} # 构建空字典

  • %c 格式化字符及其ASCII码
  • %s 格式化字符串
  • %d 格式化整数
  • %u 格式化无符号整型
  • %o 格式化无符号八进制数
  • %x 格式化无符号十六进制数
  • %X 格式化无符号十六进制数(大写)
  • %f 格式化浮点数字,可指定小数点后的精度
  • %e 用科学计数法格式化浮点数
  • %E 作用同 %e,用科学计数法格式化浮点数
  • %g %f%e 的简写
  • %G %f%E 的简写
# `%c` 格式化字符及其ASCII码
print("%c" % "A")
print("%c" % 65)

# `%s` 格式化字符串
print("%s" % "Hello World")

# `%d` 格式化整数
print("%d" % 10)

# `%o` 格式化无符号八进制数
print("%o" % 10)
print("%#o" % 10)

# `%x` 格式化无符号十六进制数
print("%x" % 20)
print("%#x" % 20)
print("%X" % 20)

# `%f` 格式化浮点数字,可指定小数点后的精度
print("%f" % 3.14)

# `%e` 用科学计数法格式化浮点数
# `%E` 作用同 %e,用科学计数法格式化浮点数
print("%e" % 31400000)

# `%g`  %f 和 %e 的简写
# `%G`  %f 和 %E 的简写
print("%g" % 3140000)
print("%g" % 31400000955)

类型转换

strNum = "1"
print(int(strNum))

strFloat = "3.14159"
print(float(strFloat))

print(str(456))

print(ord("A")) # 转换ASII码

print(chr(65)) # 识别ASII码对应的值

print(chr(9999))
tuple1 = (1,2,3,4,5,5,6,6)
print(tuple1)

list1 = list(tuple1) # 元组转list
print(list1)

set1 = set(list1) # list转集合(可起到去重的作用)
print(set1)

tuple2 = (("name","zhangsan"),("height",172))
print(tuple2)
dict1 = dict(tuple2) # 元组转字典(当元组以键值对的形式存储时,可杯解析成字典)
print(dict1)

超级表达式

# 方程式计算(超级表达式计算)
x = 8
calc = "5*x+1"

print(eval(calc))

条件(if)控制

# 流程控制
print("Please input your weight(kg)")
weight = float(input()) # input() - 接收用户输入数据
print("Please input your height(M)")
height = float(input())
# if weight > 90:
#     print(weight)
    
# if else
# if weight > 90:
#     print(weight)
# else:
#     print("Bye")

# if else if
BMI = weight / height**2
if BMI < 20:
    print("Your BMI is %.2f, To thin" %BMI)
elif BMI > 25:
    print("Your BMI is %.2f, To fat" %BMI)
else:
    print("Your BMI is %.2f, Well Done" %BMI)

条件(while)控制

# 流程控制
i = 0
while i < 5:
    print("Hello World")
    i += 1

条件(for)控制

# 流程控制
# 遍历列表
fruits = ['banana', 'apple','mango']
for fruit in fruits:
    print('Current:',fruit)

print("----------")
    
# for range
for i in range(10):
    print("Hello World")

列表推导式

list1 = [1,2,3]
list2 = [3,4,5]

# 此处为双层循环
# 分别从list1中取出1,2,3,并与ist2的值进行相乘(类似笛卡尔乘积?)
[x * y for x in list1 for y in list2]

# 数值判断的使用场景,从list1中取出大于1小于4的x值的值
[x for x in list1 if 1 < x < 4]

多重循环

# 流程控制
# 多重循环
# 九九乘法表
for i in range(1,10):
    for j in range(1, i+1):
        result = j * i;
        print("%s x %s = %-5s" % (j, i , result),end='')
    print() # 每次循环结束后换行

Break

# 流程控制
# 提前结束整个循环
i = 0
while i < 10:
    i += 1
    if i == 3:
        print("i == 3")
        break
    print("Next")
print("End")

Continue

# 流程控制
# 跳过当前循环中剩余语句,进入下一循环

i = 0
while i < 10:
    i += 1
    if i == 3:
        print("i == 3")
    continue
    print("Next")
print("End")

Pass

# 流程控制
# pass
# 占位,不起实际作用
i = 0
while i < 10:
    i += 1
    if i == 3:
        pass # pass起到空语句的作用
    elif i == 5:
        print("i == 5")
    print("Next")
print("End")

函数

定义

'''
    def functinoName(parameters):
        "函数帮助信息"
        functino_suite # 函数体
        return [expression] # 返回值
'''
# Python的函数无需定义返回值类型
# 此处定一个求阶乘!的函数
def fact(n):
    "basic_use"
    result = 1
    for i in range(1, n+1):
        result *= i
    return result

# 调用上述fact函数
result = fact(5)
print(result)

# 打印函数帮助信息
fact.__doc__

函数返回多个值(即返回一个元组)

def fun_test(mList,mint=0,mString="Default String"):
    mList.append("New Item")
    mint += 1
    return mList, mint, mString
mTestList = [1,2,3]
mTestInt = 10
print(fun_test(mTestList,mTestInt))
print(mTestList)

print("----------")

# 对返回的元组进行拆包,取出相应值
returnV1, rerutnV2, returnV3 = fun_test(mTestList,mTestInt)

print(returnV1)
print(rerutnV2)
print(returnV3)

局部/全局变量

number = 123
def fun():
    number = 321
    print(number)

fun()
print(number)
number = 456
def funGlobal():
    global number # global 局部变量全局化,以达修改全局变量
    number = 654
    print(number)
    
funGlobal()
print(number)

定义

# 类
'''
    class className:
        '类帮助信息' # 类文档
        class_suite # 类体
'''
# object 表示mFirstClass继承自object类
class mFirstClass(object):
    '这是mFirstClass类的帮助文档'
    
    # classCount是类的一个属性,值在类中共享,可使用mFirstClass.classCount进行访问
    # 即共有属性
    classCount = 0
    
    # self表示类的实例,self在定义类方法时是必要的,但在调用时为不必传入的参数
    # __init__为类的构造函数
    def __init__(self,name,schoolName):
        self.name = name
        self.schoolName = schoolName
        mFirstClass.classCount += 1
    
    def getName(self):
        return self.name
    
    def getSchoolName(self):
        return self.schoolName
    
    def showCount(self):
        print("Total count % s" % (mFirstClass.classCount))
    
    def showMassage(self):
        print("Name: %s, School: %s" % (self.name,self.schoolName))

类帮助文档

# 类帮助文档的使用
print(mFirstClass.__doc__)

实例化

# 类的实例化
mClass1 = mFirstClass("name1","school1")
mClass2 = mFirstClass("name2","school2")

类属性

# 访问类的属性
print(mFirstClass.classCount)

类方法

# 调用类方法
mClass1.showCount()
mClass2.showCount()

mClass1.showMassage()
mClass2.showMassage()

获取类帮助信息

# Python 获取帮助信息
# dir(instance)
# 可调用dir来显示对象的所有方法
dir(mClass1)

文件处理

# Python 文件操作
# 文件写入
# 第一个参数为待写入文件的地址,若文件存在即写入文件,不存在则新建文件后写入
# "wt"为写入模式,write type
with open ("testFiles/test.txt", "wt") as out_file:
    out_file.write("This is a new text")

# Python 文件操作
# 文件读取
# 第一个参数为读取文件地址,若文件存在即读取文件内容,若文件不存在则报错
# "rt"为读取模式,read type
# 调用read方法对文件进行读取
with open("testFiles/test.txt", "rt") as in_file:
    text = in_file.read()

print(text)

异常

# 异常
# try catch在Python中为try except
def except_funtion():
    try:
        # 1.故意产生异常
        10 / 0

        # 2.正常操作
        # 10 / 1
    except ZeroDivisionError:
        # Python有许多异常,但无法一一进行处理,若可以预先判定异常则最好,或使用通用异常反馈结果
        print("Zero Division Error")
    except :
        # 通用异常反馈
        print("System Error")
    else:
        # 正常情况
        print("System all green")
        pass
    finally:
        # 无论是否发生异常都会执行finally中的代码
        print("We got finally")

except_function()

帮助

dir

调用dir()来显示该对象的所有方法

dir(1)

help

调用help()来查看该对象的详细信息

help(int)

0%