python编程:从入门到实践--学习笔记--基础知识

python编程:从入门到实践--学习笔记--基础知识

  • 第二章:变量和简单数据类型
  • 第三章:列表简介
  • 第四章:操作列表
  • 第五章:if语句
  • 第六章:字典
  • 第七章:用户输入和while循环
  • 第八章:函数
    • 传递实参
  • 第九章:类
    • 继承
  • 第十章:文件和异常
    • 从文件中读取数据
    • 写入文件
    • 异常
    • 存储数据
  • 第十一章:测试代码

第二章:变量和简单数据类型

修改字符串大小name.title(),name.upper(),name.lower()
合并字符串name = f_name + " " + l_name
使用制表符和换行符name = "\tyes\t\nhhh"
删除空白格name.rstrip(),name.lstrip()
字符串使用方法后,自身不改变,需重新赋值
数字转字符串进行字符串合并

age = 23
name = str(age) + "happy"

第三章:列表简介

列表表示:用[ ]表示列表,并用逗号来分隔其中的元素。
列表打印:直接打印会打印出列表的内部表示,包括方括号,用户不接受这种输出。
访问列表元素:列表元素是有序的,使用索引访问。

#设定name是一个列表
name[0] = "hhh"#修改列表元素
name.append("yes")#在列表末尾加入元素
name.insert(0,"lk")#在索引处插入元素
del name[0]#删除索引元素
ras = name.pop()#删除列表最后元素,并将元素弹出,可继续使用
print(ras)
ras = name.pop(0)#删除索引处元素并返回
name.remove("hhh")#根据元素来删除,若要删除的元素有多个,只删除第一个,循环判断第7章

ras = name.pop(0),方法直接传一个数字,不需要方括号,因为方括号多余
使用sort()方法进行永久性排序

cars.sort()#从小到大
cars.sort(reverse=True)#反转

使用sorted()方法进行临时排序print(sorted(cars)),不会改变列表本身的顺序,也可传递反转参数。
使用reverse()方法永久性反转排序cars.reverse()
确定列表长度len(cars),长度计算从1开始。

第四章:操作列表

遍历列表for car in cars:,每一次for循环后会执行换行操作。
range(1,n)打印1到n-1的数字
创建数字列表:name = list(range(1,6)),添加步长range(1,11,2)
列表统计计算min(name),max(name),sum(name).
列表解析nihao = [name+"hello!" for name in names]
列表切片name[0:3],和range()一样,差一行为
遍历切片for name in names[:3]:
元组:不可变列表称为元组,用()来标识。
元组内的元素不可以改变,使用索引值访问。
只含一个元素的元组表示为('color',),要记得加逗号。

di = (200,30)
print(di[0])

元组遍历:使用for循环,和列表一样。
元组内的元素不可修改,但是元组变量可以修改。

di = (200,50)
di = (250,90)#是合法的

第五章:if语句

if name in names:
if name not in names:
if a==0 and b==9:
if age<4:
elif age<18:
else:

第六章:字典

建立字典字典顺序不重要,字典遍历顺序可能会变换

Yang = {}
Yang['color'] = 'yellow'
Yang['hight'] = 170
Yang['age'] = '21'
Yang = {'color': 'yellow', 'hight': 170, 'age': '21'}
del Yang['color']#删除字典值
Yang['color'] = 'white'#修改字典值

遍历字典for k,v in Yang.items():
遍历字典的所有键for k in Yang.keys():,按顺序遍历for k in sorted(Yang.keys()):
遍历字典的所有值for v in Yang.values():
剔除遍历值的重复项for v in set(Yang.values()):,使用set()方法。
字典列表:用列表存储3个外星人,每个外星人是一个字典,得到字典列表。

alien_0 = {'color':'green','points':5}
alien_1 = {'color':'yellow','points':10}
alien_2 = {'color':'red','points':15}
aliens = [alien_0,aline_1,alien_2]

字典中存储列表:一个披萨的材料属性需要用列表。

favorite_languages = {
    'jen':['python','ruby'],
    'sarah':['c'],
    'edward':['ruby','go'],
    'phil':['python','haskell'],
}
for name,languages in favorite_languages.items():
    for language in languages:

字典中存储字典:略

第七章:用户输入和while循环

用int()获取数值输入:input()函数获取输入,输入整数会因为括号变为字符串。

age = input('please tell me your age:')
age = int(age)

whlie基本循环,break,continue:略
使用while在列表间移动元素:对未验证用户列表进行验证后将用户添加到已验证用户列表。while对列表循环的语法

