吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4210|回复: 43
收起左侧

[学习记录] 【Python】【笔记】《python从入门到实践》十三天学习笔记总结

  [复制链接]
LogyJ 发表于 2021-11-19 23:15

《python从入门到实践》学习笔记

[TOC]

本书配套网站:[www.nostarch.com/pythoncrashcourse]()

day 1 基础学习

已安装python3.10

拥有一定python语法基础
根据书上内容进行实践

将字符串的字母大小写进行变换的方法

name.title()
name.upper()
name.lower()

table键:\t

删除字符串末尾和开头的空白
调用方法:rstrip(),lstrip

细节问题:如果字符串中必须包括一个单引号,用双引号引起来这个字符串

将整形数据转换成字符型:str()

列表
在某一位置添加元素,
调用方法insert(索引,元素)
删除:方法1:del(索引)
方法2:pop()(括号内不写东西删除的是末尾的元素,写索引则删除对应元素)
区别:pop后可以用来使用
方法3:remove()根据值删除【用法见程序】,只能删除第一个指定的值,如果该值出现多次则需要循环删除
永久排序:方法sort()实现按字母正反排序,永久性改变

#day1
name = "Abc deFg"
print(name.title())  #只大写首字母
print(name.upper())
print(name.lower())

delspace = " python   "
print(len(delspace))
print(len(delspace.rstrip()))  #删除尾巴
print(len(delspace.lstrip()))  #删除头部

import this  #python之禅

mylist = ["a","c","b","d","a"]
print(mylist)
mylist.insert(3, "z")  #特定位置插入
print(mylist)
myletter = "a"
mylist.remove(myletter)  #根据值删除特定元素
print(mylist)
print(myletter)
mylist.sort()  #按字母永久排序
print(mylist)
mylist.sort(reverse=True)  #倒序
print(mylist)

print(mylist)
sorted(mylist)  #只写这句话不能实现临时按照字母顺序
print(mylist)
print(sorted(mylist))  #直接输出才行
print(mylist)  #确实是临时的

day 2 列表

临时排序:sorted()
书中3.3.2介绍到sorted后按照字母倒序输出,需要给sorted传输参数reverse=True,但是编译mylist.sorted时会显示编译错误,sorted中必须为mylist否则无法保存第一部的结果,根据这个思路,可以另外新建一个列表来存储,然后用sort的方法进行对新的列表的永久排序然后用sort(reverse=True)来实现

倒着打印列表
具体调用方法:mylist.reverse()

确定列表长度:len(mylist)
实践提示:计算还剩下多少僵尸

一个列表有n个元素,索引随后一个元素mylist[-1]或者mylist[n-1]

for循环实践提示:初始化游戏——遍历角色列表,将每个角色都显示到屏幕上,循环后显示play now

数值列表,使用函数range()创建数字列表

乘方运算:**
tips:当使用临时变量时可以使代码可读性增强,审核时可以进行高效化的缩减

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

复制列表,所用的知识为列表的切片,mylist[:]即不写开始结束的索引,直接将整个列表作为一个大切片
注意不能直接把mylist赋给新的列表,应当制作切片去传递

元组:不可变的列表
定义的时候使用()而不是[],索引的时候使用的和列表一样name[]

不允许对元组中的元素赋值
可以直接重新初始化该元组

#day2
mylist.reverse()
print(mylist)  #直接按照原列表打印倒序

print(mylist[-1])  #索引最后一个元素

numbers = list(range(1,6))  #创建的是左开右闭
print(numbers)
even_num = list(range(2,11,2))  #第三个数可以指定步长
print(even_num)

构造完全平方数列表
square_num = []
for i in range(1,11):
    temp = i**2
    square_num.append(temp)
print(square_num)

square_num = [temp**2 for temp in range(1,11)]  #列表解析
print(square_num)

dimensions = (5,3,7,11,9)

day 3 字典

if语句
检查是否相等:需要考虑字母大小写
如果为了实现不许分大小写,可以先将所有字母小写后做判断
检查一个元素是否在列表中:not in

字典
初始化字典:
访问字典中的值:
添加/删除:
修改字典中的值:(均见示例)
遍历所有的键值对(也可以单独便利)

6.4嵌套:可以使用字典列表,列表字典,字典字典

#day3
mydic = {"char1": "abc","char2": "def","char3": "ghi"}
print(mydic["char1"])
mydic["char2"] = "xyz"
print(mydic["char2"])
mydic["char4"] = "pqr"
del mydic["char3"]
print(mydic)
for key,value in mydic.items():
    print(key)
    print(value)

