前言

  1. 一开始还看不起实操,觉得那些知识点自己早都会了、掌握了,结果操作下来是险象环生,很多没有预料到的意外和问题都出来了,所以道需要思考,术需要练习,技术一定要练,练才有技术。
  2. 对于初学者来说,你可以暂时把 Python 当做一个计算器来使用。
  3. 作者的口头禅:staright forward - 简单直接。
  4. 格式化字符串的多种方式。我们大多数时候都是在输出字符串,实现功能只需要少量代码。
  5. 书让你学会正确的输入,而视频则是用各种方式去搞破坏,以此来理解计算机的思维方式。你也要在每次都找出尽可能多的方式去破坏代码。这样帮助你更深的理解Python。
  6. 为每行代码写上注释,去解释计算机处理这行代码时做的事情。
  7. 如果你看到不懂的东西,就去print(">>>", )它!这是基本的 debug 思路。
  8. 你可以任意组合你学到的东西,然后得到新的东西。我们可以组合每一种学到的东西:字符串,格式化字符串,文件操作,函数,任意组合。
  9. 直接搜索 Python + 要搜索的函数就会在"菜鸟教程"网站上看到说明了。帮助文档是英文,很遗憾,理解起来还有点吃力。帮助文档:pydoc input,如果是Windows,python -m pydoc input
  10. 学到19节有感:技术,技术,是一种实践的东西,是刻意练习获得的心里表征,和想清楚是不一样的。
  11. 使用Python -i 进入交互模式。
  12. from 和 import 和 函数的关系还需要进一步明确,我现在导入我自己模块的函数为啥会失败呢?不知道为什么,有时成功,有时失败。成功往往是先退出一次交互模式再进来,就会成功。
  13. 序数等于有序,从1开始;基数等于随机选取,从0开始。

准备工作

  1. 下载Python3
  2. 准备编辑器 VScode

基本命令行

无论何时何地,都是用bash命令行来操作,而非 Windows 的powershell

初始命令
pushd /popd 临时跑到某个目录去,然后再回到之前的目录,方便地在两者间切换
cd切换目录'too many arguments',路径名中间有空格,需要引起来。
rmdir删除目录
cp复制文件、目录
mv移动文件、目录,重命名文件、目录
less查看内容的一种方式很多内容会分页显示,空格向下翻页,W向上翻页
cat将内容打印到屏幕上
rm删除文件

格式化字符串

格式化字符串的方法有很多,它很重要。

cars = 100
#第一种方法:
print("There are", cars, "cars available.")# 将变量与字符串结合
#第二种方法:
print(f"There are {cars} cars available.")# 将变量嵌入到字符串中,f告诉Python这是一个混合字符串,需要你去做一些处理。
#第三种方法:
print("There are {} cars available.".format(cars))

疑问:{}的真正作用。{}代表暂时进入了Python模式,你可以在里面放一些变量和表达式之类的。

多行字符串

有很多种方法可以将字符串扩展到多行。如""" """

