写给Python社群的第1课:初识Python,开篇知识点就选字符串吧~

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写给Python社群的第1课:初识Python,开篇知识点就选字符串吧~相关的知识,希望对你有一定的参考价值。

本系列博客,由 “发量迷人的乔喻” 授权发布。被系列博客来自 78 技术人社群的一次大冒险,没错,乔喻输了,它就要写。
要简单,要通俗,要高雅,要有用,要有趣的介绍清楚 Python。
要能写购 250K 字。

前言

写作的起点就很意外,在 78 技术人社群吹牛,输了!他们让我写 Python 系列博客,还要写购 250K 字,就是 25W 字呀,一篇博客 1W 字,还要 25 篇,才能写完,而且还要简单,要通俗,要高雅,要有用,要有趣。
要讲 Python,要在 1 个月内学会 Python,要能用 1 个月学到的技术,追到前台“大”姐……

不给钱,还催更,没办法,只能写。好在这帮家伙没有说代码不算字数,写代码,别说 25W 字了,25W 行我都能给你写出来。

Python 简介

任何程序员都应该学习 Python,因为它在某些场景太 TM 好用了。

Python 是一门编程语言,很普通,但是很有趣,它能以极简的脚本,实现很多让人头疼的功能。

例如给 HR 姐姐,整理个表格。
例如给女朋友写个聊天机器人。
例如监控暗恋对象的朋友圈。
例如给运营姐姐写自动化脚本
……
总之,这是一门能让你能脱单的语言,我想从来没有人这样去定义 Python 吧。

什么,你是女生?那学完之后给男朋友改 BUG,在技术上压制他,当你给他搞定一个 BUG 之后,家里永远你说了算。

Python 环境安装与开发工具选择

版本选择与下载

Python 有个官网,在某度搜索 Python,一般第一个就是,里面可以看到各种资料,不过大概率初期,你也看不懂。

Python 环境的安装要注意跟你的电脑操作系统有关系,如果你是 Windows7,那么选择 Python3.6,Python3.7,Python3.8 都可以,如果你是 Windows10,选择 Python3.9,以及 Python3.10 都可以。

别问具体哪个版本,初学阶段,哪个版本对你都一样,原则上越低的版本越好,为啥?因为当你遇到 BUG 时,网上的资料多,新版本老程序员们用得到,你碰到奇怪的 BUG,找不到资料。

别问 Python2.X 版本用不用学,从你看到这篇文章的时候,就不用学了。

别问用 Linux、Centos、Ubuntu 行不行,有 Windows 就够了。啥?你用的是 Mac,当然行呀,不过我没有 Mac,所以 Mac 相关内容就不讲解了。

Python 软件的下载,虽说官网也可以,但是华为开源镜像站提供的速度真的感人,版本还好找,网址在这里:https://repo.huaweicloud.com/python/,下载还是从这里下载吧,我保证这个网址能进你的收藏夹。

找一个你觉得还顺眼的版本,点进去,里面就长成下述这个样子。


这里面就有点学问了,有英语基础也不一定能下载正确,这就是有编程经验和没编程经验的区别所在了。

上图包含各个平台可用的 Python 软件,在下载之前,你要先确定电脑的位数,现在的电脑一般是 64 位的,所以选择 python-3.8.9-amd64.exe 下载即可,你可能会问,其余的都是啥?重要吗,很重要,用学吗?算了吧,你学了不太容易记住。

Python 安装

下载文件之后,是一个 exe 程序,双击即可安装,选择默认安装就行。
这里我拿 Python3.7 安装界面截图演示,你是不是又要问,为啥选择这个版本?我能说是因为我桌面上,不知道为啥正好有这个版本么。
你又要问,如果和你选择的版本不一致怎么办?没啥问题,还是那个问题,目前阶段安装上环境才是重点,版本之间的差异化咱现在用不到。

