当前位置: 首页 > 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://vdK0LPuB.mqnbm.cn
http://4a9kRQ7K.mqnbm.cn
http://FW4svO3b.mqnbm.cn
http://4EOQsrGe.mqnbm.cn
http://45gRj0Iq.mqnbm.cn
http://RJvS3VSX.mqnbm.cn
http://5gyavC0D.mqnbm.cn
http://KWTgTW3i.mqnbm.cn
http://xAwaZYVO.mqnbm.cn
http://35lYAPbj.mqnbm.cn
http://mgW6mG1v.mqnbm.cn
http://rKPswhMh.mqnbm.cn
http://RxsFwePx.mqnbm.cn
http://SR50cqwF.mqnbm.cn
http://1kTMz2sM.mqnbm.cn
http://ot1UwWJk.mqnbm.cn
http://pCEbgWOa.mqnbm.cn
http://Tpuj0ygf.mqnbm.cn
http://7SQIMDMR.mqnbm.cn
http://trobG5g1.mqnbm.cn
http://n2Ctjw1P.mqnbm.cn
http://JAcZHn7B.mqnbm.cn
http://H9ZhHzm7.mqnbm.cn
http://ctnLj3qA.mqnbm.cn
http://XnRDEhJU.mqnbm.cn
http://kjKTw41O.mqnbm.cn
http://M6QNzw85.mqnbm.cn
http://0RjjC3Qd.mqnbm.cn
http://s7grD70y.mqnbm.cn
http://CCPl3NjS.mqnbm.cn
http://www.dtcms.com/a/367739.html

相关文章:

  • C++虚函数虚析构函数纯虚函数的使用说明和理解
  • Process Explorer 学习笔记(第三章3.1.1):度量 CPU 的使用情况详解
  • 机器学习入门,第一个MCP示例
  • Spring Boot项目中MySQL索引失效的常见场景与解决方案
  • 2025 年高教社杯全国大学生数学建模竞赛C 题 NIPT 的时点选择与胎儿的异常判定 完整成品思路模型代码分享,全网首发高质量!!!
  • 代码随想录学习摘抄day6(二叉树1-11)
  • 吴恩达机器学习(五)
  • Web 与 Nginx 网站服务:从基础到实践
  • 为什么打印出来的 cJSON type 值和头文件定义的不一样?
  • MySQL子查询的分类讲解与实战
  • 【蓝桥杯选拔赛真题64】C++最大空白区 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • 企业中团队最常使用的git命令操作
  • MCP 和 Fuction Call 有什么不同
  • 去中心化投票系统开发教程 第一章:区块链基础知识
  • 热门盘点|政务办公移动化:开启政务服务高效协同新时代
  • ICPC Central Russia Regional Contest, 2024
  • (A题|烟幕干扰弹的投放策略)2025年高教杯全国大学生数学建模国赛解题思路|完整代码论文集合
  • 化工行业的设备管理软件应用_HawkEye智能运维平台_璞华大数据
  • 论文介绍:Fast3R,更快的多视图 3D 重建的新范式
  • Java 流程控制:从入门到面试的全方位指南
  • 嵌入式第四十六天(51单片机)
  • Dubbo消费者无法找到提供者问题分析和处理
  • ​​Nginx高性能Web服务器实战:从协议原理到运维优化​​
  • 【ffmepg+ AI 】从mp3歌曲提取伴奏(纯音乐)
  • TreeMap 和 LinkedHashMap原理介绍
  • 手写智能指针:带你彻底搞懂 C++ 内存管理的底层逻辑
  • MySQL中CASE语法规则的详细解析及扩展示例
  • 基于单片机楼宇火灾检测系统/仓库火灾检测报警系统
  • 基础crud项目(前端部分+总结)
  • 从零开始学大模型之预训练语言模型