day 4 用户输入(1)

input函数:
工作原理:函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后存在一个变量中,以等待使用。
int()
可以将输入的字符串转换为整型数据

day 5 用户输入(2)

根据用户输入来决定是否结束程序的运行
while中运用字符串相等问题。

day 6 用户输入(3)

利用while循环,将人员的firstname lastname统计,并提供结束方式。90%自主完成,存在一个问题:每次只能存储一个人的信息进入字典,不过好像任务就是这个。本程序相当于结合了day4-6所学内容进行的程序编写,如下:

#day6
def get_ones_name(frn,ln):
    fn = frn + " " + ln
    return fn.title()

while True:
    print("tell me your name , input 'q' to break")
    frn = input("first name:\n")
    if frn != 'q':
        ln = input("last name:\n")
        if ln != 'q':
            age = input("your age:\n")
            if age == 'q':
                break
        else:
            break
    else:
        break
    print("hello " + get_ones_name(frn, ln))

def buildname(frn,ln,age):
    namedic = {'firstname: ': frn,'lastname: ':ln,'age: ': age}  #这是一种封装方式
    #if age:
        #namedic['age'] = age  #这是另一种封装方式,在函数定义中使用age = '',然后在调用时直接给其赋值在最开始的括号里面,成为一个实参
    return namedic
print(buildname(frn, ln, age))  #注意本程序有一个小问题就是每次只能输入一个人的信息,如果输入多次只会记录最后一个人的信息。

day 7  形参与实参

传递任意数量实参方法:*形参名
意思为创建了一个以形参名命名的空元组,并将所有收到的值都封装到这个元组中

传递任意数量的关键字实参:**形参名
创建的是一个新的空字典(使用键值对,即调用语句提供了多少就使用多少)

调用模块:

import module_name

调用模块下的函数:

from module_name import function_name1,function_name2...........

调用模块下所有函数:

from module_name import *  #正中情况下函数可以直接调用,不需要句点表示法

调用函数并起别名避免和程序中的名字重复:

from module_name import function_name as new_name
import module_name as new_name

这样一来调用的时候可以更加简洁:

new_name.new_name

day 8 类

类,对象,实例化。

面向对象编程是最有效的软件编写方法之一

创建类:

__init__(self,name,age)

类中的函数称为方法,init这个方法时一个特殊且重要的的方法,每当根据Dog类创建新的实例,Python都会自动运行它,开头末尾分别由两个下划线hi为了区别于其他的常用命名的函数。

在该方法的定义中,形参self必不可少,必须位于最前方。

self的作用:python调用者个方法时自动传入self实参,每个与类相关联的方法调用都用到实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。因为会自动传递,所以调用的时候只需要给其他形参赋值。

创建类中的实例:

my_dog = Dog('pp',3)  #实例化对象
print(my_dog.name)  #访问实例化对象的属性

想要修改内容,高级的方法是再写一个方法去调用以达到修改的目的:

def update_age(self,age):  #又来改变年龄的方法
    self.age = age

my_dog = Dog('pp', 3)
my_dog.update_age(23)  #调用该方法
print(my_dog.age)

也可以通过创建方法来实现对某个属性累加

class Height():
    def __init__(self,len):
        self.len = len
    def sum(self,len):
        self.len += len
my_height = Height(180)
my_height.sum(3)
print(my_height.len)

下面是根据所学和自己想要实现的内容写出的代码:

#day8
class Dog():
    def __init__(self,name,age):  #小狗类的信息
        self.name = name
        self.age = age

    def sit(self):  #小狗执行坐下命令
        print(self.name.title() + " is sitting now.")

    def row_over(self):  #小狗执行打滚命令
        print(self.name.title() + " rowed over.")

my_dog = Dog('pp', 3)
print(my_dog.name) 
print(f"给{my_dog.name}‘sit’指令或者‘else’指令看看它会怎么做:)\n(输入‘q’结束)")
giveorders = ''
while giveorders != 'q':
    giveorders = input()
    if giveorders == 'sit':
        my_dog.sit() 
    elif giveorders != 'q':
        my_dog.row_over()

day 9 类与子类

一个类继承另一个类:子类继承父类,继承原有并且可以定义自己的属性和方法

子类中有两个需要注意的:__init__()super(),下面的是继承的一个示例:

class Car():  #先定义好一个父类
    def __init__(self,carname,caryear,carsize):
        self.carname = carname
        self.caryear = caryear
        self.carsize = carsize