unconfirmed_users = ['alice','brain','candance']
confirmed_users = []
while unconfirmed_users:
    current_user = unconfirmed_users.pop()
    confirmed_users.append(current_user)

删除包含特定值的所有元素:与remove()函数结合使用。

pets = ['dog','cat','dog','goldfish','cat','rabbit','cat']
while 'cat' in pets:
    pets.remove('cat')

使用用户输入来填充字典

responses = {}
polling_active = True
while polling_active:
    name = input("what's your name?")
    response = input("which mountain would you like to climb?")
    responses[name] = response
    repeat = input("do you have friend want to say(yes/no)")
    if repeat == 'no':
        polling_active = False
for name,response in responses.items():

第八章:函数

定义函数的格式

def greet_user():
    print('HELLO!')
greet_user()

形参和实参:形参是定义函数时括号内的参数,实参是调用函数时括号内的参数。

传递实参

位置实参:位置对应好传递参数。

def describe_pet(animal_type,pet_name):
    #函数体
describe_pet('hamster','harry')

关键字实参:调用函数时写清楚形参对应的实参,用等号连接。

def describe_pet(animal_type,pet_name):
    #函数体
describe_pet(animal_type='hamster',pet_name='harry')

默认参数:一般将默认参数放在最后,在调用时不用实参不用写。

def describe_pet(animal_type,pet_name='hamster'):
    #函数体
describe_pet(animal_type='harry')#关键字参数
describe_pet('harry')#位置参数

让实参变成可选的:把某些实参定义为空字符串,并在用户没有提供该实参时不使用。

def get_formatted_name(first_name,last_name,middle_name=''):
    if middle_name:
        #函数体
    else
        #函数体
    return 0

函数返回值为字典:函数可以返回任意类型的值,包括列表和字典。

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

跳出循环while True:结合break随时跳出循环。
传递列表:列表做形参直接用名字。

def greet_users(names):
    for name in names:
        #函数体
usernames = ['yang','han']
greet_users(usernames)

禁止函数修改列表:要使函数不改变列表,则要将列表的副本传入函数。列表名的切片表示副本。函数内可使用该副本,但函数外该列表不变。

print_models(unprinted_designs[:],completed_models)

传递任意数量的实参:形参名*toppings中的星号可以创建一个空元组,并将收到的所有值都封装到这个元组中,即便只收到一个值。

def make_pizza(*toppings):
    print(toppings)
    for topping in toppings:#元组遍历与列表一样
    	print(topping)
make_pizza('mush','pepper','cheese')

使用任意数量的关键字实参:两个星号**user_info表示字典形键值对参数,数量随输入变化,下面的函数调用包含两个键值对location='pri'fie='jklld'

def build_profile(first,last,**user_info):
    profile = {}
    profile['fist_name'] = first
    profile['last_name'] = last
    for key,value in user_info:
        profile[key] = value
    return profile
user_profile = build_profile('albert','einstein',location='pri',fie='jklld')

将函数存储在模块:as表示别名。

import model_name as#导入模块,调用-模块.函数
from model_name import function_name as#直接用函数
from model_name import *#导入模块全部函数

第九章:类

面对对象编程是最有效的软件编写方法之一,根据类创建对象称为实例化,对象即世间万物。
创建Dog类:Dog处括号内为空是因为要从空白创建这个类,有的类会继承则括号内存有其父类,就不是从空白开始创建类。方法__init__()会在实例创建时自动调用,类中的函数称为方法。

