如何用两个晚上教女生学会Python

news2025/1/13 9:51:27

文章目录

    • 安装、需求引导和开发模型
    • 命令行计算器
    • 用温度指导穿衣
    • VS Code 和女孩子的衣柜
    • 用遍历来挑选衣物
    • 交互
    • 课后作业

事情的起因是这样的,知乎上有个妹纸加我,说要相亲。尽管我欣喜若狂,但恰巧在外出差,根本走不开。妹纸于是说要不教她编程吧,为了在相亲之前留个好印象,我使出了浑身解数,希望在短时间内让一个毫无编程经验的萌妹纸,掌握Python的基本用法。

安装、需求引导和开发模型

古人云,授人以鱼不如授人以渔,但对于卖课程的人来说,他若真的把“渔”授人了,那他自己的“鱼”也就卖不出去了。这个“渔”,就是快速学习一门编程语言的方法。

而这个方法的核心,就是用需求引导取代知识灌输

在这里插入图片描述

一旦建立起项目观念,同时项目进度和学习进度同步推进,那么二者前进的过程,也会变得无比丝滑。

所以接下来,就是要完成这个基本的需求:如何做一个可以挑选衣服的功能。

这个功能可简单、可复杂,对于新手而言,却可以成梯次地拆分成不同的任务需求,每个需求对应一个知识点,随着知识点的增多,需求也不断增多,一定程度上就相当于是瀑布模型的简化版了。

而万事开头难,在确定学习目标后,第一步就是安装Anaconda。在此前,我一向认为这步相对来说比较复杂,故而更推荐在线的IDE,例如这个:在线Jupyter编辑工具。

但在一对一指导的情况下,推荐在线工具过于敷衍,故而一步到位,直接建议安装Anaconda,清华源按照时间排序,拉到最下方,下载2022.05-Windows-x86_64版本。安装过程意外地顺利,基本上出去走一圈就装好了。

在这里插入图片描述

命令行计算器

装好Anaconda之后,就可以愉快地使用命令行了。按下Win+r,输入cmd,然后回车,就可以进入命令行。

在命令行中输入python,就可以进入Python的交互环境,然后就可以按照直觉,进行四则混合运算了

x = 100
y = 50
z = 2.5
print(x + y * z)    # 在python中,用#注释,注释就是不会被执行的文字
print(x - y / z)    # print,将括号中的结果打印到屏幕上
print(x * y**2)     # **表示乘方

就是说,就算只是当作计算器,使用Python也是不亏的。

对于一些复杂的计算,可以自行定义函数,比如

def GouGu(x,y):
    return (x**2+y**2)**(1/2)

其中,def是函数的关键字,这个函数表示输入x,y,输出一个(x**2+y**2)*(1/2),就是勾股定理,相当于

z = x 2 + y 2 z=\sqrt{x^2+y^2} z=x2+y2

需要注意,Python中,通过缩进组织代码,在GouGu这个函数中的所有内容,必须保持相同的缩进,否则就相当于是跳到了函数之外。

在定义好函数之后,就可以在命令行中调用

>>> GouGu(3,4)
5

用温度指导穿衣

在开启Python,稍微尝试一下计算功能后,就要开始带来第一波刺激,实现根据温度筛选衣物。

t = 15
if t > 20 :
    print('天气较热,穿薄一点')
elif t < 0:
    print("天气较冷,穿厚一点")
else:
    print("天气适宜,随便穿")

这就是所谓的条件语句,根据温度不同,实现了一个最基本的穿衣建议。非常神奇的是,这段代码我貌似并没有给她讲解,但她明白是什么意思。

但需要再次注意,Python中通过缩进来组织代码,在if, elif, else这三个关键字冒号的后面,必须进行相同的缩进,Python才能正常工作。

总之,在后续的编程学习中,缩进这两个字出现的频率相当之高。

这里面涉及到的另一个知识点就是字符串,在python中,单引号或者双引号内部的字符,将被识别为字符串,字符串和数值是两种截然不同的东西,这种不同可以从python内置的运算符重载看出端倪

1+1     # 显然等于2
'1'+'1' # 结果为'11'

如果仅仅是做一个if...elif...else语句,那么只能判断一次温度,这个太蠢了,为了随时调用,可以将这个逻辑压入一个函数中

def howToDress(t):
    if t > 20 :
        print('天气较热,穿薄一点')
    elif t < 0:
        print("天气较冷,穿厚一点")
    else:
        print("天气适宜,随便穿")

