[固基]我的Python学习笔记

学习目标:

夯实基础 *** python基础学习与进阶

学习内容:

1、 变量和简单数据类型(21.3.9) 知识点+笔记+习题 -over 耗时3h

2、 列表
第一部分 列表基础:(21.3.9) 知识点+笔记+习题 -over 耗时4.6h
第二部分 操作列表:(21.3.9-3.10)知识点+笔记+习题 -over 耗时3.5h

3、 if语句(3.10) 知识点+笔记+习题 -over 耗时:3.5h

4、 字典(3.10)知识点+笔记+习题 -over 耗时:4h

5、输入和while循环 (3.10-3.11)知识点+笔记+部分习题 -over 3h

6、函数 (3.11)知识点+习题 -over 3h

7.类 知识点+习题 -over

8、文件和异常(3.12)知识点+习题 -over 4.5h

9、测试代码 (3.12) 知识点 -over 1.5h


学习笔记:

一、变量和简单数据类型

1、变量名必知

  • 变量名只能包含数字、字母、下划线。数字不能打头。

  • 变量名不能包含空格,分隔单词使用下划线

  • 不要使用python中用于特殊用途的单词,如关键字和函数名
    关键字:False、else、if…
    内置函数名用作变量名会覆盖这些函数的行为。

  • 变量名应简短又能准确描述。

  • 小写字母l和大写字母O,易与1和0混淆。

**变量:**变量是可以赋给值的标签,也可以说变量指向特定的值。

2、字符串
字符串:引号括起的。单引号/双引号

变量.方法名()

  • 用方法修改字符串中的大小写
  • title:每个单词首字母改为大写,其余为小写。 用途:将不同大小写的值Aaa、aAA、aaA视为同一值
    upper:都变为大写
    lower:都变为小写
#输入
name = "aDs dwG"
print(name.title())

#输出:
Ads Dwg
  • 在字符串中使用变量 :f
    字符串引号前面添加一个f,表示字符串中引用了变量。f是format的简写。f 可以多层引用变量,并结合方法对变量进行修改。也就是说,f 可以直接引用用方法修改后的变量。
#输入
famous_person = "Albert Einstein"
na = f'{famous_person} once said,"A person who never made a mistake never tried anything new."  '
print(f"Do you know? {na.rstrip()}")
#输出
Do you know? Albert Einstein once said,"A person who never made a mistake never tried anything new."

