python如何去掉方括号_python从入门到实战外星人入侵

本教程详细介绍了Python编程的基础,包括软件安装、字符串操作、列表操作、元组操作、字典操作、循环、函数和面向对象编程。通过实例讲解了如何处理数据、操作文件和异常处理,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3e1aedc68afe0a1c6edde77f5e4a0a32.png

## 第一章 软件安装与简单操作

## 第二章 字符串操作总结

- 方法

方法是Python可对数据执行的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成,这种信息是在括号内提供的。例如使用title方法修改字符串大小写

`name="shizy"`

`print(name.title())`

输出Shizy,注意这里方法括号里面没有参数。方法title首字母大写,upper把所有字母大写,lower所有字母小写。

- python使用+号拼接字符串

- n,t分别为字符串添加换行,制表位。

- 方法rstrip()删除字符串右边空白strip是英文剥光的意思。左空白lstrip,左右空白全删除strip。

- 函数str()实现数到字符串转换

## 第三章 列表操作(元素可修改)

- 列表是有序的元素组合。用方括号[]表示,用逗号分隔

`liebiao1=['A','B','C','d']`

- 访问列表(第一个元素索引号0)

`print(libiao1[0])`

- 修改删除添加元素

修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。例如修改第一个元素为a

`libiao1[0]='a'`

- 末尾添加元素(利用方法append())

`libiao1.append('e')`

- 插入元素到任意位置(利用方法insert())

`libiao1.insrt(1,'b')`#在第二个位置插入b元素

#### 删除元素 ####

- 如果知道元素位置(del语句):`del libiao1[0]`

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

motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles)

popped_motorcycle = motorcycles.pop()

print(motorcycles)

print(popped_motorcycle)

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

- 如果知道元素值可以使用remove()方法`motorcycles.remove('ducati') print(motorcycles)`

####元素排序####

- 永久排序sort()方法,排序后原始列表顺序永久修改。还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort() 方法传递参数`reverse=True`

- 临时排序 sorted()函数(不是方法)

- 倒叙打印列表 使用reverse()方法

- 函数len()获取列表长度,以下代码返回4

cars = ['bmw', 'audi', 'toyota', 'subaru']

len(cars)

## 第四章 操作列表

- 遍历列表(冒号与缩进)

liebiao1=['A','B','C','d']

for i in liebiao1:

print(i)

- range(x0,xm,dx)函数不包括最后一个值,步长dx

for value in range(1,5):

print(value)

- list()函数将range结果转换列表格式

- min(),max(),sum()函数对列表操作

- 列表解析:列表解析 将for 循环和创建新元素的代码合并成一行,并自动附加新元素,请注意,这里的for 语句末尾没有冒号。

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

print(squares)

- 切片(使用列表的一部分):如果你没有指定第一个索引,将自动从列表开头开始;如果你没有指定第二个索引,将自动从列表到结尾。

print(libiao1([0:2]))

- 列表复制,这么操作的目的是为了得到新列表并进行其他操作,否则会修改掉原列表。

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

❶ friend_foods = my_foods[:]

my_foods.append('cannoli')

friend_foods.append('ice cream')

print("My favorite foods are:")

print(my_foods)

print("nMy friend's favorite foods are:")

print(friend_foods)

上面代码就可以在my_friend添加ice_cream而不会修改原始列表。但是注意1处冒号。去掉冒号两个列表都被修改。

## 第五章 元组操作(tuple不可修改元素)

- 使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

dimensions = (200, 50)

print(dimensions[0])

print(dimensions[1])

- 遍历元组

for dimension in dimensions:

print(dimension)

- 修改元组变量: 虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:

dimensions = (200, 50)

print("Original dimensions:")

for dimension in dimensions:

print(dimension)

dimensions = (400, 100)

print("nModified dimensions:")

for dimension in dimensions:

print(dimension)

## 第六章 If 语句用法(末尾冒号)

- 假设你有一个汽车列表,并想将其中每辆汽车的名称打印出来。对于大多数汽车,都应以首字母大写的方式打印其名称,但对于汽车名'bmw' ,应以全大写的方式打印。下面的代码遍历一个列表,并以首字母大写的方式打印其中的汽车名,但对于汽车名'bmw' ,以全大写的方式打印:

cars = ['audi', 'bmw', 'subaru', 'toyota']

for car in cars:

if car == 'bmw':

print(car.upper())

else:

print(car.title())

- 检查是否不相等:要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中的惊叹号表示不等。

- 检查多个条件: and 和or。

- 检查特定值是否包含在列表中(in)

requested_toppings = ['mushrooms', 'onions', 'pineapple']

'mushrooms' in requested_toppings

-  检查特定值是否不包含在列表中 (not in)

-  在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else 语句

-  if-elif-else 结构

-  使用多个elif 代码块

-  确定列表不是空的:对于处理的每个列表都做了一个简单的假设,即假设它们都至少包含一个元素。我们马上就要让用户来提供存储在列表中的信息,因此不能再假设循环运行时列表不是空的。有鉴于此,在运行for 循环前确定列表是否为空很重要

## 第七章 字典操作(相当于C语言结构体,花括号表示)