结合函数的知识,可以进一步理解缩进,即if, elif, else是相对于def进行的缩进;而那三个print则是相当于条件语句的缩进。

这样,就可以更加方便地进行穿衣指导了

>>> haoToDress(15)
天气适宜,随便穿

VS Code 和女孩子的衣柜

在本节之前,一直通过命令行交互地进行Python练习,这没毛病,但显然无法做一个项目,因为命令行不会把敲过的命令留存下来。

Anaconda提供了Python的IDE,Spider;也提供了交互式记事本Jupyter,但均非长久之计。考虑到她无比顺畅地完成了Anaconda的安装,那么关于编辑器的选择,自然也要一步到位,上VS Code。

VS Code的安装过程也非常顺利,第一次打开会提示安装中文语言包,安装即可。

在这里插入图片描述

接下来,新建一个文件夹,以后所有的代码都存放在这个文件夹里,然后用VS Code打开这个文件夹,右键这个文件夹,并新建一个.py文件。VS Code会自动检测到py文件,按照提示,安装Python扩展。由于她只给了我这个截图,说明后续的过程都是顺利的。

在这里插入图片描述

接下来,如本节标题所说,要把女孩子的衣柜写入这个.py文件中。

而衣柜的前提是有一件衣服,那么如何在Python中描述一件衣服呢?

答案是字典,或者说键值对列表,通过键和值的一一对应,在描述客观事物属性的同时,也实现了对属性值的快速索引。

dress = {
    "name":"羊羔绒外套",
    "color":"白色",
    "style":"外套"
    "low_temp":-5,
    "high_temp":8,
}

首先,这是一个名为字典的变量,里面包含了各种属性,比如"name", “color"等,每个属性都对应一个值,这个值可以是字符串,比如"color"是"白色”,也可以是数值,比如"low_temp"为-5,表示温度高于-5°时可以穿。

如想单独提出dress的某个属性,可用方括号索引

print(dress['color'])   #"白色"

如想运行.py文件,只需在命令行中输入python XXX.py,便可以运行python脚本。VS Code中是自带命令行的,只需按下Ctrl+~就可以出现。关于这个我忘了说,以至于她一直在那个“黑黑的”命令行中操作。

在这里插入图片描述

所谓“衣柜”,就是一个装着各种衣服的列表,所谓列表,就是用[]罗列着的内容,如果用字典来理解列表,就相当于是以自然数为键的字典。

而后她十分兴奋,说这不得写几个小时,吓得我大惊失色,说先稍微列出几个做测试就行,等以后学了面向对象,直接就用类来做了,最后得到了一个衣柜的demo,如下。

在这里插入图片描述

与字典的键值索引类似,列表采取自然数索引,例如

print(clothes[0])   # 将输出羊羔绒外套这个字典

用遍历来挑选衣物

有了衣柜,有了选衣服的逻辑,就可以实现一个最基础的选择衣服的函数。这个需求也来一步一步做,还是先完善通过温度选择衣物的方法

def whichDress(t):
    selected = []
    for cloth in clothes:
        if cloth['low_temp'] < t < cloth['high_temp']:
            selected.append(cloth)
    return selected

其中,cloth['low_temp'] < t < cloth['high_temp']这种写法是在我没有做任何说明的情况下,她自己写的。这一方面说明她是个挺有天赋的妹纸,同时也说明Python是一款非常甜的语言(指语法糖超多)。

但她对append是干啥的不理解,所以我让她做如下测试

a = []
a.append("b")
print(a)    # ["b"]
a.append("c")
print(a)    # ["b", "c"]

整段函数的逻辑就是,输入一个温度,然后遍历clothes字典,挑选出所有符合温度要求的衣服,最后输出。

for...in语句非常直观,以for cloth in clothes为例,就是将clothes列表中所有的内容,按次赋给cloth,这就是所谓的遍历。

当然,for...in最常用的方法应该是结合range,实现对自然数的遍历,上面的那个遍历过程也可以写为

for i in range(len(chothes)):
    print(clothes[i])

其中,len可以得到clothes的元素个数,至于range是什么,可以用下面的表达式试一下

for i in range(5):
    print(i)

交互

能够做到这个程度,妹纸就已经非常兴奋了,毕竟能够用温度来选择衣物,也就意味着能够用其他特征来筛选衣物。接下来要完成的,就是另一个重要的内容:交互。

我们常见的程序都是通过图形界面来完成交互,但对于新人程序媛来说,这显然不太现实,所以这种交互,也是建立在命令行之上的。

