day2p2 The Hard Way to learn Python
文章目录
- day2p2 The Hard Way to learn Python
- 前言
- 一、提问和提示
- 1.1 关于raw_input()
- 1.2 关于input()
- 二、参数、解包、变量
- 2.1 解读参数
- 2.2 解读解包
- 2.3 解读变量
- 2.4 实例
- 2.5 模块和功能
- 2.6 练习
前言
author:SummerEnd
date:2025.9.3
上午我学了关于输出和字符串的一些内容,下午则要学习如何输入,以及关于参数、解包和变量的相关内容
不得不说这本书的作者编写的还是非常有思路的,不像B站上的某些视频,事无巨细的讲了许多内容,把大部分编程学习者本就了解的知识摆在最前面,跳到后面的部分又发现需要前面的知识,未免有点枯燥无聊,但是跟着这本书来编写程序却觉得自己好像在探索什么东西
毕竟一块嚼碎的蛋糕肯定无法给你带来咀嚼的快感,话不多说我们开始吧
一、提问和提示
这本书的作者从输出一个提问来引出你对输入的思考,一个脚本总不可能什么都不需要输入就能完成它的功能,最起码什么输入都没有的程序肯定不好玩
一个输入一定要有所引导,如果有一天你的面前出现了一个空白的电脑和键盘,你会干什么?像史丹利一样离开办公室?别搞笑了,哪怕是语文作文都得给你一两句话当引子
一个优秀的提问应该能够引导用户输入正确的格式和数据,有没有经历过这样的事情:一份手写的表格需要填写日期,却没有人来告诉你要怎么填写,你写上了2025年9月3日,当你交表格的时候却傻了,该死的领导要求你写成2025.9.3
当然我还是决定先从简单的开始
print "How old are you?",
age = raw_input()
print "Which country are you come from?",
country = raw_input()
print "you come from %r and you are %r years old" %(country, age)#这里的逗号的作用是让print不输出行符,这样就会让输入的内容在命令行中与前面的字符串显示在同一行
#如果你忘记了这样的情况,没关系,自己做一下就好了
1.1 关于raw_input()
raw_input()的括号中可以输入提示信息,而输入的任何内容都会被当作字符串并存放在等号左边的变量中
name = raw_input("What's your name?")
print "Your name is %r,what a great name!" % name
1.2 关于input()
似乎这个input在Python3中等同于raw_input在Python2中的作用
而在Python3中没有raw_input函数,让我们先试验一下
好吧我没有搞定
input()接受表达式输入,并把表达式的结果赋值给等号左边的变量
输入的应当是表达式而不是单纯的字符,如果要输入字符串应该输入“字符串”或者‘字符串’这样的东西
二、参数、解包、变量
首先我按照我的理解来解释这些东西
2.1 解读参数
参数就是在一个程序中需要输入的东西,这个输入不单单是指从键盘的输入,而是在整个程序中需要的数据
例如:
我们要做一个蛋糕,可以假设这样一个函数**“做蛋糕(牛奶,面粉,鸡蛋,烤箱)”**,我们需要向这个函数输入正确的数据才能正常运行,而如果把烤箱当成牛奶来做蛋糕,你的蛋糕想必是失败的。
这里的“牛奶,面粉,鸡蛋,烤箱”就是所谓的参数,我们需要正确的参数输入才能让程序正常运行。
2.2 解读解包
要想理解解包,我们首先应该理解什么是包,这里我们把整合在一起的数据叫做包,解包的意思也就明了了
解包就是把数据包打开,让包中的数据可以解读,还是按照上面的例子来解释
例如:
我们要做一个蛋糕,但是我们没有原材料,于是我们区超市买了一个蛋糕的料理包(数据包):里面包含了牛奶、面粉和鸡蛋(参数),回到家后,我们只需要把料理包打开,倒进做蛋糕的容器中(解包),然后启动(运行函数)。
理解了吗,解包的过程就是把数据包中要用的参数取出来并提供给函数使用,这样的过程可以方便我们的程序编写和理解,毕竟有这样一个整合的过程,我们就不用纠结于每一条数据该从哪里来又要到哪里去。
2.3 解读变量
函数的参数是变量,变量不一定是函数的参数,还是拿上面的例子来举例吧
例如:
我们要做一个蛋糕,但是在购买原材料的时候(选参)犯难了,因为我不知道面粉应该选择高筋面粉还是低筋面粉,鸡蛋应该选土鸡蛋还是普通鸡蛋,牛奶应该选择高脂肪牛奶还是低脂牛奶,烤箱应该选择烘焙烤箱还是烤肉烤箱。
发现了吗,我们需要的每一个参数都有不同的选择,因为它们都是变量,是我们可以控制的
但是还有其他东西是变量,但却不属于函数的参数,比如你要去哪家超市或者要坐哪班公交车,这和我们要做的东西无关,它虽然是变量,但却不是这一函数的参数(也许会在其他函数中用到)
2.4 实例
from sys import argv
script, first, second, third = argv
print "the script is", script
print "first is", first
print "second is", second
print "third is", third
# 下面是报错信息
ValueError: need more than 1 value to unpack
欸?明明按照作者的代码一个字一个字的敲了上去,为什么还是报错了?
可能也许你和我一样,没有仔细阅读
让我们再次阅读一遍
你已经知道,如果要运行 ex13.py,只要在命令行运行 python ex13.py 就可以了。这句命令中的 ex13.py 部分就是所谓的“参数(argument)”,我们现在要做的就是写一个可以接收参数的脚本。
这里我们从sys包中导出的argv功能模块就是我们在命令终端中运行程序的参数,没错!我们可以在运行程序的语句后面拼接参数,我和我的小伙伴都惊呆了!
原来我们使用脚本时后面加的什么-A-sP之类的东西是这么来的
让我们再次尝试
┌──(kali㉿kali)-[~/桌面]
└─$ python2 ask.py 1 2 3
the script is ask.py
first is 1
second is 2
third is 3
可以正常运行了,这作者有点东西的
2.5 模块和功能
在上面的代码案例中
from sys import argv
我们已经知道sys是包,那其他东西是什么?
import是一个导入功能,同时它也被叫做模块,也有人叫做库
argv也是一个功能模块
2.6 练习
from sys import argv
script, user_name = argv
promot = 'please input your answer:'
#设置一个用于询问和提示回答的变量,这样每次需要时只要调取变量即可print "Hello %s,I'm the %s script." % (user_name, script)
print "I want to ask you a question."
print "Do you like me?"
likes = raw_input(promot)print "Alright,you said %s about liking me" % likes
#切记运行时记得传入需要的参数user_name
to ask you a question."
print “Do you like me?”
likes = raw_input(promot)
print “Alright,you said %s about liking me” % likes
#切记运行时记得传入需要的参数user_name