Mosh入门教程笔记Python-sheet-cheet

Variables变量

price = 10 (整数)

rating = 4.9 (浮点数)

course_name = ‘Python for Beginners’ (字符串)

is_published = True (布尔值)

Comments注释

我们使用注释向代码中添加笔记,好的注释解释如何和为什么,而不是代码做什么。使用注释向自己或其他开发人员添加提醒,或者解释以某种方式编写代码的假设和原因。

#这是一个注释,它不会被执行。

#我们的注释可以是多行。

接收输入

调用input()函数接收来自用户的输入

name=input('what is your name? ')

color=input('what is your favourite color? ')

print (name +' likes '+ color )   #用+连接

input函数始终以字符串的形式返回数据。因此,我们通过调用内置的int()函数将结果转换为整数:

birth_year=int(input ('birth_year: ') )

Strings字符串

用单引号或双引号定义一个字符串,用三引号定义多行字符串,使用方括号获得字符串中的单个字符。

course = ‘Python for Beginners’

'    gyy is nice'.strip()  # 去掉字符串开头的空格

course.split ()  # 把字符串按空格进行拆分>>>['Python', 'for', 'Beginners']

course[0]  # 返回第一个字符

course[1]  # 返回第二个字符

course[-1]  # 返回倒数第一个字符

course[-2]  # 返回倒数第二个字符

我们使用类似 course[1:5] 的符号来分割字符串:

该表达式返回从索引位置1到5(但不包括5)开始的所有字符,结果是ytho。


格式化字符串动态插入值到字符串:

name = ‘Mosh’

message = f’Hi, my name is {name}’


message.upper()    # 转化成大写

message.lower()  # 转化成小写

message.title()      # 每个单词首字母大写(标题化)

string.capword(message)  # 也是标题化

message.find(‘p’)  #查找字符串中的子串,返回第一个出现项的索引,找不到返回-1

message.replace(‘p’, ‘q’)  #找到p把他替换成q

要检查一个字符串是否包含一个字符(或一个字符序列),我们使用in操作符:

contains = ‘Python’ in course  #返回布尔值True

Arithmetic Operations算数运算

+  -  *  /

//  #除法取整

#除法取余

**  #幂x**y=x的y次方

扩展赋值运算符:

x = x + 10  等于 x += 10

优先级:

1.括号

2.指数/求幂

3.乘/除

4.加/减

math functions数学函数

四舍五入round()

绝对值abs()

导入数学模块import math

Ceil向上取整(整数部分+1,42取5),floor向下取整(42取4)

if语句

有信用=True

price=10000

if 有信用:

    首付=0.1*price

else:

    首付=0.2*price

print(f'首付:¥{首付}')

逻辑运算符

if has_high_income and has_good_credit:  #and条件均为真

if has_high_income or has_good_credit:    #or其中一个条件为真

is_day = True

is_night = not is_day    #not相当于布尔值中的false

比较运算符

a > b , a >= b  , a < b , a <= b , a == b (等于)  , a != b (不等于)

重量转换器:用户输入自己的体重,然后我们把它转换成另一个单位。

weight: 160

(L)bs or (K)g: l  #L,K不区分大小写, l是磅,k是千克,一磅是0.45kg

代码:

weight=int(input('weight: '))

unit=input('L(bs) or K(g)')

if unit.upper()=='L':

        convert_weight=weight * 0.45

      print(f'your are {convert_weight} kilos')

else:

    convert_weight=weight / 0.45

    print(f'your are {convert_weight} pounds')

while循环

猜谜游戏:假设一个秘密数字,让用户猜数,有三次机会

secret_num=9

guess_count=1

guess_limit=3

while guess_count <= guess_limit:

        guess=int(input('guess: '))

        guess_count+=1

        if guess==secret_num:

            print ('you win!')

            break

else:

        print ('sorry,you failed')

汽车游戏:

commend='' "

started=False   #最初将车设为停止状态

while True:

    commend=input('> ').lower()

    if commend=='start':

        if started:

            print('the car is already started!')

        else:                  #条件是如果车没有开

            started=True #将车的状态改为开

            print('Car started...')

    elif commend=='stop':

        if not started:

            print('the car is already stopped!')

        else:          #条件是车是开动状态

            started=False