获取用户输入

  1. Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
  2. 使用from sys import argv(从 sys 模块中,取得 argv 功能,在命令行接收参数。惯例,第一个参数要是脚本名称。

如果你看到不懂的东西,就去print它!

大家都偏爱第二种,因为没人喜欢程序在你干活的时候,跳出来问你问题。

操作文件

太棒了,学到了14.15节,终于有有趣的东西了。

读取文件、写入文件

复制文件内容到新文件

函数

函数的书写方法

return 关键字

ex22:列出近期你学到的东西

关键字解释
print
f格式化字符串
.format格式化字符串
{}
n换行
""" """
t制表符
input
repr()呈现原本的样子
from从一个模块中,模块是以.py结尾的文件
import导入某个函数
argv参数
open(filename,'w')打开文件,以“写”的模式
f.read()读取对象内容
f.close()关闭对象
f.write()将内容写入对象中
def定义函数关键字
return函数返回值

ex.24 这一节会全面复习前面学到的东西。

字节和字符串

decode 解码字节——>将字节解码成人类能看懂的字符。

encode 编码字符——>将字符编码成计算机能认识的字节。

布尔表达式

如果你不知道某个表达式的真假,可以通过python -i来让python程序告诉你答案。

你也可以自己推理:

  1. Find an equality test(== or !=) and replace it with its truth.
  2. find each and/or inside parentheses and solve those first.
  3. Find each not and invert it.
  4. Find any remaining and/or and solve it.
  5. When you are done you should have True or False.

recursion

分支

多个ifif + elif的区别:多个if需要每个都去检测一遍,而另一种是其中有个为真,其他的都不用检测了。

循环

人们更喜欢 for 循环,因为它是有限次数的,while 循环容易陷入到无限的循环中,难点在于把那个限制条件弄对,应少用while循环。

Python 中的 for 循环定义的变量,在用完之后还会存在,并不会被销毁。

while True 当你需要无限循环的时候,这是一个很恰当的使用。

ex35

75行的巨大代码库,不要从上往下依次输入。

先输入骨架是最好的选择,先把每个函数体写出来。然后完成第一个函数,每次完成一点点,最后完成整个程序,这样你就能控制你的整个程序。

把一个大问题,分解成小问题,然后解决每个小问题。

def bear_room():
    print("这里有一头熊。There is a bear here.")
    print("这个熊有一堆蜂蜜。The bear has a bunch of honey.")
    print("这个胖熊在另一扇门前。The fat bear is in front of another door.")
    print("你要如何让这头熊走开?How are you going to move the bear?")

    bear_moved = False

    while True: #终于把这里的逻辑理顺了,之前是因为有个判断条件打错了,造成了误解.

        choice = input("> ")

        # debug调试,判断各个条件的真假情况
        print(">>>> bear_moved=",bear_moved)
        print(">>>> taunt bear and not bear_moved=",choice =="taunt bear" and not bear_moved)
        print(">>>> taunt bear and bear_moved=",choice =="taunt bear" and bear_moved)
        print(">>>> open door and bear_moved=",choice =="open door" and bear_moved)

        if choice == "take honey":#or"拿蜂蜜":
            dead("这个熊看了看你,然后一巴掌呼死了你。The bear looks at you then slap your face off.")
        elif choice == "taunt bear" and not bear_moved:
            print("这个熊从那扇门移开了。The bear has moved from the door.")
            print("你现在可以通过了。You can go throgh it now.")
            bear_moved = True
        elif choice =="taunt bear" and bear_moved:
            dead("熊把你拍死,并咀嚼着你的腿。The bear gets pised off and chews your leg off.")
        elif choice =="open door" and bear_moved:
            gold_room() # 唯一的出口,跳到金币房间.
        else:
            print(f"我不知道你输入的是什么,{choice}这个? I got no idea what that means.")

if 和 循环的一些简单规则

一些if语句的规则,让你的代码更“好”

  1. 每一条语句必须包含一个else,如果这个else本身没有任何意义,永远都不应该被执行到,那你必须在else语句后面使用一个叫die的函数,让它打印出错消息并且“死”给你看,这和上一个习题类似,这样你可以找到很多的错误。
  2. if 语句的嵌套不要超过两层,最好尽量保持只有一层。
  3. 布尔测试应该很简单,如果很复杂,可以实现把它们放在一个变量里,并未变量起一个好名字。

一些循环的规则,让你的代码更“好”

  1. 只有在需要循环永不停止时使用“while循环”。这意味着你可能永远都用不到它。这一条只在Python中成立,其他语言另当别论。
  2. 其他类型的循环都使用for循环,尤其是在循环的对象数量固定或者有限的情况下。

一些调试的小技巧

  1. 不要使用“调试器”(debugger)。调试器所做的相当于对病人进行全身扫描。你并不会得到某方面的有用信息,你会发现它输出的信息太多,大部分没有用,或者只会让你更困惑。
  2. 调试程序的最好的方法是使用print在各个想要检查的关键点将变量打印出来,从而检查那里是否有错。
  3. 让程序一部分一部分地运行起来。不要等写了一大堆代码文件后才去运行它们,写一点儿,运行一点儿,再修改一点儿。
如果觉得我的文章对你有用,请随意赞赏