- 在Python中,字典是一系列键—值对 。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值

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

- 键和值之间用冒号分隔,而键—值对之间用逗号分隔

- 访问字典的值:要获取与键相关联的值,可依次指定字典名和放在方括号内的键

alien_0 = {'color': 'green'}

print(alien_0['color'])

- 添加键—值对:字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。

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

print(alien_0)

alien_0['x_position'] = 0

alien_0['y_position'] = 25

- 修改字典中的值:要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

- 删除键—值对:对于字典中不再需要的信息,可使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。

del alien_0['points']

print(alien_0)

-  遍历字典 所有的键—值对(利用liems()方法)

user_0 = {

'username': 'efermi',

'first': 'enrico',

'last': 'fermi',

}

for key, value in user_0.items():

print("nKey: " + key)

print("Value: " + value)

- 遍历字典中的所有键(利用方法keys())

- 按顺序遍历字典中的所有键:字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常你想要的只是获取与键相关联的正确的值。要以特定的顺序返回元素,一种办法是在for 循环中对返回的键进行排序。为此,可使用函数sorted() 来获得按特定顺序排列的键列表的副本。

- 遍历字典中的所有值,可使用方法values()。对于有很多相同值的重复项可以结合set函数

favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}

print("The following languages have been mentioned:")

for language in set(favorite_languages.values()):

print(language.title())

- 字典列表的嵌套使用

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)

- 字典字典嵌套使用

## 第八章 while循环

- 函数input():函数input() 接受一个参数:即要向用户显示的提示 或说明,让用户知道该如何做.

message = input("输入一个整数:")

print(message)

- 使用int() 函数来获取数值输入。使用函数input() 时,Python将用户输入解读为字符串。利用int转换为整数。

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

- while循环

current_number = 1

while current_number <= 5:

print(current_number)

current_number += 1

- 使用break 退出循环

while True:

city = input(prompt)

if city == 'quit':

break

else:

print("I'd love to go to " + city.title() + "!")

- 在循环中使用continue:要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break 语句那样不再执行余下的代码并退出整个循环

## 第九章 函数

- 定义函数

def greet_user():

"""显示简单的问候语"""

print("Hello!")

greet_user()

这个示例演示了最简单的函数结构。使用关键字def 来告诉Python你要定义一个函数。这是函数定义 ,向Python指出了函数名,还可能在括号内指出函数为完成其

任务需要什么样的信息。在这里,函数名为greet_user() ,它不需要任何信息就能完成其工作,因此括号是空的(即便如此,括号也必不可少)。最后,定义以冒号结尾。紧跟在def greet_user(): 后面的所有缩进行构成了函数体。❷处的文本是被称为文档字符串 (docstring)的注释,描述了函数是做什么的。文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。

- 函数传递参数:向函数传递信息(实参和形参)

def greet_user(username):

"""显示简单的问候语"""

print("Hello, " + username.title() + "!")

greet_user('jesse')

- 位置实参,根据参数顺序指定参数:是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。

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')

- 编写函数时,可给每个形参指定默认值 。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。

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

"""显示宠物的信息"""

print("nI have a " + animal_type + ".")

print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet(pet_name='willie')

- 函数返回值

def get_formatted_name(first_name, last_name):

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

full_name = first_name + ' ' + last_name

return full_name.title()

- 传递列表:向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对象(如字典)。在函数中修改列表将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性。

- 传递任意数量的实参(形参*toppings ,但不管调用语句提供了多少实参,这个形参都将它们统统收入囊中)。形参名*toppings 中的星号让Python创建一个名为toppings 的空元组,并将收到的所有值都封装到这个元组中。

def make_pizza(*toppings):

"""打印顾客点的所有配料"""

print(toppings)

make_pizza('pepperoni')

make_pizza('mushrooms', 'green peppers', 'extra cheese')

- 结合使用位置实参和任意数量实参。如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

-  导入整个模块。要让函数是可导入的,得先创建模块。模块 是扩展名为.py的文件,包含要导入到程序中的代码。

-  导入特定的函数`from module_name import function_name`, `from module_name import function_0, function_1, function_2`

-  使用as 给函数指定别名

-  导入模块中的所有函数:使用星号(* )运算符可让Python导入模块中的所有函,`from pizza import *`

## 第十章 python类(面向对象)慢慢体会哦

- 创建和使用类

使用类几乎可以模拟任何东西。下面来编写一个表示小狗的简单类Dog ——它表示的不是特定的小狗,而是任何小狗。对于大多数宠物狗,我们都知道些什么呢?它们都有名字和年龄;我们还知道,大多数小狗还会蹲下和打滚。由于大多数小狗都具备上述两项信息(名字和年龄)和两种行为(蹲下和打滚),我们的Dog 类将包含它们。这个类让Python知道如何创建表示小狗的对象。编写这个类后,我们将使用它来创建表示特定小狗的实例。

- 创建Dog 类

根据Dog 类创建的每个实例都将存储名字和年龄。每条小狗蹲下(sit())和打滚(roll_over())的能力.

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!")

在❶处,我们定义了一个名为Dog 的类。根据约定,在Python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类.

