标签分类
技术文章
当前位置:首页 > ▲▲▲【编程教程】▲▲▲ > python > Python编程:从入门到实践

《Python编程:从入门到实践》学习笔记

  • 发布时间:
  • 作者:码农之家原创
  • 点击:231

Python编程:从入门到实践

这篇文章主要知识点是关于Python编程,从入门到实践,学习笔记,Python编程:从入门到实践,《Python编程:从入门到实践》第十章:文件和异常 mybatis注解配置的学习笔记 Django学习笔记之Class-Based-View 《Python编程:入门到实践》第七章:用户输入和while循环 《Python编程:从入门到实践》第六章:字典 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

零基础Python编程入门与实战
  • 类型:Python大小:30.6 MB格式:PDF出版:化学工业出版社作者:吴晶晶
立即下载
Django开发从入门到实践
  • 类型:Django开发大小:193 MB格式:PDF出版:机械工业出版社作者:段艺,涂伟忠
立即下载
Python股票量化交易从入门到实践
  • 类型:Python大小:96 MB格式:PDF出版:人民邮电出版社作者:袁霄
立即下载
Java JDK 9学习笔记
Java JDK 9学习笔记完整扫描版
  • 类型:Java大小:325.3 MB格式:PDF出版:清华大学出版社作者:林信良
立即下载
编程小白的第1本Python入门书
  • 类型:Python入门大小:39 MB格式:PDF出版:人民邮电出版社作者:侯爵
立即下载
Python编程基础
Python编程基础高清完整版
  • 类型:Python编程大小:6 MB格式:PDF出版:人民邮电出版社作者:张健 张良均
立即下载
Python编程:从入门到实践
  • 类型:Python入门大小:9.85M格式:PDF出版:中国工信出版集团作者:埃里克·马瑟斯
立即下载
Python树莓派编程
  • 类型:Python编程大小:39.9 MB格式:PDF出版:机械工业出版社作者:沃尔弗拉姆 多纳特
立即下载
Python网络编程基础
  • 类型:Python基础大小:26 MB格式:PDF出版:人民邮电出版社作者:海特兰德
立即下载

1、.title() 每个单词首字母大写

.upper() 所有字母大写

.lower() 所有字母小写

2、 t 空白 转义字符只能用在""内

n 换行

3、.rstrip() 删除末尾空白

.lstrip() 删除开头空白

.strip() 删除两端空白

4、Python将带小数点的数都称为浮点数

5、Python的字符串既可以用单引号也可以用双引号 引号内部还有单引号时,只能用""

str() 可以将非字符串值表示为字符串 //将23转为'23',而不能将abc转为'abc'

Python 用+来合并字符串 "wanyu" + " " + "shuai"

创建多行字符串可以用+=运算符

prompt = "nTell me something, and I will repeat it back to you:"
prompt += "nEnter 'quit' to end the program. "

6、单行注释 #

多行注释 """ """ 或者 ''' '''

7、[ ] 表示列表 ,分隔其中元素

访问元素 正数 [ ]里从0开始 print(bike[0])

倒数 -1 print(bike[-1])

修改元素 指定列表名和元素索引并指定新值 bike[0]='abc'

添加元素 .append() 在末尾添加元素(可创建空列表然后用一系列.append()语句来添加) bike.append('bcd')

.insert( , ) 插入元素,需指定新元素的索引与值 bike.insert(0,'cde')

删除元素 del 列表名[] 删除已知位置的列表元素 del bike[0]

列表名.pop() 删除索引位置并且能够再次被调用 即弹出效果 bike.pop(2)

del和pop()使用后,列表里对应元素均被删除,但是pop()可以继续调用 根据删除后是否还需使用元素选取del和pop

列表名.remove() 删除已知元素值 bike.remove('abc')

8、列表排序(注意有的方法,有的是函数)

.sort() 永久性按字母顺序排序 bike.sort()

.sort(reverse=true) 永久性按字母倒序排序 bike.sort(reverse=true)

sorted(列表名) 临时性按字母顺序显示 print(sorted(bike))

