Python学习笔记(5)

目录

一.元组

二.Unpacking(解包)

三. Dictionaries(字典)

四.函数和参数

五.Exception(错误)

六.Class(类)

七.Constructor(结构体)

八.Inheritance(继承)

九. Modules(模块)

十.packages(包)


一.元组

简单来说,就是把【】变成()的数组,元祖和数组的不同之处在于,元祖只能查看信息,不能进行修改.

二.Unpacking(解包)

有这样一种情况,我们需要一个数组中的数据相互进行运算:

coordinate = [1,2,3]

将这个数组中的三个数相乘:

coordinate[1]*coordinate[2]*coordinate[3]

这显然太过麻烦了,在其他的语言中,可以使用x,y,z分别等于这三个元素,再进行运算,但在python中,这个过程被大大简化了:

coordinates = [1,2,3]
x,y,z = coordinates

三. Dictionaries(字典)

字典给人的感觉像是java里的类,但是只有各种属性值,它使用{}

字典的定义格式及打印方式如下:

打印的变量必须是严格一致,大小写相同,不然会发生关键字错误.

customer = {
    "name": "John",
    "age" : 30,
    "is_verified": True
}
print(customer['name'])

# 获得额外的关键字,并给其赋值(赋值的部分可有可无,不赋值的话就是空关键字)
# 并不是真正获得关键字,print结束后这个关键字会移除
# 如果关键字已经存在,则不会赋值,而是直接返回找到的值

print(customer.get("birthdate", "Jan 1 1992"))

#获得额外的关键字,这个关键字会加入字典

customer["birthdate"] = "Jan 1 1992"

词典的价值之一在于翻译,比如将1翻译为一等。

练习:输入一个手机号码1234,将他转换为一二三四:

phone = input("Phone:")
digits_mapping = {
    "1": "One",
    "2": "Two",
    "3": "Three",
    "4": "Four"
}
for item in phone:
    print(digits_mapping[item],end=" ")
print("")

执行结果

练习二:把文字表情变成emoji

注:在windows上使用emoji可以同时按住windows键和 . 键

emojis = {
    ":(": "😢",
    ":)": "😊"
}
output = ""
words = input('>').split(" ")
for word in words:
    output += emojis.get(word,word) + " "
print(output)

其中split的功能是把由空格分隔的长字符串变为多个段字符串,所以words是一个数组。

执行结果

 

四.函数和参数

 python中的函数同样是没有括号的,判断他们同属一个函数的标准是缩进(tab)。

argument:实际参数实参 parameter:形式参数形参

def Say_Hello(name):

    print(f"Hi {name}!")
    print("Greeting!")

Say_Hello("June")

def Greet_User(first_name, last_name):

    print(f"Hi {first_name},{last_name}!")

Greet_User("June", "Pipboy")

# 参数不一定要按顺序输入,也可以手动指定。
# 但这样的话,就要为每个参数安排位置.
# 这种输入方式并不常用,但能提高程序的可读性
# 可以混用按顺序的参数和关键字的参数,关键字参数必须在顺序参数后面。

Greet_User(last_name = "Pipboy", first_name = "June")
Greet_User("June", last_name = "PipBoy")

# 与其他语言一样,函数返回值得语句是return
def square(number):
    return number**number
print(square(3))

小练习:把之前的表情练习转化成函数

def Emoji_Translation(message):
    words = message.split(" ")
    emojis = {
        ":)": "😊",
        ":(": "😂"
    }
    output = ""
    for word in words:
        output += emojis.get(word, word) + ""
    return output
message = input('>')
message = Emoji_Translation(message)
print(message)

执行结果

五.Exception(错误)

Python的错误控制是目前见过最简单的

首先执行try里的代码,发现错误时和下面except做对比,有则执行except的代码,否则就报错。

try:
    age = int(input('Age:'))
    income = 20000
    risk = income / age
    print(age)
except ValueError:
    print('Invalid value')
except ZeroDivisionError:
    print("Can't division by zero")

六.Class(类)

与Java中的类类似,一个类可以有自己的属性和方法,同时每一个实例化的类都是不一样的,可以临时给它们加上额外的属性

class Point:
# 定义所有属于Point的方法和变量.
    def move(self):
        print("move")


    def draw(self):
        print("draw")

# 实例化point,或者说创建一个point对象
point1 = Point()

# 使用point类里的方法

point1.draw()

# 为point加上额外的属性值

point1.x = 1
print(point1.x)

# 创建point2,point2不存在名为x的属性值,说明每个point类对象是独立的

try:
    point2 = Point()
    print(point2.x)
except AttributeError:
    print("point2 does not contain atttribute x")

七.Constructor(结构体)

结构体是包含各种变量的数据结构

class Point:
# 定义所有属于Point的方法和变量.
# 定义一个结构体
    def __init__(self,x , y):
        self.x = x
        self.y = y


# 创建对象并弄出结构体
point1 = Point(10,20)
print(point1.x)

小练习:定义一个Person类,包含一个name变量和talk方法

要注意的是,要调用类里的变量,必须有self.再加上变量.

class Person:
    def __init__(self,name):
        self.name = name
    def talk(self):
        print(f"{self.name} talk")

person1 = Person("Jack")

person1.talk()

八.Inheritance(继承)

与其他语言类似,Python的继承是为了避免重复的函数代码.

class Mammal:
    def walk(self):
        print("walk")


class Animal:
    def bark(self):
        print("bark")

# python 允许多继承
class Dog(Mammal,Animal) :
    # pass关键字,代表什么都没有,规避python代码体不能为空的规则
    pass


# 继承父类后能够使用父类的所有方法
puppy = Dog()
puppy.bark()
puppy.walk()

九. Modules(模块)

将程序的代码模块化,将代码分为多种输入不同的文件,可以增强代码的复用性.

在没有额外条件的情况下,模块与主文件应在同一个文件夹

#传入整个模块
import converters

#传入模块中的部分函数.
from converters import kg_to_jin

print(converters.kg_to_jin(100),"斤")

小练习:把之前的排列代码整合成一个模块utils,导入并使用.

主代码
 

import utils

nums = [4,5,6,7]

maxinum = utils.find_max(nums)

print(maxinum(nums))
print(max(nums))

utils.py

def find_max(number_list):
    maxinum = number_list[0]
    for number in number_list:
        if number > maxinum:
            maxinum = number
    return maxinum

在这个练习中,用的使maxinum而不是max,这是为了避免与常用函数重名,在python中发生这种情况时,变量名会覆盖原来的函数名,导致max()函数无法使用.

十.packages(包)

随着代码行数的增加,需要导入的模块也越来越多,为了避免一个模块太过巨大,也为了避免文件夹被各种不同的文件塞满,可以使用package将类似的模块打包。

创建一个包的方法:右键建立一个package,里面会有一个__init__.py文件,说明这是一个包.

创建一个.py文件,像一般写模块一样写代码.

Calculate.py如下

def calc_square(number):
    print(f"The square of {number} is {number**2}")


def calc_sum(number1,number2):
    print(f"The sum of {number1} and"
          f" {number2} is {number2+number1}")

 导入包中模块,函数的方法如下:

#导入包中的某一个模块
import Mypack.Calculate

Mypack.Calculate.calc_square(10)

#或者这么做
from Mypack import Calculate

Calculate.calc_square(2)

# 导入包中的某一个模块中的某几个函数
from Mypack.Calculate import calc_square,calc_sum

calc_sum(1,1)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值