是不是又产生疑问了,你现在不管想到什么都很重要,但是不用考虑,安装上环境,能跑才是王道。

点击之后,期待它不报错就行,报错就去搜索引擎问或者去社群问,如果你的电脑是 windows 10 及以上版本,大概率是没啥错误的。

接下来,在你电脑上找到开始菜单,在里面翻找 Python,例如我下图出现的样子。


好,接下来我们用 Python3.6 演示(是不是在心里骂我了,骗子,你刚刚不是安装的 Python3.7 吗?你过来呀~)

好,看到了刚才的图片,啥也不用点击,关闭菜单,回到桌面,当做什么都没有发生。

身为一个程序员,直接用鼠标点击,没感觉,按快捷键才刺激。

按下键盘上的 Ctrl+R,唤醒 运行 窗口,输出 cmd,唤出控制台,只有黑色才能唤醒我们的编程意识。


在上述窗口中,输入 python,然后进入 Python 交互模式。

在接下来输入 "hello world",效果如下,好了,到现在为止,你的 Python 环境已经配置的差不多了。

这里唯一要注意的就是 hello world ,前后都有个双引号,而且是英文模式下输入的,要不你试试中文双引号?

继续输入 exit(),注意英文的括号,退出 Python 环境。

为了后续编码方便,需要在当前窗口,继续输入 pip -V,大写的 V,然后出现如下所示内容,表示 pip 安装成功,这个叫做包扩展工具,核心作用就是借别人的代码来使使

Anaconda 安装

其实安装了 Python 之后,就可以写代码了,用电脑上自带的记事本就可以,但是记事本写起来很不方便,所以就出现了集成开发环境,Anaconda 就是其中的佼佼者,安装这家伙之后,能大幅度提高学习 Python 的效率,所以你需要下载并安装一个。

在搜索引擎搜索 Anaconda ,找清华大学的镜像站点,从这里面下载速度快。

打开对应站点之后,选择最新版本的软件下载即可。

由于我们下载了最新版本的 Anaconda ,所以安装过程中会默认安装一个 Python3.9,惊喜不?我们又使用最新一个新版本的 Python 环境了。(注意 Windows7 无法使用该版本)


安装完毕,在开始菜单找到对应程序,运行之后出现如下界面,一切成功。

后续学习过程中,主要围绕 jupyter 操作,所以点击该图标下面的 Launch 尝试首次运行,该程序将打开你的默认浏览器,并打开你的文档 目录,该目录可修改

肯定有人不喜欢代码文件放在 C 盘,所以有修改的需求,改法也非常简单,在 你的文档(C:\\Users\\Administrator) 里面找到 \\.jupyter 文件夹,里面有下图所示文件。


用记事本或者安装一个 notepad++ 打开该文件,定位到 393 行上下,修改为下述格式,保存,退出。

c.NotebookApp.notebook_dir = 'F:/78tech'

注意在 F 盘需要新建一个文件夹,此时在运行 jupyter 就可以打开该目录了。

如果发现找不到上述文件,也不要慌,打开 Anaconda Powershell Prompt,然后执行 jupyter notebook --generate-config 生成这个配置文件就好了。

初识 Python

在右侧找到 New 按钮,下拉出现 Python3 ,点击即可创建新文件,里面就可以编写 Python 代码了。
关于 jupyter 的使用,可以通过搜索引擎,也可以直接跟着本系列博客,一点点的学习。


在文本框输入 print("hello world"),然后点击运行,你的第一段 Python 代码就编写完毕啦。

其实上述代码已经包含了很多编程知识,仅仅一行,就包括了不下 5 个 Python 知识点,这些都将在后续展开进行说明。

一切从字符串开始

先来学习第一个知识点,Python 字符串,字符串是一个编程名词,翻译过来就是字符组成的串(跟没说一样)