sorted(列表名,reverse=True)) 临时性按字母倒序显示 print(sorted(bike,reverse=True))

.reverse() 永久性按列表倒序排序 bike.reverse()

9、len(列表名) 获得列表长度

10、for 变量 in 列表: for循环,且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!")

11、创建数值列表

第一步:创建了从x到y-1的数,步长为z range(x,y,z): range(1,5,1):

第二步:创建了从x到y-1的列表,步长为z 列表名=list(range(x,y,z)) message=list(range(1,5,1))

列表解析:将for循环和创建新元素的代码合并,并自动添加附加新元素 squares=[value**2 for value in range(1,11)]

12、+ - * / 加减乘除

% 求模 除2取余可以用来判断奇偶数

** 表示乘方运算

13、min(列表名) 最小值

max(列表名) 最大值

sum(列表名) 求和

14、变量名只包含字母、数字、下划线,但不能以数字打头,不能包含空格、Python关键字和函数名

15、切片:列表名[x:y] 列表里第x+1到第y个元素

x未写则表示从头开始,y未写则表示到尾结束

x、y都未写则可用于列表的复制 friends_foods=my_foods[:] 如果只是简单的把一个列表赋给一个变量,就不能得到两个列表

x若为负数,则为返回列表的后x位

遍历切片只需在切片里用for循环 for player in players[0:3];

16、()表示元组 即不可变的列表,逗号隔开元素,访问元素与列表相同

遍历元组则用for循环 for bike in bikes:

元组的元素不可以被修改,但是整个元组可以被重新赋值 bikes=(200,100) bikes=(50,100)

17、代码格式PEP8 https://www.python.org/dev/peps/pep-0008/

缩进每次用4个空格

利用空行让代码看上去整洁

==、>=、<= 两边各添加一个空格

包含多个函数时,建议每个函数之间空2行

18、if条件语句 ①if + 条件:

else:

②if + 条件:

elif + 条件:

else:

注意(1)冒号:不能丢

(2)if、else后面的语句换行写时要缩进

(3)elif可以有多句,else可以没有

(4)当需要执行多个代码块,也可以用多个if语句

requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
if 'mushrooms' in requested_toppings:
    print()     #省略没写
elif 'french fries' in requested_toppings:
    print()
elif 'extra cheese' in requested_toppings:
    print()

第一个mushrooms检测通过了,程序将跳过下面的elif结构,不再检查其他内容,所以if-elif-else结构仅适用于只有一个条件满足的情况

而想要检测多个条件满足的情况应该用多个if语句

requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
if 'mushrooms' in requested_toppings:
    print()     #省略没写
if 'french fries' in requested_toppings:
    print()
if 'extra cheese' in requested_toppings:
    print()

19、= 赋值

== 等于 检查字符是否相等时,会区分大小写,若要不区分的话,可使用.lower()

!= 不等于

and 与

or 或

in 包含在列表中

not in 未包含在列表中

>>>bikes=['a','b','c']
>>>'a' in bikes
>>>True

if + 列表名: 如果列表不为空,则会返回True;如果列表为空,返回值为False

20、布尔表达式 True / False

21、字典是放在{}里的一系列键值对,键需要加''而值不一定 键值之间用:隔开 键值对之间用,隔开

字典名={'键':值} alien_0={'color':'gerrn','points':5}

访问字典值 可依次指定字典名和放在[]的键 即 字典名['键'] print(alien_0['color'])

添加键值对 依次指定字典名、[]括起来的键和关联的值 即 字典名['键']=值

Python不关心键值对的顺序,只关心键和值的对应关系

alien_0['x_position']=0

alien_0['y_position']=25

很多时候是先建立一个空字典,再分别添加键值对 字典名={}

修改字典值 指定字典名、[]括起来的键和关联的新值 即 字典名['键']=新值 alien_0['color']='yellow'

删除键值对 del 字典名['键'] del alien_0['color']

较长的列表和字典,可以将键值对放在不同的行里,注意行前缩进