#命令停止,所以将车状态改为停止

            print('Car stopped.')

    elif commend=='help':

        print("""

start-to start the car

stop-to stop the car

quit-to quit""")

    else:

        print("sorry,I don't understand.")

for循环

for i in range(1, 5):

print(i)

• range(5): 生成 0, 1, 2, 3, 4

• range(1, 5): 生成 1, 2, 3, 4左闭右开

• range(1, 5, 2): 生成1, 3      #第三个数是步长

假设所有商品的价格prices=[10,20,30],计算所有商品价格的总和。

prices = [10,20,30]   

total=0

for price in prices:

    total += price    #第一次price是10加入到total中,total=total+price

print (f'total: {total}')

嵌套循环

用嵌套的内部循环打印出下图所示:

代码:

第一次迭代,x的数量是5,所以内部循环被执行五次(0 1 2 3 4 。

Lists列表

numbers = [1, 2, 3, 4, 5]

numbers[0]   # 返回第一个项目

numbers[1]   # 返回第二个项目

numbers[-1]   # 返回倒数第一个

numbers[-2]  # 返回倒数第二个

切片:范围选取[  :  ]第一个参数不写的话,默认从0开始;第二个参数不写的话,默认到最末。

用循环在一个列表中找出最大的数:

随便假设一个列表num

二维列表

矩阵      matrix=[ [1,2,3],[4,5,6],[7,8,9] ]

matrix[0][1] >>>>>>> 2

matrix[0][1] = 20    #改成20

for row in matrix:        #遍历每一行

    for item in row:      #在每行中遍历每一项

        frint ( item ) >>>>> 123456789

列表函数/方法

numbers.append(6)  # 在末尾添加6

numbers.append(list)  #在numbers列表中添加list列表

numbers.extend(list)  #在numbers列表中添加list列表的内容

numbers.insert(0, 6)  # 在0的索引位置添加6

numbers.remove(6)  # 删掉 6,只删除第一次出现的元素

numbers.pop()    # 默认删掉最后一个元素,也可指定索引位置删除指定元素

numbers.clear()    # 清空列表

numbers.index(8)   # 返回首次出现的8 的索引

numbers.sort()  # 对列表排序

numbers.reverse()  # 颠倒列表,按相反顺序排列,即最后数到最前面

numbers.copy()  # 复制,得到列表的副本是独立的

50 in numbers  #判断列表中是否有某个值用In,得到布尔值

numbers.count(5)    #计算5出现的次数


删除列表中的重复值:

Tuples元祖

他是列表值,但值不能改变。一旦定义了元组,就不能添加、删除或更改现有项。

拆包unpacking:我们可以将列表元组分解成几个单独的变量

coordinates= (1, 2, 3)

x, y, z = coordinates

Dictionaries

字典Dictionaries

我们使用字典来存储键/值对

customer = {

“name”: “John Smith”,

“age”: 30,

“is_verified”: True }

我们使用字符串或数字来定义键,它们是独一无二的,值可以使用任何类型的值。

customer[“name”]  # returns “John Smith”

customer[“type”]    # 不存在的键会报错

customer.get(“type”, “silver”)   # 查找字典中的type键,如果不存在将返回silver这个值

customer[“name”] = “new name”    #更改值

例题.怎么让用户输入电话号码,输出的是英文,比如,我输入1234回车得到one two three?

函数functions

我们使用函数将代码分解成小块,这些块更容易阅读、理解和维护。如果存在bug,在一小块中找到bug要比在整个程序中找到更容易,还可以重复使用。

def greet_user (name) :

    print (f ” Hi  {name} ”)

greet_user (“John”)

Parameters参数(形参)是我们可以传递数据给函数的占位符,比如def greet_user (name)中的nameArguments参数(实参)是传递给形参的确定的值,比如‘john’。

我们有两种类型的Arguments:同时存在时,关键字参数在位置参数之后

1.位置参数:它们的位置(顺序)很重要

2.关键字参数:位置不重要,只需在它们前面加上参数名。

greet_user(“John”, “Smith”)  #两个位置参数

calculate_total(order=50, shipping=5, tax=0.1)  #关键字参数

return返回语句

我们的函数可以返回值,默认情况下,如果我们不使用return语句会返回None

def square(number):

    return number * number

print( square(2))

Exceptions异常

异常是使程序崩溃的错误,它们通常是由于错误的输入或编程错误而发生的。我们要预测和处理这些异常,以防止我们的程序崩溃。

try:

        age = int (input (‘Age: ‘)) 

        income = 20000

        risk = income / age

        print (risk)

except ValueError:    #接受错误的类型

        print (‘Not a valid number’)

except ZeroDivisionError:

        print (‘Age cannot be 0’)

面向对象:

类class

类就像是飞机图纸,对象是根据图纸造出的实际飞机,所以类定义创建对象的模板或蓝图,对象是类的实例,也就是类只有一个,对象可以有多个。每次创建新实例时,该实例遵循类的结构。当一个函数是类的一部分时,将其称为方法,我们使用类来定义除了数值 字符串等之外的新类型。

1、 定义只包含方法的类

class 类名:    #每个单词首字母大写

        def 方法1 (self):

            pass  # 占位符,如果你还没想好代码的逻辑又需要运行代码,就可以用pass占位,不然会报错

2、创建对象

对象变量=类名()

如果我想创建多个对象,就无法引用point1的参数x和y,运行下会报错:

这个时候我们使用构造函数,创建新对象时调用__init__,使用它来初始化我们的对象。

继承Inheritance

继承是一种消除代码重复的技术。我们可以创建一个基类(base class)来定义通用方法,然后让其他类继承这些方法。

class Mammal:

        def walk(self):

              print(“walk”)

class Dog(Mammal):

        def bark(self):

            print(“bark”)

dog = Dog()

dog.walk()  # 继承Mammal类中的语法结构

dog.bark()  # 在Dog类中定义

模块Modules

模块是存储函数、类的文件,一个文件就是一个模块。我们使用模块将程序分解为多个文件,这样,我们的代码还能够重复使用,不会有一个包含一百万行代码的巨大文件!导入模块有两种方式:

#查看模块中的属性

import 模块

dir(模块)

1、导入整个模块

先定义了2个函数,把他们放到一个单独的模块中(新建个文件,命名为重量转换器,记得加扩展名.py)

在另外需要的文件中导入conveters,此刻他作为一个对象不加扩展名

2、导入模块中的特定对象:

from converters import kg_to_lbs

print(kg_to_lbs(5))

求列表中的最大值:先创建一个find_max函数在一个名为utils.py的模块文件

在我们的程序文件中导入utils模块中的find_max函数

包Packages

一个项目下可以有许多文件,每个文件都是一个模块,而几个模块又可以组成一个包。所以包是包含一个或多个模块的目录/文件夹。好比超市里的服装区、食品区,服装区就是一个包,里面有鞋子,衣服,袜子...这些是一个个的模块。

在项目中新建个目录,再在该目录中新建个名为__init__的python file,即把目录转化成了包。delete该目录,再新建个同名的python package直接就能得到包,

# 导入整个模块,打印出模块中的函数

from ecommerce import sales

sales.calc_shipping()

# 导入模块中的一个函数

from ecommerce.sales import calc_shipping

calc_shipping()


python标准库

Python提供了一个巨大的模块库来执行一些常见的任务,比如发送电子邮件、处理日期/时间、生成随机值等等。

Random Module

import random  # 导入random模块

random.random()  # 返回0到1之间的浮点数

random.randint(1, 6)  # 返回1到6之间的整数


a = [12,353,65,564,75,55,75,45]

random.sample(a,3)  # 从a序列中随机选择3个元素

random.uniform(20,100)  # 生成两个数之间的随机实数

members = [‘John’, ‘Bob’, ‘Mary’]

leader = random.choice(members)  # 随机选择一个项目

掷骰子:每次运行会得到不同的值,我们定义一个类叫骰子(Dice),创建方法roll滚动

return x, y返回元祖的形式

目录directory

从路径导入模块,创建一个引用目录/文件的对象,path.exists() 打印出布尔值判断有没有目录:

若没有,path.mkdir()创建目录:

rmdir()删除目录

path.glob (' * .py ')路径搜索:

搜索所有文件

Pypi  pypi.org


你可能感兴趣的:(Mosh入门教程笔记Python-sheet-cheet)