来自《Python编程:从入门到实践》(作者 美国的Eric·Matthes)的学习笔记。主要针对Python 3。
Python根据缩进来判断代码行与前一个代码行的关系。在前面的示例中,向各位魔术师显示消息的代码行是for循环的一部分,因为它们缩进了。
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".n")
print("Thank you, everyone. That was a great magic show!") ❶
在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,字符串里面可以包含引号。
例如,要将字符串改为全部大写或全部小写,可以像下面这样做:
name = "Ada Lovelace"
print(name.upper())
print(name.lower())
使用加号(+)来合并字符串
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
message = "Hello, " + full_name.title() + "!" ❶
print(message) ❷
你还可以剔除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法lstrip()和strip()。
在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。
如果需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),它让Python将非字符串值表示为字符串,例如star(age),将年龄数值变为字符串。
在Python终端会话中执行命令import this,并粗略地浏览一下其他的指导原则。
列表
在列表中添加新元素时,最简单的方式是将元素附加到列表末尾。给列表附加元素时,append()方法它将添加到列表末尾。
使用方法insert()可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。 motorcycles = ['honda', 'yamaha', 'suzuki'] motorcycles.insert(0, 'ducati') ❶ print(motorcycles)
方法pop()可删除列表末尾的元素,并让你能够接着使用它。
方法remove()只删除第一个指定的值。
方法sort()(见❶)永久性地修改了列表元素的排列顺序。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
倒序输出列表,方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。
使用函数len()可快速获悉列表的长度。
要打印数字1~5,需要使用range(1,6):
for value in range(1,6):
print(value)
下面的示例使用列表解析创建你在前面看到的平方数列表:squares.py
squares = [value**2 for value in range(1,11)]
print(squares)
你可以生成列表的任何子集,例如,如果你要提取列表的第2~4个元素,可将起始索引指定为1,并将终止索引指定为4:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4])
这一次,切片始于'martina',终于'florence':
['martina', 'michael', 'florence']
复制列表
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:] ❶
元组看起来犹如列表,但使用圆括号而不是方括号来标识,元素的值无法修改,但可以全量地重新赋值。定义
dimensions = (200, 50) ❶
每款文本编辑器都提供了一种设置,可将输入的制表符转换为指定数量的空格。你在编写代码时应该使用制表符键,但一定要对编辑器进行设置,使其在文档中插入空格而不是制表符。
if判断
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
if car == 'bmw': ❶
print(car.upper())
else:
print(car.title())
比较
如果大小写无关紧要,而只想检查变量的值,可将变量的值转换为小写,否则会区分大小写,再进行比较:
>>> car = 'Audi'
>>> car.lower() == 'audi'
True
条件语句中可包含各种数学比较,如小于、小于等于、大于、大于等于,还可以使用and 、or进行组合判断
>>> age = 19
>>> age < 21
True
>>> age <= 21
True
>>> age > 21
False
>>> age >= 21
False
还有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in。
如果你只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句。
在if语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回True,并在列表为空时返回False。
字典
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['x_position'] = 0 ❶
alien_0['y_position'] = 25 ❷
print(alien_0)
删除字典中某键值对
del alien_0['points'] ❶
按回车键进入print语句的后续各行,并使用Tab键将它们对齐并缩进一级。这演示了一个语句如何分行
print("Sarah's favorite language is " + ❶
favorite_languages['sarah'].title() + ❷
".") ❸
现实生活中的词典,我们称为词汇表。
遍历字典
for key, value in user_0.items(): ❶
print("nKey: " + key) ❷
print("Value: " + value) ❸
K和v建议用字典内容代表的实际含义的名称代替,比如
for name, language in favorite_languages.items():
遍历字典时,会默认遍历所有的键,因此,如果将代码中的for name in favorite_languages.keys():替换为for name in favorite_languages:,输出将不变。
判断一个键是否在字典中:
if 'erin' not in favorite_languages.keys(): ❶
print("Erin, please take our poll!")
顺序输出key:
for name in sorted(favorite_languages.keys()):
字典中可以存储列表,也可以存字典。
函数
def describe_pet(animal_type, pet_name):
关键字实参
def describe_pet(animal_type, pet_name):
"""显示宠物的信息"""
print("nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')
可选参数,可以给实参放到最后,并指定一个空的默认值,让它成为可选参数。
def get_formatted_ips(corp_ip,corp_ip2=''):
形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中
def make_pizza(*toppings):
"""打印顾客点的所有配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
def build_profile(first, last, **user_info):
"""创建一个字典,其中包含我们知道的有关用户的一切"""
profile = {}
profile['first_name'] = first ❶
profile['last_name'] = last
for key, value in user_info.items(): ❷
profile[key] = value
return profile
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)
函数build_profile()的定义要求提供名和姓,同时允许用户根据需要提供任意数量的名称—值对。形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所有名称—值对都封装到这个字典中。在这个函数中,可以像访问其他字典那样访问user_info中的名称—值对。
通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数:
from module_name import function_0, function_1, function_2
给导入函数起别名
from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushrooms', 'green peppers', 'extra cheese')
你还可以给模块指定别名。通过给模块指定简短的别名(如给模块pizza指定别名p),让你能够更轻松地调用模块中的函数。相比于pizza.make_pizza(),p.make_pizza()更为简洁:
import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
类
面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有的通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
通过方法修改属性的值
class Car():
--snip--
def update_odometer(self, mileage):
"""
将里程表读数设置为指定的值
禁止将里程表读数往回调
"""
if mileage >= self.odometer_reading: ❶
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!") ❷
现在,update_odometer()在修改属性前检查指定的读数是否合理。如果新指定的里程(mileage)大于或等于原来的里程(self.odometer_reading),就将里程表读数改为新指定的里程(见❶);否则就发出警告,指出不能将里程表往回拨(见❷)。
将Car类存储在一个名为car.py的模块中,该模块将覆盖前面使用的文件car.py。从现在开始,使用该模块的程序都必须使用更具体的文件名,如my_car.py。
my_car.py
from car import Car ❶
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
导入整个模块
你还可以导入整个模块,再使用句点表示法访问需要的类。这种导入方法很简单,代码也易于阅读。由于创建类实例的代码都包含模块名,因此不会与当前文件使用的任何名称发生冲突。
下面的代码导入整个car模块,并创建一辆普通汽车和一辆电动汽车:
my_cars.py
import car ❶
my_beetle = car.Car('volkswagen', 'beetle', 2016) ❷
print(my_beetle.get_descriptive_name())
my_tesla = car.ElectricCar('tesla', 'roadster', 2016) ❸
print(my_tesla.get_descriptive_name())
在❶处,我们导入了整个car模块。接下来,我们使用语法module_name.class_name访问需要的类。像前面一样,我们在❷处创建了一辆大众甲壳虫汽车,并在❸处创建了一辆特斯拉Roadster汽车。
操作文件
下面的程序打开并读取这个文件,再将其内容显示到屏幕上:
file_reader.py
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
关键字with在不再需要访问文件后将其关闭。
绝对路径打开文件,类似于下面这样:
file_path = '/home/ehmatthes/other_files/text_files/filename.txt'
with open(file_path) as file_object:
要以每次一行的方式检查文件,可对文件对象使用for循环:
file_reader.py
filename = 'pi_digits.txt' ❶
with open(filename) as file_object: ❷
for line in file_object: ❸
print(line)
将文件pi_digits.txt的各行存储在一个列表中,再在with代码块外打印它们:
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines() ❶
for line in lines: ❷
print(line.rstrip())
写入空文件
with open(filename, 'w') as file_object: ❶
file_object.write("I love programming.") ❷
第一个实参也是要打开的文件的名称;第二个实参('w')告诉Python,我们要以写入模式打开这个文件。打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或让你能够读取和写入文件的模式('r+')。如果你省略了模式实参,Python将以默认的只读模式打开文件。
如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
最后
以上就是开心海燕最近收集整理的关于《Python编程:从入门到实践》简要笔记列表if判断字典函数类操作文件的全部内容,更多相关《Python编程内容请搜索靠谱客的其他文章。
发表评论 取消回复