alien_0={
     'color':'gerrn',
     'points':5,
     'head':'big',
     'phil':'python'}

遍历字典中键值对 for 变量名1,变量名2 in 字典名.items(): for循环将每个键值对存储到指定的变量中,变量1为键,变量2为值

for key,value in user_0.items():
    print("nKey: " + key)
    print("Value: " + value)

遍历字典中键 for 变量名 in 字典名.keys() for name in user_0.keys():

.keys()方法实质上是返回一个列表,包含字典的所有键,因此其还可以用于判断某值是否在字典的键里

if 'erin' not in alien_0.keys():
    print()

按顺序获取返回元素可在for里调用sorted()函数 for key in sorted(alien_0.keys()):

遍历字典中值 for 变量名 in 字典名.values() for name in user_0.values():

如需去掉重复值,则在for里调用set函数 for name in set(user_0.values()):

关于键值重复的问题,键从逻辑上讲是不能重复的,但重复了不会报错,只会认为是对键重新赋值,值可以重复

22、print打印的内容较长时,也可以将内容分行写以获得整洁的代码界面

23、在列表里存储字典 将多个字典放入列表中 aliens=[alien_0,alien_1,alien_2]

在字典里存储列表 即 键 对应的 值 可以为列表

pizza = { 
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
    }

在字典里存储字典 即键对应的值可以为字典