在python中,通过print将字符串打印到命令行,反过来,通过input来从命令行请求值,例如

>>> t = input("请输入温度")
请输入温度15
>>> print(t)
15

有了这个,就可以做到交互式的衣物择取,但这里有一个知识点,即通过input得到的值,是一个字符串,尽管看上去15是个数字,但只是伪装成数字的字符串罢了,如果想进行计算或者比较,必须通过int或者float使之变成整数或者小数。

>>> t + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> int(t)+1
16
>>> float(t)+1
16.0

查看报错信息,也是编程学习过程中不可或缺的任务,Python的报错信息已经非常人性化了,TypeError为数据类型错误,后面说只能把字符串(str)和字符串拼接起来,而不能是int。换句话说,在t+1这样的一个表达式中,+根据t的数据类型,自动表现为字符串拼接的意思,但因为数据类型不同,而无法实现。

有了这个功能,就可以实现手动输入温度,并给出可选衣物。如果将这样的一个逻辑写入一个死循环中,就可以选择多种温度下的情况

while True:
    t = input("请输入温度")
    dress = whichDress(int(t))
    print(dress)

在这步操作时,如果忘了写input,而恰好前面某个地方又给t赋了值的话,就会导致命令行疯狂地不间断地输出,这时不必慌张,更不用关掉命令行,只需按下Ctrl+C就可以了

在这里插入图片描述

课后作业

最后,留下一个妹纸在调试过程中出现的小问题,如果您阅读并实现了本文的操作,看看能不能找出问题的所在

在这里插入图片描述

至此,妹纸已经基本学会了Python,所以最近的一个多月都没怎么回我消息了,她一定是在准备相亲吧,我们以后的孩子是学Python还是学C++呢?

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化和半自动矢量化提取地物矢量轮廓

假期愉快&#xff08;这个假期加班了没&#xff1f;图片&#xff09;&#xff01;今天小助手来分享关于自动化和半自动化的矢量提取&#xff0c;使用的软件都是我们常用的软件。一是使用Global Mapper对遥感影像或矢量底图进行自动提取&#xff0c;二是基于天地图矢量底图使用A…

阶段性总结 | C语言

… &#x1f333;&#x1f332;&#x1f331;本文已收录至&#xff1a;技术之外的往事 更多知识尽在此专栏中&#xff01; &#x1f389;&#x1f389;&#x1f389;欢迎点赞、收藏、关注 &#x1f389;&#x1f389;&#x1f389;回顾过去 各位CSND的小伙伴们大家好&#xf…

C · 进阶 | 慎看!深剖文件操作,怕你停不下

啊我摔倒了..有没有人扶我起来学习.... 目录前言一、 什么是文件1.1 程序文件1.2 数据文件1.3 文件名二、文件的打开和关闭2.1 文件指针2.2 文件的打开和关闭三、文件的顺序读写3.0 有必要解释一下*3.1 fputc3.2 fgetc3.3 fprintf3.4 fscanf3.4.1来个小总结&#xff08;这里忽略…

双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)

文章目录双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、项目&#xff09;一、自我介绍二、简历准备三、刷题四、八股文五、项目方面六、关于实习七、面试方面八、秋招路程九、简历投递十、面经分享双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、…

springboot+jsp新闻发布投稿系统

本文采用JSP技术构建的一个管理系统&#xff0c;实现了一个新闻发布系统。新闻发布系统的主要实现功能包括&#xff1a;管理员&#xff1a;首页、个人中心、用户管理 、新闻分类管理 、新闻信息管理、新闻投稿管理、论坛管理、我的收藏管理、投诉建议管理、系统管理。前台首页&…

Python编程 print输出函数

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.输入与输出 1.print&#xff08;&#xff09;输出函数 2.sep 3.en…

【MySQL数据库和JDBC编程】第三章-第一节:MySQL的增删查改基础篇

文章目录一&#xff1a;INSET新增二&#xff1a;SELECT查询&#xff08;1&#xff09;全列查询&#xff08;2&#xff09;指定列查询&#xff08;3&#xff09;查询字段为表达式&#xff08;4&#xff09;起别名&#xff08;5&#xff09;去重&#xff08;DISTINCT&#xff09;…

微信小程序request:fail报错(包括不执行fail回调问题)

