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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352