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.pswp.cn/bicheng/95698.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95698.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95698.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++设计模式】第二篇:策略模式(Strategy)--从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析

C设计模式系列文章目录 【第一篇】C单例模式–懒汉与饿汉以及线程安全 【C设计模式】第二篇:策略模式(Strategy)--从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析一、策略模式的基本介绍1.…

四十岁编程:热爱、沉淀与行业的真相-优雅草卓伊凡

四十岁编程:热爱、沉淀与行业的真相-优雅草卓伊凡今日卓伊凡收到一个问题:「如何看待40岁还在撸代码的程序员?」这让我不禁思考:从何时起,年龄成了程序员职业中的敏感词?在互联网的某些角落,弥漫…

pycharm解释器使用anaconda建立的虚拟环境里面的python,无需系统里面安装python。

Anaconda建立的虚拟环境可以在虚拟环境里设置任何的python版本,pycharm解释器使用anaconda建立的虚拟环境里面的python,比如anaconda建立的虚拟环境1、虚拟环境2,pycharm解释器使用anaconda建立虚拟环境1也可以使用虚拟环境2,根本…

机器学习:后篇

目录 一、KNN算法-分类 样本距离 KNN算法原理 缺点 API 二、模型选择与调优 交叉验证 保留交叉验证(HoldOut) k-折交叉验证(K-fold) 分层k-折交叉验证(Stratified k-fold) 其他交叉验证 三、朴素贝叶斯-分类 理论介绍 拉普拉斯平滑系数 API 四、决策树-分类 理论…

C++17无锁编程实战

在多线程编程里,“锁” 这东西就像把双刃剑 —— 用好了能保数据安全,用不好就麻烦了:大粒度的锁把并发度压得死死的,稍不注意加错锁还可能搞出死锁,程序直接 “僵住”。 但如果能摆脱锁,搞出支持安全并发…

SVT-AV1 svt_aom_motion_estimation_kernel 函数分析

void *svt_aom_motion_estimation_kernel(void *input_ptr) // 运动估计内核主函数,接收线程输入参数{// 从输入参数中获取线程上下文指针EbThreadContext * thread_ctx (EbThreadContext *)input_ptr;// 从线程上下文中获取运动估计上下文指针MotionEstimationCon…

关于NET Core jwt Bearer Token 验证的大坑,浪费3个小时,给各位兄弟搭个桥。

net core 使用jwt Bearer Token 认证获取接口访问权限,前期一阵操作没任何问题,等认证接口写的好了,通过PostMan测试的时候,总是报一个 IDX14102: Unable to decode the header eyJhbGciOiJIUzI1NiIsInR5cCI6 ,错误&a…

系统架构设计师备考第14天——业务处理系统(TPS)

一、TPS的核心概念与定位 1. 定义与演进 定义:TPS(Transaction Processing System)又称电子数据处理系统(EDPS),是处理企业日常事务的信息系统,如财务、库存、销售等局部业务管理。历史地位&…

目标检测系列-Yolov5下载及运行

由于项目需要,最近一直在看目标检测相关的资料,不过纸上得来终觉浅,绝知此事要躬行啊。从今日起,将学习的过程记录一下,作为以后用来复习的材料吧。 我想最快的学习便是直接动手做项目,因此今天就将yolov5模…

Linux内核进程管理子系统有什么第四十二回 —— 进程主结构详解(38)

接前一篇文章:Linux内核进程管理子系统有什么第四十一回 —— 进程主结构详解(37) 本文内容参考: Linux内核进程管理专题报告_linux rseq-CSDN博客 《趣谈Linux操作系统 核心原理篇:第三部分 进程管理》—— 刘超 《…

基于飞算JavaAI的学生成绩综合统计分析系统

第一章:项目概述与背景 1.1 项目背景与意义 在教育信息化飞速发展的今天,学生成绩管理已成为学校教学管理的核心环节。传统的学生成绩管理多依赖于手工操作或基础的信息管理系统,存在数据处理效率低、统计分析功能薄弱、数据可视化缺失等问题…

C++程序员必懂:std::bad_function_call异常的真相与预防秘诀

std::bad_function_call 是 C++ 标准库在 <functional> 头文件中定义的一个异常类型。当程序试图调用一个未持有任何可调用目标(即处于“空状态”)的 std::function 对象时,此异常会被抛出。本文将深入探讨该异常的根本原因、详细的触发场景,并提供一套完整的预防与处…

Html重绘和重排

在网页渲染过程中&#xff0c;重绘&#xff08;repaint&#xff09;和重排&#xff08;reflow&#xff09;是两个重要的概念。理解它们的区别和优化方法对于提升网页性能至关重要。重排&#xff08;Reflow&#xff09;重排是指当页面元素的位置、尺寸等几何属性发生变化时&…

Redis 客户端与服务器:银行的 “客户服务系统” 全流程

目录 一、Redis 客户端&#xff1a;银行的 “客户档案” 二、客户端关闭&#xff1a;银行的 “终止服务规则” 三、命令处理流程&#xff1a;柜员办理业务的 “标准步骤” 1. 接收申请单&#xff08;读取命令请求&#xff09; 2. 确认业务类型&#xff08;查找命令&#x…

HTML图片标签及路径详解

图片是网页内容的重要组成部分&#xff0c;能够使页面更加生动直观。在HTML中&#xff0c;使用<img>标签插入图片&#xff0c;而正确设置图片路径则是确保图片能够正常显示的关键。一、图片标签&#xff08;<img>&#xff09;1. 图片标签的基本语法<img>标签…

【数据库通过日志恢复数据解读】

在数据库恢复机制中&#xff0c;日志文件是实现事务原子性、持久性和崩溃恢复的核心组件。以下通过具体示例和解读方法&#xff0c;结合主流数据库系统的实现细节&#xff0c;详细说明日志文件的内容与分析逻辑。 一、日志文件的核心作用与结构 日志文件通过**预写式日志&#…

【面试题】搜索准确性不高你怎么排查?

系统性排查框架&#xff1a;数据层检查 索引覆盖率&#xff1a;检查文档是否全部正确索引数据新鲜度&#xff1a;确认索引更新频率和延迟文档质量&#xff1a;分析被索引内容的质量和完整性查询理解层 分词分析&#xff1a;检查查询分词是否正确意图识别&#xff1a;验证意图分…

当AI开始“偷吃”用户数据并拼装功能模块:初级开发者的脑洞保卫战与老码农的灵魂蘸料

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录当AI开…

Flowable——流程定义与部署(RepositoryService)

文章目录 前言 参考资料 流程图的部署、查询与删除 流程图的准备 流程的部署 指定已部署流程信息查询 删除指定已部署流程 结语 前言 前篇博客具体说了怎么使用flowable去自动建表,以及搭建配置前端UI绘图的界面。本篇博客主要说明对于已绘制好的流程图如何去进行部署。 Flow…

采用基于模型的方法实现车辆SOA威胁分析自动化

摘要尽管采用面向服务架构&#xff08;SOA&#xff09;有助于实现自动驾驶、空中下载更新等功能&#xff0c;但同时也增加了车辆遭受攻击的风险&#xff0c;可能对道路使用者造成伤害。为解决这一问题&#xff0c;相关标准&#xff08;ISO 21434 / 联合国欧洲经济委员会&#x…