微信小程序request:fail报错&#xff08;包括不执行fail回调的问题&#xff09;1. 不执行fail回调的问题2. request:fail报错原因2.1 小程序未配置域名导致的错误2.2 微信小程序使用的服务器环境不支持TLS1.22.3 使用的SSL证书不信任2.4 SSL证书证书链缺乏2.5 域名未备案&#…

使用Spring框架进行Web项目开发(初级)

目录 前言 1. 为什么常规的Spring框架不适合Web项目呢&#xff1f; 2. 如何在Spring框架中创建容器&#xff1f; 3. Spring框架开发Web项目的步骤 3.1 创建maven项目 3.2 添加相应的依赖 3.3 在webapp目录下的web.xml中注册监听器 3.4 在webapp文件夹下的web.xml中配置…

【信息科学技术与创新】自然语言处理 NLP 计算机与智能 课程总结思考

深入了解 NLP 及课程总结反思 摘要 自然语言处理的历史发展自然语言处理的方法与相关应用关于数据智能科学技术导论这门课程的总结反思 Navigator深入了解 NLP 及课程总结反思一、自然语言处理的历史发展二、自然语言处理的方法与相关应用三、关于数据智能科学技术导论这门课…

【C++初阶】日期类实现、const成员函数、取地址及const取地址操作符重载

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【C学习与应用】 ✒️✒️本篇内容&#xff1a;日期类的代码实现、const成员函数的概念和作用、取地址及const取地址操作符重载 &#x1f6a2;&#x1f6a2…

去水印小程序

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 项目UI确实有点朴实无华&#xff0c;但并不影响她美丽的内在。这和人也一样&#xff0c;属于心灵美。 虽然&#xff0c;这个社会上的大多数人喜欢从一件事物的外表&#xff0c;去评判事物的好坏&#xff0c;即好…

vue支付项目-APP支付宝支付功能

⭐️⭐️⭐️ 作者&#xff1a;船长在船上 &#x1f6a9;&#x1f6a9;&#x1f6a9; 主页&#xff1a;来访地址船长在船上的博客 &#x1f528;&#x1f528;&#x1f528; 简介&#xff1a;CSDN前端领域优质创作者&#xff0c;资深前端开发工程师&#xff0c;专注前端开发…

FreeRTOS 软件定时器的使用

FreeRTOS中加入了软件定时器这个功能组件&#xff0c;是一个可选的、不属于freeRTOS内核的功能&#xff0c;由定时器服务任务&#xff08;其实就是一个定时器任务&#xff09;来提供。 软件定时器是当设定一个定时时间&#xff0c;当达到设定的时间之后就会执行指定的功能函数&…

【趣学算法】Day2 贪心算法——最优装载问题

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的&#xff0c;这一次&#xff0c;让我们先人一步&#xff0c;趣学算法&#xff01; ❤️一名热爱Java的大一学生&#xff0c;希望与各位大佬共同学习进步❤️ &#x1f9d1;个人主页&#xff1a;周小末天天开心 各位大…

ESP8266/esp32接入阿里云物联网平台点灯控制类案例

ESP8266/esp32接入阿里云物联网平台点灯控制类案例&#x1f4cc;阿里云物联网云平台介绍&#xff1a;https://help.aliyun.com/product/30520.html &#x1f38b;需要自己在阿里云物联网云平台注册自己的账户&#xff0c;这里不做介绍了。 &#x1f33b;阿里云物联网云平台创建…

Python基础入门(持续更新中)

一、发展历程 Python的创始人为荷兰人吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;Guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&#xff0c;作为ABC语言的一种继承。之所以选中单词P…

CANoe-以太网软硬件网络自动映射的问题

以太网软硬件网络自动映射的问题 当我们设置CANoe以太网模式为Network-based access模式时 我们需要在CANoe硬件里配置segment,具体内容请参考文章《如何配置CANoe Network-based access模式的以太网网络拓扑》 有时我们图省事,配置的segment默认名称是什么,我们也不管,也…

UVM如何处理out-of-order乱序传输

文章目录前言1、基本思路2、支持乱序传输的sequence3、支持乱序传输的Driver总结前言 乱序传输(out-of-order)是指在协议中&#xff0c;后发出去的req&#xff0c;支持先回resp&#xff0c;通常通过ID来保证req和resp之间的关系。很多协议支持乱序传输&#xff0c;例如AXI4。本…

我们简单的new了一个对象,JVM都做了哪些贡献?

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章是关于CAS的介绍以及在我们new对象时&#xff0c;Java虚拟机会为我们做些什么贡献。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复…