#创建子类时父类必须包含在统一个文件中

然后创建ElectricCar()子类:

class ElectricCar(Car):  #这是想要继承父类的一个子类,定义子类必须要在括号内指出继承的父类是什么
    def __init__(self,carname,caryear,carsize):  #子类的__init__继承父类
        super().__init__(carname,caryear,carsize)  #super函数将父类与子类关联起来,这让python调用子类的父类方法__init__(),让子类实例化包含父类的属性父类也成为supercla,所以super因此得名。

若想改变父类下的方法,只需要在子类中重新定义即可。

day 10 文件

打开文件:

with open('python之禅.txt',encoding='utf-8') as file_object: #有汉字,需要对解码方式进行标注
    contents = file_object.read()
    print(contents)

逐行读取:

filename = 'python之禅.txt'
with open(filename) as file_object:
    for line in file_object:
        print(line)
        #print(line.rstrip())  #消除每读取一行后的空行

写入空文件:

filename = 'programming.md'
with open(filename,'w') as file_object:
    file_object.write('My name is LogyJ.')

open()函数中文件后的实参 :

'a' 附加模式

'w' 写入模式

'r' 读取模式

'r+' 读取和写入模式

day 11 异常

ZeroDivisionError异常:python不能除以0

try-expect-else的使用:

try:
    answer = n / m
expect ZeroDivisionError:
    print("You can't divide by zero!")
    #pass #如果希望程序不做出错误的汇报
else:
    print(answer)
#如果try中的代码运行没有出错则跳过expect代码块运行接下来的程序,如果出错则运行expect中的代码,这样可以避免用户看到traceback从而提高程序出错的可读性和安全性。

通过预测可能发生错误的代码,可编写健壮的程序,即便面临无效数据或缺少资源也能继续运行,从而能抵御无意的用户错误和恶意的攻击。

day 12 数据存储

存储数据:json模块(JavaScript Object Notation

常用的两个方法:

import json
numbers = [2,3,5,6,7]
filename = 'number.json'
with open(filename,'w') as f_obj:
    json.dump(numbers,f_obj)  #使用json.dump存储数据,需要传入两个参数
with open(filename) as f_obj:
    numb = json.load(f_obj)  #使用json.load读取存储的数据
print(numb)

day 13 测试代码

测试函数的一个例子:

def get_formatted_name(first,last):
    full_name = first + ' ' + last
    return full_name.title()

提示:使用模块unittest中的工具为函数和类编写测试


后记:小白新人第一次发帖,感觉发帖要求好严格呜呜,紧张的要死害怕被记过,希望没事吧,有什么错误或者疏忽的话还请大家指出来,后续会发本书后半部分项目开发的学习笔记,欢迎关注。

免费评分

参与人数 17吾爱币 +22 热心值 +15 收起 理由
love0you0so + 1 + 1 我很赞同!可以有
tounge + 1 + 1 谢谢@Thanks!
xiewenbo + 1 用心讨论,共获提升!
10JQKA + 1 + 1 谢谢@Thanks!
appled + 1 + 1 我很赞同!
junjia215 + 1 + 1 谢谢@Thanks!
xh44113 + 1 谢谢@Thanks!
zhchxu123 + 1 + 1 谢谢@Thanks!
limanwuai001 + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Z2z、Hu1 + 1 + 1 用心讨论,共获提升!
sushaka + 1 + 1 谢谢@Thanks!
Cool_风 + 1 + 1 我很赞同!
ToT鱼 + 1 热心回复!
Jinjibewater + 1 + 1 谢谢@Thanks!
lizy169 + 1 + 1 用心讨论,共获提升!
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Lea42195 发表于 2021-11-20 06:08
哈哈哈,我也是新加入不久的
[Asm] 纯文本查看 复制代码
zwjlyw 发表于 2021-11-20 08:30
he287357888 发表于 2021-11-20 08:34
加油,我现在看这些字母,头还是晕的,得从最基础开始了解。
Q7gui 发表于 2021-11-20 08:50
楼主,python从菜鸟上学完语法之后咋么学呀,很多exp看不懂
Jaybo 发表于 2021-11-20 08:58
谢谢分享,真的需要
hetaon 发表于 2021-11-20 09:30
Python初学习,Mark一下
xtkj 发表于 2021-11-20 09:55
辛苦了。
头像被屏蔽
偶尔平凡 发表于 2021-11-20 10:04
提示: 作者被禁止或删除 内容自动屏蔽
sxhzsj 发表于 2021-11-20 10:08
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表