在 Python 中,用引号来表示字符串,例如 双引号 ",单引号 ',还有一个奇葩的三引号 """,对应的三单引号 '''

所以下述代码都是在 声明 一个字符串。

name = "橡皮擦"
name = '橡皮擦'
name = """橡皮擦"""
name = '''橡皮擦'''

此时你应该尝试输入一下上述代码,找找编程的感觉,写了几行之后,你如果能得到如下几个结论,证明水平还不错。

  • 引号都是成对出现的,前面一个后面一个
  • 单引号对应单引号,双引号对应双引号,三引号对应三引号
  • 这些引号都是在英文模式下输入的,不能用中文的引号

字符串会伴随我们的整个编程生涯,几乎每段代码都会碰到,因此咱们将其放在一开始就进行讲解。

拿上述代码中的一个例子进行讲解,name = "橡皮擦",其中 name 叫做变量,可变的量,也是编程名词,= 在这里表示的是赋值操作,代码阅读跟古文一样,从右往左读,所以 name = "橡皮擦" 表示,将字符串 橡皮擦 赋值变量 name。

编程不好理解的地方就在这里,你会接触到很多编程世界的名词,这就是编程语言。

如果上面的三个名词感觉掌握的差不多了,那大概率你会产生如下几个问题,别着急,咱们慢慢解释。

  1. 啥是变量
  2. 赋值是个啥意思?
  3. = 不是数学里面的等于吗?

有这几个疑问,你就要上道了,入门编程最难的就是这些新概念了。

啥是变量
变量其实在初一你就接触了,例如一元一次方程,声明一个 x

x + 1 = 2 求 x 等于多少

上面的 x 就是变量,扩展到编程中,也是类似的含义,可变的量,用来存储某些值的量,在某个地方能表示特定值的量,这些都是变量的概念(不用去咬文嚼字的非要死磕书本概念,先理解)。

赋值是啥意思?
赋值是一个动作,是一个命令,是告诉计算机把这个东西,给绑定到那个东西(那个变量上),你看这样是不是就理解了赋值的涵义呢?

= 为啥不是等于了
这问到点子上了,这个符号在 Python 里面叫做赋值符,两个 =,即 == 表示等于,别问为什么,写代码的时候,别写错了就行。

Python 中的字符串

到目前位置,你只接触到了 Python 字符串概念,那你来看一下 '1' 是字符串吗?答案肯定是,因为 1 被单引号包裹起来了。

既然字符串是一个字符的串,那你就可以把它当成糖葫芦串,你可以对糖葫芦做什么,就能对字符串做什么,例如吃第一个,吃最后一个,吃中间的 2 个,在头上插入一个山楂,在尾部插入一个山楂,数数山楂的数量……

这些对应到 Python 字符串中,就是各种编程语法,编程概念,咱们一起翻译翻译。

我有一个字符串(糖葫芦),我要吃第一个

tang_hu_lu = "都说冰糖葫芦儿酸" # 声明字符串
print(tang_hu_lu) # 打印输出字符串
print(tang_hu_lu[0]) # 打印字符串的第一个字符

注意代码都是在 jupyter 中进行编写,然后点击运行实现效果,运行的快捷键是 shift+enter

又是一段代码,里面又涉及了很多编程概念,例如 tang_hu_lu 你已经知道它是一个变量了,但是 Python 变量是有命名规范的,例如 1_a 就是错误的,命名规范是啥呢?建议去搜搜,只有一个原则需要告诉你,就是命名尽量有含义,哪怕你用拼音。

# 表示注释,相当于备注的意思,写在 # 后面的内容不会被 Python 软件 执行。
tang_hu_lu[0] 这里就有趣了,在变量名称后面跟了一个中括号[],并且在里面写了一个数字 0,它表示取这个串里面的第一个字符,在编程语言中,报数一般从 0 开始,也就是 0 表示第一位,是不是又有疑问了,为啥这么安排?

知道二进制不?二进制用 01 表示,所以从 0 开始数。

取第一个字符咱们已经会了,那最后一个呢

tang_hu_lu = "都说冰糖葫芦儿酸" # 声明字符串
print(tang_hu_lu) # 打印输出字符串
print(tang_hu_lu[-1]) # 打印字符串的最后一个字符
print(tang_hu_lu[7]) # 打印字符串的最后一个字符

上述代码就实现了,注意中括号里面的数字 [-1] 就是倒着数最后一个,当然你可以顺着数,数到 7 就是第八个山楂了,这里尝试把 7 修改成 8 ,看一下会报什么错误吧。


到这里就不得不抛出一个新的名词了,索引,刚才中括号中的数字就是 索引值,看到没,又是一个新概念,没办法,这就是编程。

字符串的第一个和最后一个你都能获取到了,吃中间的怎么办

tang_hu_lu = "都说冰糖葫芦儿酸" # 声明字符串
print(tang_hu_lu) # 打印输出字符串
print(tang_hu_lu[2:4]) # 输出冰糖
print(tang_hu_lu[3:5]) # 输出糖葫

注意中括号扩展了,变成了 2 个数字,中间还有一个英文的冒号,此时一定要对比着原字符串进行学习。

- 都说冰糖葫芦儿酸
- 0 1 2 3 4 5 6 7

看好各个的位置

  • [2:4] 输出冰糖,分别对应索引 2,索引 3 位置的字符;
  • [3:5] 输出糖葫,分别对应索引 3,索引 4 位置的字符;

[0:6] 你知道输出什么了吗?能说出来,恭喜你,Python 字符串切片你已经掌握 90%了,想不到吧,又是一个新概念,切片,多么形象!

字符串扩展方法

字符串除了切片用法以外,还可以使用一个新的概念,叫做 对象的方法,在 Python 中有一个说法,叫做万物皆对象(对象的概念我们在后文展开学习,现在知道这么回事即可),例如现在有一个字符串,内容是 "都说冰糖葫芦儿酸"

先看代码

my_str = "都说冰糖葫芦儿酸"
a = my_str.find("糖")
print(a) # 输出内容为 3

上述代码中,在字符串变量 my_str 的后面增加一段代码 .find("糖"),其中 .find() 就是一个字符串对象的方法,它的用途你顺着刚才的代码在细琢磨,就能知道,是查找 "糖" 这个小字符串在大字符串中的索引值。

同理,还有哪些需要掌握的字符串对象方法呢?

my_str = "AaBbCcDd"
new_my_str = my_str.title()
print(new_my_str) # Aabbccdd

.title() 方法表示将字符串首字母大写

my_str = "AaBbCcDd"
new_my_str = my_str.upper()
print(new_my_str) # AABBCCDD

.upper() 方法表示将字符串全部大写,全部小写是 .lower()

字符串去除左右两端的空格。

my_str = " AaBbCcDd "
new_my_str = my_str.strip()
print(new_my_str)

除了这些,字符串对象的方法还有很多,但是不需要记忆,你需要去搜索一些相关的博客进行阅读,搜索关键字为 Python 字符串方法,然后看上几篇博客,最终得到,“哦~字符串对象有这些方法,可以大小写转换,可以去除空格,可以检索字符串,可以统计字符出现次数,还能判断字符串中字符内容……”

内置函数

学到这里,还有一个概念要接触一下,内置函数,现在的需求如下所示,我们需要统计有多少个糖葫芦,即字符串有多少个字符,先看代码,如下所示:

my_str = " AaBbCcDd "
len_my_str = len(my_str)
print(len_my_str) # 统计到了 10个

上述代码中的 len() 就是一个 Python 内置函数,它表示统计长度,注意看内置函数和刚才学到的方法之间的差异,len() 函数,前面并没有对象去调用它,调用 其实也是一个编程概念,就是那个 . 符号。

统计过程,你也会注意到 " AaBbCcDd " 算上空格,恰好是 10 个 字符,所以得出空格也是字符,这个基本认知。

后续我们还会学习更多的内置函数,接下来在学习 2 个,这两个有助于提高编程效率。

第一个是 help(),该函数用来查看编程对象的帮助手册,例如下述代码

my_str = " AaBbCcDd "
help(my_str )

不过该代码无法在 jupyter 中运行,会得到如下结果

这里可以直接输入 help(),进入手册模式,在进行查询即可。

在文本框输入 str,就可以获取到帮助手册中的相关内容,也就是获取到了字符串对象的相关方法。

第 3 个要学习的内置函数是 dir(),使用该函数可以直接把对象支持的方法全部输出。

my_str = " AaBbCcDd "
print(dir(my_str))


jupyter 的使用过程中,如果出现了 In [*],表示命令没有执行完毕,需要点击菜单栏的 Kernel,然后重启服务。

字符串格式化

在 Python 中,字符串格式化有三种方式,分别为 % 占位符格式化,format() 方法格式化,以及 f-string,重点学习的是第二种和第三种方式进行格式化,例如下述代码:

my_str = "小爱同学,今天天气"
answer_str = "今天的天气是: ".format("晴")
print(answer_str)

第二个字符串中出现了一个大括号 ,然后通过 format() 函数对其进行了填充,同理,大括号可以出现多个,也可以有名称,例如下述代码:

# 多个大括号,format() 方法中需要多个值进行填充
my_str = "小爱同学,今天天气"
answer_str = "今天上午的天气是: ,下午的天气是:".format("晴","多云")
print(answer_str)
# 大括号中有占位符
my_str = "小爱同学,今天天气"
answer_str = "今天上午的天气是: shangwu,下午的天气是:xiawu".format(shangwu="晴",xiawu="多云")
print(answer_str)

在使用占位符的时候注意下,前后要一致,否则会出错的。

上述代码其实用到了函数相关支持,这些随着我们的学习,都将逐步展开,当下最有效的学习方式,就是临摹一遍代码啦。

总结

第一天的学习到这里就可以了,重点内容在 Python 环境安装,Anaconda 安装,以及 Python 字符串相关内容,掌握了 Python 字符串之后,后续的学习就简单了一点点,相信已经加入 78 技术人 的你能做到。

课后题
编程只学概念是完全不够了,重要的是把这些概念融合起来,解决实际的问题,那看过来,下面的问题,你可以解决掉了吗?

  1. 在读取某些数据的时候,发现读入进来的字符串左右都有空格,例如 " a short text ",需要去除掉。
  2. 进行文本输出的时候,需要将用户的姓名,年龄输出到模板中的固定位置,例如 张三28 输出格式为 读取到张三,年龄为28
  3. 登录模块有验证码,显式的时候有大小写,但是不要求用户输入的时候按照大小写输入,即展示 aAbB,但用户输入 aabb 也能通过验证。
  4. 读取一段文本,发现其中 "的" 写错了,需要修改为 "得",使用字符串对象方法实现(本文未讲解该函数,需依靠搜索引擎实现)。

支持博主时间

今天是持续写作的第 277 / 365 天。
可以关注我,点赞我、评论我、收藏我啦。

更多精彩


👇👇👇扫码加入【78技术人】~ Python 事业部👇👇👇

以上是关于写给Python社群的第1课:初识Python,开篇知识点就选字符串吧~的主要内容,如果未能解决你的问题,请参考以下文章

写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while

写给Python社群的第5课:Python 函数,真的难吗?

写给Python社群的第10课:Python 研发 Windows桌面程序,长长长的文

写给Python社群的第11课:Python线程,进程,协程,3个毫无关系的兄弟

写给Python社群的第11课:Python线程,进程,协程,3个毫无关系的兄弟

写给Python社群的第7课:用 Python 模块了不起呀?就是了不起