多层引用

  • 空白
    空白泛指任何非打印字符,如空格、制表符和换行符
    \n 让python换到下一行
    \t 在开头添加一个制表符(可以理解为几个空格)
  • 删除空白的方法
    rstrip:删除字符串右边空白
    lstrip:删除字符串左边空白
    strip:删除字符串两边的空白
    变量.方法名() 是暂时删除字符串中的空白,如果要永久删除,必须要给变量重新赋值。`
fff = "bala  "
#暂时删除
print(f"909090 {fff.rstrip()}")

#永久删除
fff = fff.rstrip()

3、数
我的笔记
4、Python之禅

import this

1.Beautiful is better than ugly.

优美胜于丑陋(Python以编写优美的代码为目标)

2.Explicit is better than implicit.

明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

  1. Simple is better than complex.

简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

4.Complex is better than complicated.

复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

5.Flat is better than nested.

扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

6.Sparse is better than dense.

间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

7.Readability counts

可读性很重要(优美的代码是可读的)

8.Special cases aren‘t special enough to break the rules. Although practicality beats purity.

即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

9.Errors should never pass silently. Unless explicitly silenced.

不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写except:pass风格的代码)

10.In the face of ambiguity, refuse the temptation to guess.

当存在多种可能,不要尝试去猜测

11.There should be one-- and preferably only one --obvious way to do it.24

而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)

12.Although that way may not be obvious at first unless you‘re Dutch.

虽然这并不容易,因为你不是 Python 之父(这里的Dutch是指Guido)

13.Now is better than never。 Although never is often better than right now.

做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

14.If the implementation is hard to explain, it‘s a bad idea. If the implementation is easy to explain, it may be a good idea.

如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

15.Namespaces are one honking great idea – let‘s do more of those!

命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
原文地址:https://www.cnblogs.com/zhoujinjian/p/9090893.html

章末总结:
更加清晰深刻地认识了变量、字符串、数,以及学会了常用的几个方法。我想我需要归纳记忆一下方法,有点难记。还有一些小的知识点,也应该需要多用/多回顾,不然会很容易忘记了。这个地基必须要打的坚不可摧。
感触最深的还是Python之禅了,原来这样的是代码,有种说不出来的感悟哈哈哈。很优美,很有意思,像数学一样的美感,简洁有力。
希望自己脚踏实地的走吧,加油!

二、列表

1、列表的基本形式

  • 由一系列按特定顺序排列的元素组成。元素可以是字母、数字、字符串、列表、已被赋值的变量名
a = ['w', 3, 'Jan']
  • 访问列表
# 1、直接输出列表
print(a)   
输出:
['w', 3, 'Jan']
# 2、顺序索引
print(a[0])
输出:
w

另:正向索引、负向索引

  • 使用列表中的值
massage = f"acd {a[0].title()}"
  • 对列表使用方法``
a.reverse()
print(f"idid {a}")
  • title() 等方法是对字符串起作用的方法,reverse() 等其他方法是对列表起作用的方法,因此两者的使用并不完全一样。title()可以放在print中,前提是a[0].title() ,0位置必须是字符串。reverse是作用在列表上的,作用在列表上的方法,无法直接嵌入print函数的f引用中,只能在前面写完。
# 1.修改=替换
a[0] = 'nijo'
# 2.添加
a.append('rere')  # 在列表末尾添加
a.insert(1, 'er') # 在位置1添加元素er ,其余元素向后顺移
# 3.删除
del a[0]          # 语句,需要知道要删除元素的位置
b = a.pop()       # 需要知道位置,但可以返回删除元素值,默认
                  # 删除末尾元素,也可以指定元素位置 
a.remove('w')     # 不需要知道位置,直接删除该值的第一个,可
                  # 以返回删除的值继续使用   
	c = 'w'    # 即把要删除的值赋给一个变量
	a.remove(c)
	print(a)
	print(f"c.title()")
# 4.排序
a.sort()          # 按字母顺序进行永久排序 ()中可以添加reverse=True
print(sorted(a))  # 函数,临时排序,不改变a本身的顺序
a.reverse()       # 列表a元素反转
  • len()确定列表的长度
print(len(a))

总结:学了好多方法,title和reverse两种方法的区分思考了好久,最后得出的结论。自己思考后找到答案的感觉果然不错,不知道为什么最后写笔记时有点累,可能是学的太久了吧。习题也over了。

2、操作列表部分知识点

  • 遍历列表-循环:(注意缩进——引起逻辑错误)
for value in all:
	print(value)
	print(f"I need a {value.title()}.\n")
  • 函数range()
for value in range(1, 5):    #打印1、2、3、4
	print(value)
#创建数字列表
number = list(range(1, 10, 2))
print() 

value.append(value**2)

for循环可以直接遍历range()函数,可以遍历列表。
range函数可以通过list变成列表。
方法的参数可以为算式。

  • 几个函数:min()、max()、sum()

  • 列表解析

squares = [value**2 for value in range(1, 11)]
print(squares)
  • 列表切片
print(squares[2:5:1])   #格式

for value in squares[:3]   #遍历切片

sq = square[:]    #复制列表,创建一个新的列表
  • 元组:元组是由逗号标识的
    元组是无法修改元素的列表,但可以重新赋值。
a = (3, )   #只包含一个元素

三、if 语句

在这里插入图片描述

四、字典

在这里插入图片描述

五、输入和while循环

用途:通过获取用户的输入并学会控制程序的运行时间,就可以编写出交互式设计

1、输入 input() 相关知识

  • 输入:函数input()
    基本形式:message = input("Tell me something, and I while repeat it back to you: ")
    引号中的句子是提示文本,提示用户需要输入的是什么,也可以不写;使用函数input(),运行框中会暂停,等待用户输入,用户输入后按下回车键,程序会将输入内容赋给变量message,输入内容默认为字符串
  • 需要注意的格式:
    ①提示末尾的冒号后打一个空格,可以让用户更清楚输入的起点的位置。
    ②提示超过一行,将提示赋给一个变量,把这个变量传入函数input()。
a = "第一行提示。"
a += "第二行提示。"
shuru = input(a)
print(f"\nHello, {shuru}!")
  • 函数int():将的字符串表示转换为数值表示
shuru = int(input(a))
  • 求模运算符 % :将两个数相除并返回余数
    ****可用于判断一个数的奇偶性

2、while循环

  • 异:for循环对集合中的每个元素都要执行一遍;while循环是有条件限制的for循环
b = 1
while b < 7:
	print("b小于7")
	b += 1
while首次执行会进行一次条件的检查
  • 退出
    ①单一事件导致暂停:while中的条件使用 !=
    ②多个事件都会导致暂停:使用标志。设定某一个变量初始值为True,if 语句判断条件,暂停条件中的代码块为该变量重新赋值False。这种情况初始时相当于不会进行条件的比较。
    ③break 退出整个while循环。
    ④continue 退出整个while循环其中的一次子循环。
    ⑤快捷键Ctrl+C /直接关了,退出无限循环
# 不停地输入数字,直到输入为8,程序停止
a= ""
while a != 8:
	a = int(input("输入数字: "))

# 使用标志
a = True
while a:
    b = input("输入你的年龄:")

    if b == '0':
        a = False
    else:
        print(b)

  • while循环处理列表、字典
    while循环不仅可以处理单一值(字符串、数字)的变量,也可以处理多值(列表、字典)的变量。
    ①利用空列表的性质,移动列表中的元素。非空列表a为True,每当a为True时,都会满足while循环条件,然后用pop方法,将列表中的最后一个元素提取并赋值给暂存变量b,再用append方法将b添加到被转移的列表c中。
    ②删除为特定值的所有列表元素。
    while ‘某一特定值’ in 变量名:
    变量名.remove('某一特定值')
    ③使用用户输入来填充字典。

responses = {}

# 设置一个标志,指出调查是否继续。
polling_active = True

while polling_active:
    # 提示输入被调查者的名字和回答。
    name = input("\nWhat is your name? ")
    response = input("Which mountain would you like to climb someday? ")

    # 将回答储存到最开始设置的responses字典中。   名字:要爬的山
    responses[name] = response

    # 询问被调查者是否愿意邀请其他人参加,邀请则继续while循环,否则停止循环。
    repeat = input("Would you like to let anther person respond?(yes/no) ")
    if repeat == 'no':
        polling_active = False

# 从字典中依次调出,显示所有结果
print("\n---Poll Results---")
for name,response in responses.items():
    print(f"{name.title()} would like to climb {response.title()}")

#输出:
What is your name? alien
Which mountain would you like to climb someday? tai
Would you like to let anther person respond?(yes/no) yes

What is your name? blien
Which mountain would you like to climb someday? cai
Would you like to let anther person respond?(yes/no) no

---Poll Results---
Alien would like to climb Tai
Blien would like to climb Cai

进程已结束,退出代码为 0

学习总结:坚持就是胜利!最后一部分习题实在是不想做了,先留着TAT,如果顺利今天应该就能结束基础知识,最晚不过是明天。不过我还是希望尽量今天就能弄完,明天就有更多的时间去巩固,学别的了。明天准备把没做的题补一下,开始弄项目了,还有就是其他知识可以开始学了,终于可以练算法了TAT。整个过程大概就是“痛并快乐着”,每当我学不下去了,各种奇奇怪怪的鼓励就从脑海中冒出来了,督促我继续学习。谢谢我自己QAQ。:)
感受到了,我是在做梦,后面怎么还有这么多TAT
教训:冷静,心急吃不了热豆腐,学习还是带稳一点,慢慢来,不能着急啊。

六、函数

函数是带名字的代码块,一个函数覆盖一个功能。当程序中需要多次使用同一种功能时(例如某一个循环语句),我们可以将这种功能放在名为“函数”的盒子里,每次拿就不需要从头写到尾了。
就像是这样,曹雪芹写了《红楼梦》,他的很多书粉都想看,但现在只能手抄这一种方法复制下来,供不应求,于是出版商发明了“活字印刷术”,这样就可以批量生产了,印一下就是一本书。

以上故事纯属编造,和历史无关,千万不要当真。
大纲图:
坑1,待填

1、向函数传递信息

  • 定义def
    ①def:表示定义了一个函数
    ②定义行要以冒号结尾
    ③“““中间为注释部分,解释这个函数的用途”””
    ④username是形参,相当于定义了一个参数,后面调用这个函数时输入的‘jesse’相当于给username赋值。‘jesse’被称为实参。
def greet_user(username):
    """显示简单的问候语"""
    print(f"Hello!, {username.title()}!")


greet_user('jesse')
  • 传递实参:
    ①位置实参:这要求实参的顺序与形参的顺序相同。
    ②关键字实参:其中每个实参都由变量名和值组成,还可以使用列表和字典。
    位置实参:形参1和实参1位置对应,值对应。2和2对应,值对应,不会赋值给别人。
def hanshu1(xingcan1, xingcan2):
	"""假装下面有语句"""


hanshu1("shican1", "shican2")
  • 多次调用:多写几遍最后一行,实参赋不同的值。
  • 关键字实参:是传递给函数的名称值对(xingcan = shican),在传递时可以无视顺序,还清楚地指出了函数调用中各个值的用途。
def hanshu1(xingcan1, xingcan2):
	"""假装下面有语句"""

hanshu1(xingcan2 = "shican2", xingcan2 = "shican1")
#需要准确指定函数定义中的形参名。
  • 默认值:编写函数时,可以给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,形参指定默认值后,可在函数调用中省略相应的实参。
def hanshu1(xingcan1, xingcan2 = ‘flower’):
	"""假装下面有语句"""

hanshu1(xingcan2 = "shican1")

七、类


学习产出:

学习心得:第一遍看书,标注出重点;然后做课后练习,其中不清楚的地方再次翻书,相当于第二遍;最后总结学过的内容,整理成有条理的笔记,第三遍。不知道是先做题好,还是先做笔记比较好一点?

个人感觉果然还是先整理笔记再做题好,学校教的果然是有道理的。

我要去赶我的学习进度了,慢慢填这个坑。。。

结束感言(3.12):
Python第一阶段的基础知识学习终于完了,所有的知识点都over了,最后一章的习题没有做(好吧,我偷懒了)。但是,我觉得我还有很多事情还没有做完:现有笔记补完、重点习题重练。
完成上面的两个部分后,还会继续完善这篇笔记的,因为我只学了Python的基础,还有好多不知道的地方,打算长期更新,慢慢完善。而且,我觉得学了一遍的知识并不牢固,我还需要大量的练习,目前我离我内心的标准还差得远呢!
最后一章的测试部分好难啊TAT,setup()中一个点接着一个点,看了好几遍才看懂,欲哭无泪。༼༎ຶᴗ༎ຶ༽ ,感觉之后还是写代码的时候注意多练练吧。
自己在学的时候也还总结了一些小的知识点,之后整理好了想放在文章的前面。
感觉整个过程就是不断地自己在推着自己,虽然真的其中有些瞬间要崩溃了,让我时常怀疑我自己怎么这么不中用(╬ ̄皿 ̄)=○。学完了感觉遭受的这一切都值得了
ᕦ(・ㅂ・)ᕤ

-over

冲鸭! 3.15留
提示:这里统计学习计划的总量

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值