python

第二章 变量和简单的数据类型
在python中,用引号括起的都是字符串,其中引号可以是单引号也可以是双引号。
单引号括起的字符串里面还包含有撇号(即单引号)会发生错误。
对字符串的操作:

  • title() 以首字母大写的方式显示每个单词,将每个单词的首字母都显示为大写
  • 同样样 + 连接字符串, 称为拼接。
  • 在字符串里用 \n 添加换行符,用 \t 添加制表符。
  • rstrip() 删除多余的空白
  • lstrip() 删除开头的空白
  • strip() 删除字符串两端的空白

Python将带小数点的数字都称为浮点数,它指出了一个事实:小数点可出现在数字的任何位置。
但需要注意的是结果包含的小数位数可能是不确定的。

用两个星号表示乘方: 5 ** 2 = 25

>>>0.2 + 0.1
0.300000000004
>>>3 * 0.1
0.300000000004

如果想在字符串中使用整型数变量需使用 str()函数,例如23,对机器而言它可能是数值23,也可能是字符2和字符3。
注:Python2中整数除法的结果只包含整数部分,小数部分被删除。

注释用 # 表示,#当行会被解释器忽略。

第三章 列表简介
列表是由一系列特定顺序排列的元素的组合。
列表是有序集合,可以将任何东西添加入列表,其中的元素之间可以没有任何关系。

Python中用一对 [ ] 表示列表,并用逗号来分隔其中的元素。
访问列表元素和c++相同,使用 [ 索引下标]。不同的是python可将索引指向 -1 来访问列表的最后一个元素,-2访问倒数第二个,以此类推。
仅当列表为空时,这种访问最后一个元素才会错误。

创建的列表大多是动态的,可增删元素。

  • .append() 用来往列表末尾添加元素
  • .insert() 用来往列表的任意位置添加元素
  • del 从列表删除元素,如 del list[0] //删除列表的第一个元素
  • .pop() 可删除列表末尾的元素
  • .remove(value) 根据值删除元素,删除第一个该值的元素

组织链表:

  • .sort() 永久按字母顺序排序,可传递参数 .sort( reverse = True)按字母逆序排序
  • sorted() 临时排序,不改变原始列表排列顺序
  • .reverse() 反转列表
  • len() 确定列表长度

第四章 操作列表(遍历)

magicians = ['aaa', 'bbb' ,'ccc']
for magician in magicians:
     print(magician)
     #将列表magicians的元素存储到magician,并打印
     #注意for最后的冒号,还有缩进