- 类中的函数称为方法. 类中的函数称为方法 ;你前面学到的有关函数的一切都适用于方法,就目前而言,唯一重要的差别是调用方法的方式。❸处的方法__init__() 是一个特殊的方法,每当你根据Dog 类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。

- 我们将方法__init__() 定义成了包含三个形参:self 、name 和age 。在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。我们将通过实参向Dog() 传递名字和年龄;self 会自动传递,因此我们不需要传递它。每当我们根据Dog 类创建实例时,都只需给最后两个形参(name 和age )提供值。

- Dog 类还定义了另外两个方法:sit() 和roll_over() (见❺)。由于这些方法不需要额外的信息,如名字或年龄,因此它们只有一个形参self

- 根据类创建实例

可将类视为有关如何创建实例的说明。Dog 类是一系列说明,让Python知道如何创建表示特定小狗的实例。下面来创建一个表示特定小狗的实例

my_dog = Dog('willie', 6)

❷ print("My dog's name is " + my_dog.name.title() + ".")

❸ print("My dog is " + str(my_dog.age) + " years old.")

这里使用的是前一个示例中编写的Dog 类。在❶处,我们让Python创建一条名字为'willie' 、年龄为6 的小狗。遇到这行代码时,Python使用实参'willie' 和6 调用Dog 类中的方法__init__() 。方法__init__() 创建一个表示特定小狗的示例,并使用我们提供的值来设置属性name 和age 。方法__init__() 并未显式地包含return 语句,但Python自动返回一个表示这条小狗的实例。我们将这个实例存储在变量my_dog 中。在这里,命名约定很有用:我们通常可以认为首字母大写的名称(如Dog )指的是类,而小写的名称(如my_dog )指的是根据类创建的实例。

- 访问属性.要访问实例的属性,可使用句点表示法。在❷处,我们编写了如下代码来访问my_dog 的属性name 的值:

- 调用方法

my_dog = Dog('willie', 6)

my_dog.sit()

my_dog.roll_over()

要调用方法,可指定实例的名称(这里是my_dog )和要调用的方法,并用句点分隔它们。遇到代码my_dog.sit() 时,Python在类Dog 中查找方法sit() 并运行其代码。

- 使用类和实例

- 继承:编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承 。一个类继承 另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类 ,而新类称为子类 。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

- 下面来创建一个简单的ElectricCar 类版本,它具备Car 类的所有功能:

class Car():

"""一次模拟汽车的简单尝试"""

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

self.make = make

self.model = model

self.year = year

self.odometer_reading = 0

def get_descriptive_name(self):

long_name = str(self.year) + ' ' + self.make + ' ' + self.model

return long_name.title()

def read_odometer(self):

print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):

if mileage >= self.odometer_reading:

self.odometer_reading = mileage

else:

print("You can't roll back an odometer!")

def increment_odometer(self, miles):

self.odometer_reading += miles

❷ class ElectricCar(Car):

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

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

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

❹ super().__init__(make, model, year)

❺ my_tesla = ElectricCar('tesla', 'model s', 2016)

print(my_tesla.get_descriptive_name())

首先是Car 类的代码(见❶)。创建子类时,父类必须包含在当前文件中,且位于子类前面。在❷处,我们定义了子类ElectricCar 。定义子类时,必须在括号内指定父类的名称。方法__init__() 接受创建Car 实例所需的信息(见❸)。❹处的super() 是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar 的父类的方法__init__() ,让ElectricCar 实例包含父类的所有属性。父类也称为超类 (superclass),名称super因此而得名。

## 第十一章 文件操作

-  读取整个文件。要读取文件,需要一个包含几行文本的文件。下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行:

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

contents = file_object.read()

print(contents)

- 函数open()接受一个参数:要打开的文件的名称。函数open() 返回一个表示文件的对象。在这里,open('pi_digits.txt') 返回一个表示文件pi_digits.txt 的对象;Python将这个对象存储在我们将在后面使用的变量中。关键字with 在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close() ;你也可以调用open() 和close() 来打开和关闭文件,但这样做时,如果程序存在ug,导致close() 语句未执行,文件将不会关闭。

-  逐行读取

filename = 'pi_digits.txt'

❷ with open(filename) as file_object:

❸ for line in file_object:

print(line)

-文件写入:要将文本写入文件,在调用open() 时需要提供另一个实参,告诉Python你要写入打开的文件

filename = 'programming.txt'

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

❷ file_object.write("I love programming.")

在这个示例中,调用open() 时提供了两个实参(见❶)。第一个实参也是要打开的文件的名称;第二个实参('w' )告诉Python,我们要以写入模式 打开这个文件。打开文件时,可指定读取模式 ('r' )、写入模式 ('w' )、附加模式 ('a' )或让你能够读取和写入文件的模式('r+' )。如果你省略了模式实参,Python将以默认的只读模式打开文件。

如果你要写入的文件不存在,函数open() 将自动创建它。然而,以写入('w' )模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。

-  写入多行。要让每个字符串都单独占一行,需要在write() 语句中包含换行符n。

-  异常处理

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

-  存储数据 JSON

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

----------

#*------------------实战项目-----------------*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值