class Dog():
    def __init__(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.name , my_dog.sit()
修改实例的属性:改变创建的实例my_dog的属性,my_dog.name = 'hhh'
给属性指定默认值

class Dog():
    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.height = 40

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

修改属性的值:可以直接修改,或者在类内定义函数进行调用后修改。

继承

编写类时,并非总是要从空白开始,一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类称为父类,新的类为子类
建立子类时首先要初始化父类的属性super()是将父类与子类关联起来的函数,父类称为超类。

class Dog():
    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.height = 40

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

class samoye(Dog):
    def __init__(self,name,age):
        super.__init__(name,age)

重写父类的方法:对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。则可以在子类中定义与重写的父类方法同名的方法,这样,python将不会考虑这个父类方法,而只关注在子类中定义的相应方法。
将实例用作属性:将Move类作为Dog类属性。

class Dog():
    def __init__(self,name,age,run):
        self.name = name
        self.age = age
        self.height = 40
        self.run = Move()

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

class Move():
    def __init__(self,run_speed=100):
        self.run_speed = run_speed

第十章:文件和异常

从文件中读取数据

要使用文本文件中的信息,首先需要将信息读取到内存中,可以一次性读取文件的全部内容,也可以每次一行逐步读取
下列读取文件如下

3.1415926535
  897938949
  783266748

一次性读取整个文件:首先用open()函数打开文件,可与close()函数匹配使用,但会很容易出现配对错误,所以使用关键字with,使得python会在合适的时候自动将文件关闭。使用方法read()读取文件的全部内容,但读取到文件末尾会返回一个空字符串,print()出来是空行,用rstrip()将空字符串消除。

with open('hhh.txt') as file_ob:
    concents = file_ob.read()
    print(concents.rstrip())

文件路径:若要读取的文件存于和程序文件一样的目录中,则可直接读取文件名,用单引号包括。若不在则用类似'C:\Users\ehma\otherfiles\filename.txt'Windows中需要用反斜杠。
逐行读取:在读取文件时,每行末尾都有一个看不见的换行符,print()语句也会加上一个换行符,因此每行末尾有两个换行符,可用rstrip()消除。

with open('hhh.txt') as file_ob:
    for line in file_ob:
        print(line.rstrip())

创建一个包含文件各行内容的列表:readlines方法读取每一行保存于列表中

with open('hhh.txt') as file_ob:
    lines = file_ob.readlines()
for line in lines:
    print(line.rstrip())

使用文件中的内容时,都是以字符串的形式,若要转化可用int()使得内容可以进行数学运算

写入文件

写入文件首先要打开文件,使用open()方法open('hhh.txt','r'),关于open()第二个参数如下:
‘r’:只读形式打开,指针指向内容最开头,文件为空则创建。
’r+‘:只读写形式打开,指针指向内容最开头,文件为空则创建。
‘w’:只写形式打开,指针指向最开头,文件为空则创建,文件不为空则会覆盖原有内容。
’w+‘:只读写形式打开,指针指向最开头,文件为空则创建,文件不为空则会覆盖原有内容。
‘a’:只追加形式打开,指针指向最末尾,文件为空则创建,不为空不覆盖。
’a+':可读可追加形式打开,读取可在任意位置进行,写入只能在末尾进行。
python只能将字符串内容写入文本,若要将数值写入文本,必须先使用str()函数将其转化为字符串形式

with open('hhh.txt','w') as file_ob:
    file_ob.write('yyyyyyep')

写入多行:记得要在每句末尾写入换行符。

with open('hhh.txt','w') as file_ob:
    file_ob.write('yyyyyyep\n')
    file_ob.write('hello\n')

异常

python使用被称为异常的特殊对象来管理程序执行期间发生的错误,每当发生让python不知所措的错误时,会创建一个异常对象,若编写了处理该异常的代码,程序将继续运行;若未对异常处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
异常是使用try-except代码块处理的
处理ZeroDivisionError异常:当一个数字除以0时会报此错,下列程序先try进行计算,若报错则进行except。

while True:
    first_number = input("First 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)

分析文本:方法split()将根据一个字符串创建一个单词列表,以空格为分隔符将字符串分拆成多个部分。

title = "Alice in Wonderland"
title.split()
#结果:
['Alice','in','Wonderland']

找不到文件:异常为FileNotFoundError。

try:
    with open('hhh.txt') as file_ob:
        contents = file_ob.read()
except FileNotFoundError:
    print("not find this txt")
else:
    words = contents.split()
    num_words = len(words)

若要失败是一声不吭:

except FileNotFoundError:
    pass

存储数据

很多程序都要求输入某种信息,但程序经常会把用户提供的信息存储在列表和字典等数据结构当中。用户关闭程序时,总是要保存他们提供的信息:一种简单的方式是使用模块json来存储数据。
模块json可以将最简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,还可使用其在python程序之间分享数据(JavaScript Object Notation)。

json.dump(数据,文件):将数据读入文件中
json.load(文件):将文件内的数据读出
import json
numbers = [1,2,3,4,5]
filename = 'numbers.json'
with open(filename,'w') as f_ob:
    json.dump(numbers,f_ob)
import json
filename = 'numbers.json'
with open(filename) as f_ob:
    numbers = json.load('f_ob')

重构:将代码划分为一系列完成具体工作的函数。
使用json存储数据日后遇到可仔细学习

第十一章:测试代码

本章内容过于看不懂,可以遇到时再行学习

你可能感兴趣的:(python,学习,笔记)