for alien_number in range(0,30):
    new_alien = {'color' : ''green', 'points' : '5', 'speed': 'slow'}
    aliens.append(new_alent)
    #用range函数控制循环次数

Python根据缩进判断代码行与前一个代码行的关系。常见错误;忘记缩进(expected an indented block),不必要缩进(unexpected indent)。

创建数值列表
使用range():打印1~4

for value in range(1 , 5)
     print(value)

括号为左闭合区间。
可使用list()函数将range()的结果直接转化为列表

numbers = list(range(1 ,5))

使用函数range()还可指定步长

even_number = list(range(2 , 11 ,2))
print(even_number)
结果;[2, 4, 6, 8, 10]

数字列表的简单统计计算

  • min(digits) 找出最大值
  • max(digits) 找出最小值
  • sum(digits) 求出总和

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

squares = [ value**2 for value in range(1 11)]
print(squares)
结果:[1, 4, 9, 16, 25, 36. 40, 49, 64, 81, 100]

使用列表的一部分(切片)
同样是左闭合区间

print(player[1 : 4]) //输出第二个和第三个元素
print(player[ : 4]) //输出从开头到第三个元素
print(player[1 : ])//输出从第二个元素开始的所有元素
print(player[-3 : -1])
for player in players[:3]:

复制列表:

list2 = list1[:] //不能是list1 = list2

一种复制是将list1的副本存储到list2中;第二种复制是将list1和list2关联,它们都指向同一个列表

元组:
看起来想列表,但使用圆括号而不是方括号,创建出来的列表其元素不可以修改,但可以重新定义整个元组。

dimensions =(200 ,50)//不同于列表dimensions =[200 ,50]

第五章 if语句
末尾需要加冒号

if car == 'bwm' :
   print(car.upper())

每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试或者布尔表达式

检查多个条件;使用关键字andor

age_0 >= 21 or age_1 >= 21

if-else语句:适合执行两种操作之一的情形

if age >= 18:
  print(''.....'')
else:
  print(''1111'')

可根据需要使用任意数量的elif代码块(仅适用于只有一个条件满足的情况)

if age < 4:
 price = 0
elif age < 18 :
 price = 5
elif age < 65 ;
 price = 10 
else:
 price = 5

else代码块可省略
使用多个if语句(适用于多个条件满足的情况)

第六章 字典
字典是一系列键-值对,与键关联的值可以是数字、字符串、列表乃至字典。

alien_0 = {‘color' : 'green', 'points' = 5} //键值之间用冒号隔开,键值对之间用逗号隔开

(类似c++中map的使用方法)
用键获取相关联的值

print(alien_0 ['color'])

字典是一种动态结构,可随时在其中添加键值对。注意键值对的排列顺序与添加顺序不同。
删除键值对,使用del

del alien_0 ['color']

遍历字典: .item()函数返回一个键值对列表,for依次将键和值存储在两个变量中。

for key, value in user_0.items()

键值对的返回顺序也和存储顺序不同。

.key() 函数返回键。

for name in favorite_languages.key();
     print(name.title())//将打印出所有关键字
for name in sorted(favorite_languages.keys()):
     print(name.title())   //将顺序打印出所有关键字

.value()则返回值。

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

调用set()函数将剔除重复项

6.4 嵌套
有时候需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。

#字典中存储列表
pizza = {
        'crust': 'thick',
        'toppings': ['mushrooms', 'extra cheese'],
        }
#字典中存储字典
users = {
      'aeinstein': {
            'first' : 'albert',
            'last' : 'einstein',
            'location' :‘princeton',
            },
       'musrie': {
            'first' : 'marie',
            'last‘; 'curie',
            'location': 'paris',
            },
         }
for username, user_info in users.item():
  full_name = user_info['first'] + " " + user_info['last']
  locatoin = user_info['location']         
          
            
      

注意,字典的结构应该相同,这样嵌套的字典处理起来比较容易。

第七章 用户输入和while循环
函数input()让程序暂停,等待用户输入文本。

message = input("Tell me your name")
print(message)

input接收一个参数:即要向用户显示的提示或说明,让用户知道该怎么做。输入的变量存储在变量message中。

若提示内容超过一行,可先将提示存储在一个变量中,再将变量传递给input()

使用input时,Python将用户输入解读为字符串。可使用int()函数转化为数值表示。

在Python2.7中 raw_input和现在的input功能相同,但2.7的input()将输入解读为Python代码。

使用while循环
定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志。

在任何Python循环都可以使用break语句。比如for循环。

for循环是一种遍历列表的有效形式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素,需要在遍历列表的同时修改元素最好使用while循环。

第八章 函数

函数用def开头,紧跟在del语句后面的所有缩进行构成了函数体。文档字符串的注释描述了函数是做什么的。文档字符串用三引号括起。

函数传递列表,有时候需要禁止函数修改列表,要使用切片将列表的副本传递给函数。

传递任意数量的实参: 形参前使用一个*来创建一个空元组,并将收到的实参存储在这个元组中。
如果函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。

使用任意数量的关键字实参:形参前面使用两个**来创建一个空字典,并将收到的所有有名称-值对都封装在这个字典中。

将函数存储在模块中:将函数存储在被称为模块的独立文件中,在使用import将模块导入主程序。
模块的扩展名为.py的文件

#导入整个模块
import pizza
pizza.make_pizza(16, 'pepperoni') //只导入模块需要用句点表示法


#导入特定函数
from pizza import make_pizza
make_pizza(16, 'pepperoni')


#导入模块中的所有函数
from pizza import *
make_pizza(16, 'pepperoni')

使用as给函数指定别名

from pizza import make_pizza as mp
mp(16, 'pepperoni')

使用as给模块指定别名

import pizza as p
p.make_pizza(16, 'pepperoni')//只导入模块需要用句点表示法

第九章 类
在Python中,约定熟成首字母大写的名称指的是类,小写指的是类对象

class Dog():
   """文本字符串"""
   def   __int__(self, name. age)
         """文本字符串“”“
         self.name = name
         self.age = age
   def sit(self)
         """模拟小狗被命令时蹲下”“”
         print(self.name.title() + "is now sitting.")

my dog = Dog( 'while' , 6)
my_dog.sit()
my_dog.roll_over()

第一行类的括号为空表示从空白创建这个类。
在Python2.7中创建类时需要在括号内包含单词object。

方法 __init__()等价于C++的构造函数,类内首个形参必须为self ,它是一个指向实例本身的引用。

类中的每个属性都必须有初始值,哪怕时零或者时空字符串。
也可以在方法__init__内设置默认值,若对某个属性这样做了就无需包含给它提供初始值的形参

修改属性的值

  • 直接修改属性的值(句点表示法)
  • 通过方法修改属性的值

继承:
类的创建并不一定需要从空白开始。一个类继承另一个类时将获得另一个类的所有属性和方法,同时也可以定义自己的属性和方法;原有的类称为父类,而新类称为子类。

class ElectricCar(Car):
        """   """
        def  __init__(self, make, model, year):
        """   """
          super().__init__(make, model, year)
          #super()是一个特殊的函数,帮助Python将父类和子类关联起来,父类也称为superclass
          self.battery_size = 70 // 新的属性,且为默认值
      
        def describe_battery(self):
          print("asdadasd")

my_tesla = ElectricCar( 'tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

在子类重写父类的方法,仅需在子类定义一个与父类同名的方法。

  • 导入单个类 from car import Car
  • 导入多个类 from car import Car, ElectriCar
  • 导入整个模块 import car
  • 导入模块中的所有类 from car import *

Python标准库

模块collections 中的一个类 OrderedDict:
OrdereDict的实例几乎与字典相同,区别只在于记录了键值对的添加顺序。

from collection import OrderedDict

favorite_language = OrderedDIct()

favorite_language['jen'] = 'python'

类编码风格

  1. 类名用驼峰命名法,即类名中的每个单词首字母大写,而不使用下划线。实例和模块名都是用小写和下划线。
  2. 对于每个类,都应紧跟在类定义后添加文档字符串。
  3. 在类中,可使用空行来分隔方法;而在模块中可使用两个空行来分隔类。

第十章 文件与异常
读取文件

with open('pi_digit.txt') as file_object:
     contents =file_object.read()
     print(contents)

open()接受一个要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。
也可显示调用close()关闭文件,但Python会自动在合适的时机关闭。

使用read()读取这个文件的全部内容,并将其作为长长的字符串存储在变量contents中。但read()到达文件末尾时返回一个空字符,而将这个空字符串显示出来就是一个空行。

文件路径:
Linux和OS X中的文件路径 with open('text_file/filename.txt') as file_object:
Windows中的文件路径 with open('text_file \filename.txt') as file_object:
注意Windows下为反斜杠。
绝对路径 file_path = 'C:\Users\ehmatthes\other_files\text_file\filename.txt'

逐行读取:

with open('pi_digit.txt') as file_object:
           for line in file_object:
               print(line.rstrip())

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

with open(filename) as file_object:
       line = file_object.readlines() //readlines()返回一个列表,列表存储着每行的字符串,包括开头空格
    
for line in lines:
       print(line.rstrip())  //去除开头的空格

注:读取文件时,Python将其中所有的文本都解读为字符串。

写入文件
调用open()函数,第一个实参为将打开的文件名;第二个实参为告诉Python将以什么模式打开,提供读取模式(‘r’)、写入模式(’w’)、附加模式(‘a’)或能让你读取和写入文件的模式(’r+‘)。若省略了第二个实参,Python将以默认的只读模式打开文件。

若写入的文件不在,函数open()将自动创建它。然而以写入(‘w’)模式打开文件时要千万小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件,若不想清空而时想再末尾继续写入应以附加模式(‘a’)模式打开

注:Python只能将字符串写入文本文件。要将数值存入必须使用str()。

异常:
try-except(-else)

方法split()根据一个字符串创建一个单词列表,以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中,其中这些部分可能包含标点。

try:
   --snip--
expect  FileNotFoundError:
    pass   //pass告诉Python将什么都不发生,程序正常进行,不会出现trace back
else:
   --snip--

存储数据
使用模块json来蹲存储数据。

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

import json

numbers = [2, 5, 7, 9]

filename= 'number.json'
with open(filename, 'w') as f_obj:
       json.dump(number, f_obj)
       #将列表存储到文件numbers.json中

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值