写在前面:本文作者自学python笔记,持续更新…主要参考Eric Matthes所著的《python编程:从入门到实践》
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
大多数python程序可以直接从编译器运行,但解决的问题比较复杂时,可能需要从终端运行。
cd到对应路径后,在对应文件夹执行:
python hello_world.py
1.变量名只能包含字母、数字、下划线,但不能以数字开头。
2.变量名不包含空格
3.不能有python关键字和函数名
4.最好简短且具有描述性
5.少些小写l和大写O,像1和0
name = "ada.love"
print(name.title())
print(name.upper())
print(name.lower())
python使用加号(+)合并拼接字符串
使用制表符或换行符添加空白(增加易读性)
制表符:\t
换行符:\n
>>>print("L:\n\tpython\n\tC\n\tJS")
结果:
python
C
JS
删除字符串末尾空白用方法rstrip()
删除字符串开头空白用方法lstrip()
删除字符串两端空白用方法strip()
格式:字符串.rstrip()
print不一定非要加括号,也可以用引号和双引号,当用括号时,print被看成函数。
整数运算:加减乘除(+ - * /),乘方(**),修改运算顺序用括号。
带小数的都是浮点数。
使用str()函数将非字符串表示为字符串
python的相等(==)区分大小写
检查条件:
and 同时满足所有条件
or 满足一个条件
in 特定值已经包含在列表中
not in 特定值不包含在列表中
另:条件测试使用if-else,多重条件测试使用if-elif-else语句
#句注释
'''段注释'''
使用函数input()让用户进行输入,函数input() 让程序暂停运行,等待用户输入一些文本,获取用户输入后,Python将其存储在一个变量中,以方便使用。函数input() 接受一个参数:即要向用户显示的提示或者说明,让用户知道该如何做。
示例:
message = input("Tell me something, and I will repeat it back to you: ")
print(message)
列表:由一系列按特定顺序排列的元素组成,其中的元素可以是任何东西,元素之间可以没有任何关系。
在python中,用方括号[]来表示列表,并用逗号分隔其中的元素。
格式:
bicycles = ['treck','cannondale','ard','specail']
print(bicycles)
访问列表元素:给出 列表名称[索引] 即可:print(bicycle[0])
索引从0开始,当你请求获取列表元素时,Python只返回该元素,而不包括方括号和引号,例如:treck
增删改查:
cicycles.append('aaa') //列表末尾增加一个叫aaa的元素
cicycles.insert(1,'bbb') //在列表第二个位置插入元素bbb
del cicycles[0] //删除列表第一个元素,此方法可删除任意位置的元素
remove和pop也能删除列表元素,pop用于删除列表中任意位置元素,并让你能够接着使用它
first_owned = motorcycles.pop(0)
remove是根据值删除列表中的元素
motorcycles.remove('ducati')
若要修改列表中的元素,重新定义即可,例如:
bicycle[3] = 'panda'
一些其他对列表的操作:
使用sort()方法对列表进行永久性排序
使用sorted()方法对列表进行临时排序
使用reverse()反转列表元素的排序
使用函数len()得到列表的长度
访问列表的最后一个元素可以使用索引-1,如AAA[-1](当列表为空时会返回错误)
对列表进行切片:
切片是指对列表的部分元素进行操作,下面进行示例:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
//输出结果:['charles', 'martina', 'michael']
如果你没有指定第一个索引,Python将自动从列表开头开始;
如果没有指定第二个索引,python会让切片终止于列表末尾。
负数索引返回离列表末尾相应距离的元素,
格式:players[-3:]
复制列表时,可创建一个包含整个列表的切片,同时省略起始索引和终止索引([:] )即可。
示例:friend_foods = my_foods[:]
元组:不能修改的列表被称为元组,使用圆括号,定义元组后也可以使用索引来访问其元素,就像访问列表一样。(修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值。)
例:A = (200,50)
元组的索引也是从0开始,A[0]=200
元组是不能被修改的,但可以重新定义元组,即重新定义整个元组而非元组的某个元素。
字典是一些列 键——值 对应,每个键都与值对应,可以将任何python对象作为值,例如数字、字符串、列表等等,常用字典储存一个对象的多种信息。在Python中,字典用放在花括号{} 中的一系列键—值对表示。
格式:
A = {'color':'green','point':5}
访问字典中的值需要指定键,例如
alien_0 = {'color': 'green'}
print(alien_0['color'])
//输出:green
添加键值对时,需要依次指定字典名、用方括号括起的键和相关联的值。
alien_0 = {'color': 'green', 'points': 5}
alien_0[size] = big
print(alien_0)
//输出:
{'color': 'green', 'points': 5, 'size':'big'}
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值:
alien_0 = {'color': 'green'}
alien_0['color'] = 'yellow'
而删除键值对时,使用del,只需要指定键就行。
del alien_0['points']
嵌套:
有将一系列字典存储在列表中,或将列表作为值存储在字典中,称为嵌套。
下面进行演示,字典列表:
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}
aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
print(alien)
//结果:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
在字典中存储列表:
pizza = {
'crust': 'thick',
'toppings': ['mushrooms', 'extra cheese'],
}
for topping in pizza['toppings']:
print( topping)
//输出:extra cheese
有时,在遇到的情况比较复杂时,还可以尝试在字典中嵌套字典,如下:
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
}
}
可以使用for循环来遍历列表和元组。
格式:for i in 列表名:
函数range可以创建数值列表,例如range(1,5)代表1234
我们可以使用函数list()将range()的结果直接转换成一个列表,例如
numbers = list(range(1,6))
print(numbers)
//结果:[1,2,3,4,5]
列表解析:
列表解析将for 循环和创建新元素的代码合并成一行,并自动附加新元素,例如:
squares = [value**2 for value in range(1,11)]
print(squares)
//结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
在for循环中也能使用切片。
❶for player in players[:3]:
print(player.title())
遍历字典
遍历字典的for 循环需要明两个变量,用于存储键—值对中的键和值。
示例:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for k, v in user_0.items(): //若只想遍历键,可不加.items或将其替换成keys就行,想遍历值则换成values即可
print("\nKey: " + key)
print("Value: " + value)
//输出:
Key: last
Value: fermi
Key: first
Value: enrico
Key: username
Value: efermi
注意:遍历字典时,键—值对的返回顺序与存储顺序不同。
若想按顺序返回,可使用函数数sorted():
for name in sorted(favorite_languages.keys()):
倘若想遍历提取字典中所有的值,而涉及的值很多时,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set),它类似于列表,但每个元素都必须是独一无二的:
for language in set(favorite_languages.values()):
if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试,也被称为布尔表达式。使用条件测试可以检查感兴趣的任何条件。
if-else语句:
age = 17
if age >= 18:
print("You are old enough to vote!")
print("Have you registered to vote yet?")
else:
print("Sorry, you are too young to vote.")
print("Please register to vote as soon as you turn 18!")
简单解释一下:
如果if的条件测试通过了,就执行第一个缩进的print 语句块;
如果测试结果为False ,就执行else 代码块。
有的程序没有else,则只判断是否成功,如果没成功则跳过if代码块执行接下来的语句。
有时候会有检查超过两个的情形,为此可使用Python提供的if-elif-else 结构。
Python只执行if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试,执行紧跟在它后面的代码,并跳过余下的测试。
例如:
age = 12
if age < 4:
print("Your admission cost is $0.")
elif age < 18:
print("Your admission cost is $5.")
else:
print("Your admission cost is $10.")
//有时会使用多个eiif代码块,原理同上,但python并不要求if-elif 结构后面必须有else 代码块
for 循环用于针对集合中的每个元素都一个代码块,而while 循环不断地运行,直到指定的条件不满足为止。
示例:
number = 1
while number <= 5:
print(number)
number += 1
//此时当number大于5时while退出循环
退出循环:
break语句用于退出当前循环。任何python循环都可以使用break语句,例如for或者if。
continue语句用于返回到循环开头,并根据条件测试结果决定是否继续执行循环。
while循环也可以用来处理列表和字典,示例:
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 验证每个用户,直到没有未验证用户为止
# 将每个经过验证的列表都移到已验证用户列表中
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print("Verifying user: " + current_user.title())
confirmed_users.append(current_user)
# 显示所有已验证的用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
其余用法都差不多,这里就不一一说明了。
定义函数
先定义一个函数:
def greet_user():
"""显示简单的问候语"""
print("Hello!")
greet_user()//调用该函数,即让python执行函数的代码
python使用关键字def来定义一个函数,函数名为greet_user().
第二行被称为文档字符串,描述了函数是做什么的。文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。
函数返回的值被称为返回值。
def get_formatted_name(first_name, last_name)://该函数接受参数
"""返回整洁的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
musician = get_formatted_name('jimi', 'hendrix')//像函数传递参数
print(musician)
这里get_formatted_name的返回值就是full_name.title(),使用return返回。
将函数存储在模块中
函数的优点之一是,可以使用它们将代码块和主程序分离。
如果将函数存储在称为模块的独立文件中,再将模块导入到主程序中。
import语句允许在当前运行的程序文件中使用模块中的代码。
模块是扩展名为.py的文件,包含要导入到 程序中的代码。
例:
pizza.py
def make pizza (size, *toppings) :
"""概述要制作的比萨"""
print ("nMaking a " + str (size)+
"-inch pizza with the following toppings : ")
for topping in toppings:
print ("- " + topping)
making_pizzas.py
import pizza
pizza.make_pizza(16,'pepperoni ')
pizza.make_pizza(12,'mushrooms ', 'green peppers', 'extra cheese')
Pthon读取这个文件时,代码行import pizza 让Python打开文件pizza.py,并将其中的所有函数都复制到这个程序中。你看不到复制的代码,因为这个程序运行时,Python在幕后复制这些代码。你只需知道,在making pizzas.py中,可以使用pizza.py中定义的所有函数。
导入特定的函数:
from module_name import function_0,function_1,function_2
(也可以用*代指所有函数)
使用as给函数指定别名
from module_name import function_name as mp(mp即别名)
mp(16,'pep')
使用as给模块指定别名
import pizza as p
继承
如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。原有的类称为父类,而新类称为子类。
子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
定义子类时必须在括号内指定父类的名称。
class carsom(car)
super()函数:
super()函数将父类和子类连接起来,可以让子类调用父类的方法
对于父类的方法可以进行重写,但重写的方法要与父类同名。
导入类
随着不断给类添加功能,文件可以变得很长,为了简洁,python允许将类存储在,模块中,然后在主程序中导入模块。
格式参照导入函数。
将Car类存储在car.py的模块中
car.py
"""一个......的类"""
class Car():
"""......"""
def __init__()
创建my_car.py导入Car类
from car import Car
my_new_car=Car('audi','a4','2016')
标准库
python标准库是一组模块,安装的python都包含它。
你现在对类的工作原理已有大致的了解,可以开始使用其他程序员编写好的模块了。可使用标准库中的任何函数和类,为此只需在程序开头包含一条简单的import语句。
类编码风格
类名首字母大写且不使用下划线。
实例名和模块名都小写且单词之间加上下划线。
每个类的类定义后要用文档字符串描述类功能,模块也要包含文档字符串。
可以用空行组织代码、分割方法。用两个空格分隔类。
先导入标准库的模块,添加一个空行后再导入自己编写的模块。
用程序打开文件:
with open ( 'pi_digits.txt ') as file_object:
contents = file_object.read ()
print (contents)
函数open()表示返回一个文件的对象并将这个对象储存在后面变量中。
with表示不再需要访问文件后关闭它,python自己会关。
read()读取文件并将它储存在一个变量中。但read()到达文件末尾时会返回一个空字符串,即结尾会多出来一个空行。
若想删除可在print语句中使用rstrip()
例:print (contents.rstrip())
要让Python打开不与程序文件位于同一个目录中的文件,需要提供文件路径
可以使用相对文件路径和绝对文件路径。
with open ( 'text_files/filename.txt ' ) as file_object://相对
file _path = 'C:\Userslehmattheslother_filesitext_files\filename.txt'
with open (file_path) as file_object //绝对
for line in file_object://可以使用for循环逐行读取
open()有两个实参:第一个实参也是要打开的文件的名称。第二个实参**(‘w’)告诉Pytion。,我们要以写入模式打开这个文件。打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模式('a)或让你能够读取和写入文件的模式('r+’)**。
如果你省略了模式实参,python将以默认的只读模式打开文件。
write()方法:将字符串写入文件,但该函数不会在文本末尾添加换行符。
附加模式:如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。
每当发生让Pytion不知所措的错误时,它都会创建一个异常对象。如果你编写了处理谈异常的代码,程序格继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
处理异常:
当你认为可能发生了错误时,可编写一个try-except代码块来处理可能引发的异常。你让Pyton尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。
例:
try:
print (5/0)
except zeroDivisionError:
print ("You can't divide by zero! ")
到此就先结束了,若有不足或者不正确的地方请在评论区回复或者私信作者。
今天也是努力学习的一天!