当前位置: 首页 > news >正文

Day2p2 夏暮客的Python之路

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

http://www.xdnf.cn/news/1460521.html

相关文章:

  • 数学建模25c
  • [数据结构] 链表
  • 深度学习之第七课卷积神经网络 (CNN)调整学习率
  • MySQL子查询的分类讲解与实战
  • 从基础到实践:Web核心概念与Nginx入门全解析
  • 前端url参数拼接和提取
  • 嵌入式基础 -- I²C 信号与位层规则
  • Swift 解法详解:LeetCode 371《两整数之和》
  • 漏洞绕过方式
  • 从零到一:人工智能应用技术完全学习指南与未来展望
  • ClickHouse 分片、 Distributed 表、副本机制
  • flowable基础入门
  • 【c/c++】深度DFS
  • MATLAB平台实现人口预测和GDP预测
  • 美国教授提出的布鲁姆法,结合AI直击学术科研痛点,写作与创新效率直接翻倍!
  • 漫谈《数字图像处理》之实时美颜技术
  • Java并行计算详解
  • 解决 Rollup failed to resolve import “vue3-json-viewer/dist/index.css“ from xxx
  • 【Docker】P1 前言:容器化技术发展之路
  • JS本地存储
  • Java String vs StringBuilder vs StringBuffer:一个性能优化的探险故事
  • C++学习记录(6)string部分操作的模拟实现
  • push pop 和 present dismiss
  • Leetcode 206. 反转链表 迭代/递归
  • 拦截器和过滤器(理论+实操)
  • Websocket链接如何配置nginx转发规则?
  • NV169NV200美光固态闪存NV182NV184
  • 云数据库服务(参考自腾讯云计算工程师认证课程)更新中......
  • 阿里云 ESA 实时log 发送没有quta的解决
  • 【机器学习】HanLP+Weka+Java=Random Forest算法模型