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开始;第二个参数不写的话,默认到最末。
用循环在一个列表中找出最大的数:
二维列表
矩阵 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)中的name。Arguments参数(实参)是传递给形参的确定的值,比如‘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滚动
目录directory
从路径导入模块,创建一个引用目录/文件的对象,path.exists() 打印出布尔值判断有没有目录:
若没有,path.mkdir()创建目录:
path.glob (' * .py ')路径搜索: