python 从倒数第二个数反转_Python学习笔记

8da2178c8640e505af9a05c47c69747e.png

一、变量和简单数据类型

变量名只能包含字母、数字、下划线,不能以数字打头,使用小写字母。

字符串:可以使用单引号或双引号

name = "ada lovelace"

print(name.title())

方法 title() 将每个单词的首字母都改为大写

使用加号(+)来连接字符串

方法 rstrip() 删除字符串末尾空白

方法 lstrip() 删除字符串开头的空白

方法 strip() 删除字符串两端的空白

函数str(),将非字符串值表示为字符串

注释

在Python中,注释用井号(#)标识。

列表

列表由一系列按特定顺序排列的元素组成。

在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。

如:bicycles = ['trek', 'cannondale', 'redline', 'specialized']

列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python

如:bicycles[0]

列表元素的位置或索引从0开始

访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返

回最后一个列表元素。索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素:

修改列表元素:bicycles[0]='trek'

列表末尾添加元素: bicycles.append('trek')

在列表中插入元素: bicycles.insert(0, 'trek')

使用方法insert()可在列表的任何位置添加新元素,需要指定新元素的索引和值。

从列表中删除元素:del bicycles[0]

使用方法pop()删除元素:pop()可删除列表末尾的元素,并让你能够接着使用它。

列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。

如:bicycles.pop(0)

根据值删除元素:可使用方法remove()。

如:bicycles.remove('trek')

使用方法sort()对列表进行永久性排序

倒序排列,只需向sort()方法传递参数 reverse=True

如:bicycles.sort(reverse=True)

使用函数sorted()对列表进行临时排序

反转列表元素的排列顺序,可使用方法reverse()永久性地修改列表元素的排列顺序。

reverse()不是指按字母顺序相反的顺序排列元素,而只是反转列表元素的排列顺序。

确定列表的长度:使用函数len()

for循环

magicians = ['alice', 'david', 'carolina']

for magician in magicians:

print(magician)

for语句末尾的冒号告诉Python,下一行是循环的第一行。

在for循环中,想包含多少行代码都可以。

在代码行for magician in magicians后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。

函数range() 从你指定的第一个值开始,到你指定的第二个值停止,不包含第二个值

如:for value in range(1,5):

函数range()时,还可指定步长。

如:range(2,11,2) 从2开始,然后不断地加2,直到11

函数list()将range()的结果直接转换为列表。

如:numbers = list(range(1,6))

列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

如:squares = [value**2 for value in range(1,11)]

结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表切片

创建切片,指定第一个元素索引和最后一个元素的索引,不包含最后一个元素

如:players[0:3] 从第1个元素输出前三个元素

如果你没有指定第一个索引,Python将自动从列表开头开始

如:print(players[:4])

切片终止于列表末尾

如:print(players[2:]) 从第3个元素到列表末尾的所有元素

负数索引返回离列表末尾相应距离的元素

print(players[-3:])

创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。

复制列表

如:my_foods = ['pizza', 'falafel', 'carrot cake']

friend_foods = my_foods[:]

friend_foods = my_foods

这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,因此这两个变量都指向同一个列表。

元组

Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

元组看起来犹如列表,但使用圆括号而不是方括号来标识。

定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

如:dimensions = (200, 50)

print(dimensions[0])

print(dimensions[1])

设置代码格式

缩进

每级缩进都使用四个空格

行长

终端窗口每行容纳79字符

注释的行长都不超过72字符

空行

用一个空行将两部分隔开

if语句

if conditional_test:

do something

如:if car == 'bmw':

print(car.upper())

else:

print(car.title())

if-elif-else 结构

如: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.")

使用多个elif 代码块

如:if age < 4:

price = 0

elif age < 18:

price = 5

elif age < 65:

price = 10

else:

price = 5

省略else 代码块

如:if age < 4:

price = 0

elif age < 18:

price = 5

elif age < 65:

price = 10

检查特定值是否包含在列表中

使用关键字in

如:'mushrooms' in requested_toppings

检查特定值是否不包含在列表中

使用关键字not in

设置if 语句的格式

建议在如==、>=和<=等比较运算符两边各添加一个空格

字典

字典是一系列键—值对

如:alien_0 = {'color': 'green', 'points': 5}

访问字典中的值

如:alien_0['color']

添加键—值对

如:alien_0['x_position'] = 0

alien_0['y_position'] = 25

修改字典中的值

alien_0['color'] = 'yellow'

删除键—值对

如:del alien_0['points']

类似对象组成的字典

如:

favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}

遍历字典

遍历所有的键—值对,使用方法items()

如:

user_0 = {

'username': 'efermi',

'first': 'enrico',

'last': 'fermi',

}

for key, value in user_0.items():

遍历字典中的所有键,使用方法keys()

如:for key in user_0.keys():

遍历字典时,会默认遍历所有的键,省略keys()

如:for key in user_0:

按顺序遍历字典中的所有键,使用函数sorted()

如:for key in sorted(user_0.keys()):

遍历字典中的所有值,使用方法values()

如:for value in user_0.values():

剔除重复项,可使用集合(set)

for value in set(user_0.values()):

字典列表

如:

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]

在字典中存储列表

在字典中存储字典

函数input()

函数input()让程序暂停运行,等待用户输入一些文本

如:input("Tell me something, and I will repeat it back to you: ")

使用int()来获取数值输入

如:

height = input("How tall are you, in inches? ")

height = int(height)

求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数

while 循环

如:

current_number = 1

while current_number <= 5:

print(current_number)

current_number += 1

使用break 退出循环

在循环中使用continue

使用continue语句,返回到循环开头,并根据条件测试结果决定是否继续执行循环

函数

如:

def greet_user():

"""显示简单的问候语""" #注释:生成函数的文档

print("Hello!")

向函数传递信息

实参和形参

位置实参:按顺序传递参数

关键字实参

如:

describe_pet(animal_type='hamster', pet_name='harry')

describe_pet(pet_name='harry', animal_type='hamster')

默认值

如:

def describe_pet(pet_name, animal_type='dog'):

返回值

如:

def get_formatted_name(first_name, last_name):

"""返回整洁的姓名"""

full_name = first_name + ' ' + last_name

return full_name.title()

返回字典

传递列表

传递任意数量的实参

如:

def make_pizza(*toppings):

形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。

使用任意数量的关键字实参

如:

def build_profile(first, last, **user_info):

形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所有名称—值对都封装到这个字典中。

将函数存储在模块中

导入整个模块

如:

import pizza

导入特定的函数

from module_name import function_name

from module_name import function_0, function_1, function_2

如:

from pizza import make_pizza

使用as 给函数指定别名

from module_name import function_name as fn

如:

from pizza import make_pizza as mp

导入模块中的所有函数

如:

from pizza import *

创建和使用类

如:

class Dog():

"""一次模拟小狗的简单尝试"""

def __init__(self, name, age):

"""初始化属性name和age"""

self.name = name

self.age = age

def sit(self):

"""模拟小狗被命令时蹲下"""

print(self.name.title() + " is now sitting.")

def roll_over(self):

"""模拟小狗被命令时打滚"""

print(self.name.title() + " rolled over!")

#方法__init__(),类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线。

#形参self,每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

以self为前缀的变量都可供类中的所有方法使用,还可以通过类的任何实例来访问这些变量。

类,首字母大写

给类属性指定默认值

如:

class Car():

def __init__(self, make, model, year):

"""初始化描述汽车的属性"""

self.make = make

self.model = model

self.year = year

self.odometer_reading = 0 #给属性指定默认值

修改类属性的值

继承

创建子类时,父类必须包含在当前文件中,且位于子类前面。

定义子类时,必须在括号内指定父类的名称。

如:

class ElectricCar(Car):

"""电动汽车的独特之处"""

def __init__(self, make, model, year):

"""初始化父类的属性"""

super().__init__(make, model, year) #初始化父类的属性

重写父类的方法

导入类

Python允许你将类存储在模块中,然后在主程序中导入所需的模块。

如:from car import Car

从一个模块中导入多个类

如:from car import Car, ElectricCar

导入整个模块

如:import car

导入模块中的所有类 #不推荐使用

如:from module_name import *

文件和异常

从文件中读取数据

读取整个文件

如:

with open('pi_digits.txt') as file_object:

contents = file_object.read()

print(contents)

文件路径

如:

file_path = 'C:Usersehmatthesother_filestext_filesfilename.txt'

with open(file_path) as file_object:

逐行读取

如:

with open(filename) as file_object:

for line in file_object:

print(line)

创建一个包含文件各行内容的列表

使用关键字with时,open()返回的文件对象只在with代码块内可用。

如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中。

如:

with open(filename) as file_object:

lines = file_object.readlines()

for line in lines:

print(line.rstrip())

使用文件的内容

写入文件

写入空文件

如:

filename = 'programming.txt'

with open(filename, 'w') as file_object:

file_object.write("I love programming.")

# 以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。

写入多行

如:

with open(filename, 'w') as file_object:

file_object.write("I love programming.")

file_object.write("I love creating new games.")

附加到文件

如:

with open(filename, 'a') as file_object:

file_object.write("I also love finding meaning in large datasets.n")

file_object.write("I love creating apps that can run in a browser.n")

异常

异常是使用try-except代码块处理的。

使用try-except 代码块

如:

try:

print(5/0)

except ZeroDivisionError:

print("You can't divide by zero!")

else 代码

如:

try:

answer = int(first_number) / int(second_number)

except ZeroDivisionError:

print("You can't divide by 0!")

else:

print(answer)

分析文本

方法split(),它根据一个字符串创建一个单词列表

方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。

如:

>>> title = "Alice in Wonderland"

>>> title.split()

['Alice', 'in', 'Wonderland']

失败时一声不吭

在except代码块中明确地告诉Python什么都不要做。Python有一个pass语句

如:

try:

--snip--

except FileNotFoundError:

pass

else:

--snip--

存储数据

使用json.dump()和json.load()

函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。

如:

import json

numbers = [2, 3, 5, 7, 11, 13]

filename = 'numbers.json'

with open(filename, 'w') as f_obj:

json.dump(numbers, f_obj)

函数json.load()将文件读取到内存中

with open(filename) as f_obj:

numbers = json.load(f_obj)

重构

将代码划分为一系列完成具体工作的函数。这样的过程被称为重构。

测试代码

单元测试和测试用例

Python标准库中的模块unittest提供了代码测试工具。

各种断言方法 Python在unittest.TestCase类中提供了很多断言方法。

如:

import unittest #导入了测试模块unittest

from name_function import get_formatted_name

class NamesTestCase(unittest.TestCase): #单元测试必须继承unittest.TestCase类

"""测试name_function.py"""

def test_first_last_name(self): #所有以test_打头的测试方法都将自动运行

"""能够正确地处理像Janis Joplin这样的姓名吗?"""

formatted_name = get_formatted_name('janis', 'joplin')

#断言方法 调用unittest的方法assertEqual()

self.assertEqual(formatted_name, 'Janis Joplin')

unittest.main() #unittest.main()让Python运行这个文件中的测试

测试类

方法setUp()

方法setUp(),Python将先运行它,再运行各个以test_打头的方法。

如:

import unittest

from survey import AnonymousSurvey

class TestAnonymousSurvey(unittest.TestCase):

"""针对AnonymousSurvey类的测试"""

def setUp(self): #方法setUp()

"""

创建一个调查对象和一组答案,供使用的测试方法使用

"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值