users = {'aeinstein': {'first': 'albert',
                       'last': 'einstein',
                       'location': 'princeton'},
         'mcurie': {'first': 'marie',
                    'last': 'curie',
                    'location': 'paris'},

24、 input()函数用来等待用户输入,括号里可以为字符串变量也可以为字符串。其返回的值永远是用户输入的字符串

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

int()函数可以将input的字符串转为数值,以达到相应的要求

age=input("How old are you ?")
year=int(age)

25、用好标志(True,False)可以简化判断、循环语句

26、while循环:while 语句 :

break终止整个循环,continue退出当前循环,返回到循环开头

注意避免无限循环,可以用ctrl+c退出

27、while 列表: 或 while 变量 in 列表: 对列表的循环

while unconfirmed_users:
    current_user = unconfirmed_users.pop()
while 'cat' in pets:
    pets.remove('cat')

28、def 函数名(参数): 函数的语句要缩进

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('harry', 'hamster')

关键字实参 describe_pet(animal_type='hamster', pet_name='harry') 关键字实参即指定实参的形参类型,所以就无需区分位置

编写函数时,还可以给某一形参给定默认值,在调用函数时,就无需再指定此形参的实参,函数会使用默认值。

注意:在编写函数时,形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。

在指定默认值时,等号两边不要有空格,调用时也是如此,当然如果不适用默认值,那么就可以重新传递新的实参

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')     #使用默认值
describe_pet('harry', 'hamster')    #不使用默认值,传递位置实参
describe_pet(pet_name='harry', animal_type='hamster')   #不使用默认值,传递关键字实参
describe_pet(animal_type='hamster', pet_name='harry')   #不使用默认值,传递关键字实参

有时候需要将函数的实参变成可选的,因为函数的参数并不是所有情况下都需要,这时可以将那个不一定需要的形参设为空,即'',再来个判断语句

def get_formatted_name(first_name,last_name,middle_name='')
    if middle_name:
        print()
    else:
        print()        

函数形参过多时,导致代码长度超出80,不符合PEP8,可将 形参都放到下一行,甚至下几行,要注意缩进(2个tab)

def fuction_name(
        a,b,c,
        d,e.f):
    fuction body...

函数的返回值可以任何类型的值 结构为 return 返回内容

返回简单值 return full_name.title()

返回字典

def build_person(first_name, last_name, age=''):
    person = {'first': first_name, 'last': last_name}
    return person

函数的参数也可以是一个列表,即传递列表

def greet_users(names):
    for name in names:
        msg = "Hello, " + name.title() + "!"
        print(msg)
usernames = ['hannah', 'ty', 'margot']
greet_users(usernames)

有时候需要禁止函数修改列表,则传递列表时可以利用切片传递列表的副本,即 function_name(list_name[:]) 这样就可以保留原始列表的内容

除非有充分理由使用副本,否则少使用,提高效率。函数使用现成列表可以避免浪费时间和内存创建副本,尤其处理大型列表时

函数传递任意数量的实参,可将函数的形参设为 *名称 def pizza(*pizzas):

这样就创建了一个名为pizzas的空元组,函数能将所有收到的实参都放进这个元组里

想让函数接受不同类型的实参时,必须将任意数量实参放到最后,Python将先匹配位置实参和关键字实参,余下的实参将收集到最后一个形参中去

def make_pizza(size,*toppings)
    print()
make_pizza(16,'mushrooms','cheese')

使用任意数量的关键字实参,可传递给函数键值对,将形参设为**名称,再利用for循环

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

29、导入模块,在当前.py的目录中再创建一个.py的文件,里面可以放函数,然后在当前py里导入这个模块,语句为import 所有的import语句放在开头

再调用函数时,其前面还需要加上模块名,即 模块名.函数名

比如 pizza.py文件里定义了一个函数 def do_pizza(size, *toppings): (内容此处省略)

则在pizza.py文件的目录里的另一个文件make_pizza里可以导入模块

import pizza
pizza.do_pizza()

也可以导入指定模块的指定函数,格式为 from module_name import function_0,function_1

使用*可以导入模块中的所有函数 from module_name import *

这样在调用模块中的函数时就无需写模块.函数,直接调用函数名,但一般不推荐使用,因为如果不是自己写的模块,可能会有很多函数重名

as可以给指定模块和函数起别名,就可以用别名来调用函数和模块

from module_name import function_name as fn

import module_name as mn

30、类

创建类 class 名称(): class Dog(): 注意:名称的首字母要大写

类里可以定义不同的方法 def 方法名称():

第一个定义的方法一般是_init_() 当我们使用类时,Python会自动运行它,注意其名称,且其形参第一个为self,之后为其他信息

且用句点表示法获取值

def __init__(self, name, age):
    self.name = name
    self.age = age

之后可以定义其他的方法,如果不需要其他的信息,方法的形参只有一个self

def sit(self):
    print(self.name.title() + " is now sitting.")
def roll_over(self):
    print(self.name.title() + " rolled over!")

根据类创建实例,Python将使用实参调用类中的方法_init_()创建表示特定的实例,并自动返回给一个变量,这个变量可以自己设置

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

还可以调用类中定义的方法,仍然为句点表示法

my_dog = Dog('willie', 6)
my_dog.sit()

当需要给某个属性添加默认值时,就无需包含为它提供初始值的形参

class Car():
    def __init__(self, manufacturer, model, year):
        self.manufacturer = manufacturer
        self.model = model
        self.year = year
        self.odometer_reading = 0    #此值设为默认值,所以在设置形参时没有设置这个量

有时候需要修改属性的值,有三种方法

(1)直接修改属性的值,通过实例直接访问(基于上面定义过的方法举例)

my_new_car=Car('audi','24',2016)
my_new_car.odometer_reading=23      #这样就直接修改了默认值0

(2)通过方法修改属性的值 即定义一个修改属性的方法

def update_odometer(self,mileage):
    self.odometer_reading = mileage
my_new_car.update_odometer(23)      #也修改了默认值0

(3)通过方法对属性的值进行递增/递减

def increment_odometer(self,miles)
    self.odometer_reading += miles
my_new_car.increment_odometer(100)  #通过+=改变了属性值

继承

编写一个类的时候可以继承另一个类,原先的类称为父类,新的类称为子类。子类可以自动获得父类的全部属性和方法,同时还可以定义自己的属性和方法

创建子类时,父类必须在此文件中,且必须在子类的前面 格式为 class 子类名(父类名):

class Car():    #省略了父类的内容
class ElectricCar(Car):

子类需要写继承父类属性的语句(举例接着上面的内容) 即调用super()函数

class Car():    #省略了父类的内容
class ElectricCar(Car):
    def __init__(self, manufacturer, model, year):      #初始化父类的属性
    super().__init__(manufacturer, model, year)     #此行代码调用父类的方法_init_()

super()函数调用之后,可添加新属性和新方法

class Car():    #省略了父类的内容
class ElectricCar(Car):
    def __init__(self, manufacturer, model, year):      #初始化父类的属性
        super().__init__(manufacturer, model, year)     #此行代码调用父类的方法_init_()
        self.battery_size = 70                         #添加了子类的新属性
    def describe_battery(self):                         #添加了新方法
        print()

父类的方法没有任何用处时,你可以重写它。语句就是普通的定义

class ElectricCar(Car):
    def fill_gas_tank():                               #重新定义父类的方法
        print()

可以定义一个新的类,作为另一个类的一个属性

class Battery():
    def __init__(self, battery_size=60):
        self.battery_size = battery_size
    def describe_battery(self):
        print("This car has a " + str(self.battery_size) + "-kWh battery.")
class ElectricCar(Car):
    def __init__(self, manufacturer, model, year):
        super().__init__(manufacturer, model, year)
        self.battery = Battery()                      #属性是一个类
my_tesla = ElectricCar('tesla','model s',2016)
my_tesla.battery.describe_battery()                   #调用实例的battery属性里的方法

导入类,将一个类写在一个.py文件里,在另一个.py文件里导入这个类 格式为 from 模块名 import 类名

举例 Car类在car.py里,则在my_car.py里导入Car可写为 from car import Car

可以导入一个模块的多个类 from 模块名 import 类名1,类名2 在调用类时,直接建立实例就可以,不需要其他格式

当然也可以导入整个模块,格式为 import 模块名

但是在建立实例时,就需要用点号表达式 my_beetle = car.Car()

编写类时,应该写好注释

类中,用一个空行分隔方法

模块中,用两个空行分隔类

导入模块时,先写导入标准库的语句,再写导入自己编写的模块的语句

31、文件

读取文件 with open('路径') as 变量:

with open('pi_digits.txt') as file_object:    #关键字with在不再需要访问文件后将文件关闭
    contents = file_object.read()             #方法.read()读取文件的全部内容
    print(contents)

上例open()函数里只有文件名,是因为其和.py文件在相同目录。()里也可以放文件的绝对路径

但绝对路径在windows系统里,是用隔开,例如D:code_workPythonpi_digits.txt

过长的路径影响美观,所以可以将其放在一个变量里

file_path = 'D:code_workPythonpi_digits.txt'    #注意一定是字符串
with open(file_path) as file_project:

逐行读取文件只需使用for循环将每一行的内容放到变量中即可

for line in file_object: #每一行的内容就放到了line中

使用关键字with时,open()返回的文件对象只能在with代码块中使用,要想在代码块外访问文件内容,可将文件的各行存储在一个列表里,并在代码块外使用该列表

with open('pi_digits.txt') as file_object:
    lines = file_object.readlines()           #用方法readlines()将每一行的内容放到了lines列表中
for line in lines:
    print()

读取文本文件时,Python 将其中所有内容都解读为字符串,如果要作为数值使用,就必须用int()或者float()转换

写入文件格式为 with open(文件,‘w’) as 变量: 'r' 读取模式 'w'写入模式 'a'附加模式 'r+' 读取和写入模式 若省略模式参数,则默认为读取模式

如果写入的文件不存在,Python将自动创建它。如果写入的文件存在,那么将在返回对象前清空文件

写入的语句用放方法.write()

file_path = 'D:code_workPythonpi_digits.txt'
with open(file_path,'w') as file_object:
    file_object.write('I lOVE YOU')                   #如果要写入多行语句,则需要添加换行符号

'w'写入模式将原文件内容清空,写入新的语句,如果不想清空原文件,则可以使用'a'附加模式,写入的内容将会被添加到文件末尾

with open('programming.txt', 'a') as file_object:
    file_object.write("I also love finding meaning in large datasets.n")

32、异常

当发生错误时,如果编写了处理问题的代码,程序将继续运行,如果没有,程序将会停止,且会返回一个traceback

处理问题的代码块为 try-except

print(5/0) 将会返回一个traceback,里面的ZeroDivisionError则是一个异常对象,那么就要对异常进行处理

try:
    print(5/0)
except ZeroDivisionError:
    print("you can't divide by zero !")

找不到文件的异常对象为FileNotFoundError

filename = 'alice.txt'try:
    with open(filename) as f_obj:
        contents = f_obj.read()
except FileNotFoundError as e:
    msg = "Sorry, the file " + filename + " does not exist."
    print(msg)

try-except-else 代码块,适用于包含正常情况发生的代码

while True:
    first_number = input("nFirst number: ")
    if first_number == 'q':
        break
    second_number = input("Second number: ")
    try:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        print("You can't divide by 0!")
    else:
        print(answer)

可以将try-except-else结构写为函数,多处使用

如果希望程序在碰到异常对象时一声不吭,则可以在except的语句里写pass,当这种错误发生的时候,既没有traceback,也没有任何输出

while True:
    first_number = input("nFirst number: ")
    if first_number == 'q':
       break
    second_number = input("Second number: ")
    try:
       answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        pass
    else:
        print(answer)

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

34、模块json能将简单的Python数据结构转储到文件中,并在程序再次运行时加载文件中的数据

json模块里有json.dump()函数,接受两个实参,要存储的数据和可用于存储数据的文件对象 dump:转储

import json                                   #导入json模块
numbers = [2, 3, 5, 7, 11, 13]                #创建一个数字列表
filename = 'numbers.json'                     #指定所存储的文件名称
with open(filename, 'w') as file_object:      #以写入模式打开文件,让json能够将数据写入其中
    json.dump(numbers, file_object)           #使用json.dump()函数将数字列表存储到文件中

json模块里有json.load()函数,能够加载文件中的数据

import json                                   #导入模块
filename = 'numbers.json'                     #之前写入的文件
with open(filename) as file_object:           #读取模式打开文件
    numbers = json.load(file_object)          #使用ison.load()加载存储在文件里的信息,并将其存储到变量numbers中
print(numbers)

使用json保存用户的数据很方便,便于储存和记忆

import json

def get_stored_username():
    """Get stored username if available."""
    filename = 'username.json'
    try:
        with open(filename) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return username

def get_new_username():
    """Prompt for a new username."""
    username = input("What is your name? ")
    filename = 'username.json'
    with open(filename, 'w') as f_obj:
        json.dump(username, f_obj)
    return username

def greet_user():
    """Greet the user by name."""
    username = get_stored_username()
    if username:
        print("Welcome back, " + username + "!")
    else:
        username = get_new_username()
        print("We'll remember you when you come back, " + username + "!")

greet_user()

35、重构:将代码分为一系列完成具体工作的函数,使得代码更清晰、更易于理解、更容易扩展

36、测试代码

python编程的习惯整理

《Python编程:从入门到实践》第四章:操作列表

《Python编程:从入门到实践》第十一章:测试代码

Python编程学习之如何判断3个数的大小

《Python编程:从入门到实践》第八章:函数

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 详解vue axios封装请求状态、 vue项目中使用md5加密以及、 等python文章进一步学习,感谢大家的阅读和支持。

  • 上一篇:《Python编程:从入门到实践》第十五章:生成数据
  • 下一篇:《Python机器学习经典实例》学习感悟
  • 展开 +

    收起 -

    相关电子书
  • Python小程序编程实现一键自动整理文件解压文件
  • Android学习笔记之蓝牙功能
  • 18天学习《python编程:从入门到实践》心得笔记
  • Python编程必学书单
  • 实例详解Python编程实现生成特定范围内不重复多个随机数的2种方法
  • 《Python编程:从入门到实践》第十二章:武装飞船
  • 《Python编程:从入门到实践》第四章:操作列表
  • YII框架学习笔记之命名空间、操作响应与视图操作方法
  • 学习笔记

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明