现在有一个需求, 询问用户的姓名, 年龄, 工作, 爱好, 然后打印成以下格式

************  info of Conan  ************
name: Conan
age: 23
job: student
hobbies: code
***************** end *****************

在没学格式化输出之前, 你会怎么实现呢? 你会发现, 如果直接用字符串拼接的方式去实现, 这也太麻烦了吧...

所以, 今天就学一下格式化输出的用法.

你会发现这一大堆字符串只有很少一部分是变化的, 其余部分都是一个样子. 所以我们可以先在那些需要变化的内容下放一个占位符, 然后通过把字符串里的占位符与外部变量做一个映射关系就可以了.

具体如下所示

name = input('name: ')
age = input('age: ')
job = input('job: ')
hobbies = input('hobbies: ') # 下面的每一个%s都是一个占位符
info = """
************ info of %s ************ # 代表 后面括号里的name
name: %s # 代表 后面括号里的name
age: %s # 代表 后面括号里的age
job: %s # 代表 后面括号里的job
hobbies: %s # 代表 后面括号里的hobbies
***************** end *****************
""" % (name, name, age, job, hobbies) # 这行的 % 就是把前面的字符串与括号后面的变量关联起来 print(info)

%s 就是代表字符串占位符, 除此之外, 还有%d(数字占位符).

如果把上面的age后面的%s 换成%d, 就代表必须是数字.

假如现在又有一个需求, 需要按照下列格式打印

我是 Conan, 年龄 18, 目前学习进度为1%.

如果这样写, 程序会报错:

name = input('name: ')
age = int(input('age: ')) msg = "我是%s, 年龄%d, 目前学习进度为1%." % (name, age) print(msg)

报错原因: 在格式化输出中, 只要出现 % 就认为是占位符的 % , 但是如果想向上面那样, 1%就是表示1%, 而不是占位符, 应该按照下面的方法:

name = input('name: ')
age = int(input('age: ')) msg = "我是%s, 年龄%d, 目前学习进度为1%%." % (name, age) print(msg)

我们注意到, 当我们真的只是想表达一个%的时候, 只需要写两个%就可以了, 第一个%是对第二个%的转义, 是告诉Python解释器这只是一个单纯的%, 而不是占位符.

『Python基础』第8节:格式化输出的更多相关文章

  1. 『Go基础』第8节 格式化输出

    输出就是将数据信息打印到电脑屏幕上. 本节我们就来学习一下Go语言中的三种输出方式: Print().Println().Printf(). 1.Print() Print()主要的一个特点就是打印数 ...

  2. 『Python基础』第4节:基础数据类型初识

    本节只是对基础数据类型做个简单介绍, 详情会在之后慢慢介绍 什么是数据类型? 我们人类可以分清数字与字符串的区别, 可是计算机不能. 虽然计算机很强大, 但在某种程度上又很傻, 除非你明确告诉它数字与 ...

  3. 『Python基础』第2节: Python简介及入门

    一. Python介绍 Python是一门高级计算机程序设计语言,1989年,荷兰的Guido von Rossum创造了它.Guido是是一个牛人,1982年,他从阿姆斯特丹大学获得了数学和计算机硕 ...

  4. 『Python基础』第39节 函数的返回值

    1. 函数的返回值 ​ 一个函数就是封装一个功能, 这个功能一般都会有一个最终结果的. ​ 比如写一个登录的函数, 最终登录是否成功你总得告诉我一声吧? ​ 还有咱们之前也用过 len() 这个函数, ...

  5. 『Python基础』第7节:基本运算符

    一. 基本运算符 运算按种类可以分为: 算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算. 今天我们只学习算数运算.比较运算.逻辑运算.赋值运算.成员运算 1.1 算数运算 以下假设 ...

  6. 『Python基础』第20节:深浅copy

    一. 赋值运算 l1 = [1, 2, 'conan', [11, 22]] l2 = l1 l1[0] = 111 print(l1) # [111, 2, 'conan', [11, 22]] p ...

  7. 『Python基础』第6节:流程控制之while循环

    在生活中经常遇到循环的事情, 比如循环列表播放歌曲等. 在Python中, 也有循环, 就是其流程控制语句while. 1. 基本循环 while 条件: 循环体 # 如果条件为真, 那么就执行循环体 ...

  8. 『Python基础』第5节:条件控制

    if 语句的使用 单分支 if 条件: 满足条件后要执行的代码 例如: if 2 < 3: print(222) print(333) 每个条件后面都要使用冒号 :, 表示接下来是满足条件后要执 ...

  9. 『Python基础』第1节 Windows环境下安装Python3.x

    一. Python安装 1. 下载安装包 https://www.python.org/downloads/release/python-374/ # 3.7安装包 # 如需安装python2.7版本 ...

随机推荐

  1. C#中使用typeof关键字和GetType()获取类的内部结构(反射机制)

    一.问题描述 java有反射机制,C#也有反射机制,在C#中typeof关键字用于获取类型的System.Type对象,该对象的GetMethods()方法可以得到类型中定义的方法对象的计集合,调用方 ...

  2. Qt 操作QDomDocument对象修改节点

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liulihuo_gyh/article/d ...

  3. CI框架常用函数(AR数据库操作的常用函数)

    用户手册地址:http://codeigniter.org.cn/user_guide/index.html 1.查询表记录$this->db->select(); //选择查询的字段$t ...

  4. NPAPI插件开发详细记录:用VS2010开发NPAPI插件步骤<转>

    原帖地址:https://blog.csdn.net/z6482/article/details/7660748 ------------------------------------------- ...

  5. java判断A字符串中是否包含B字符

    java.lang.String类提供的方法 public boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true. 例如: ...

  6. 截取完整网页图片的方法 Chrome 浏览器

    截取完整网页图片的方法:https://sspai.com/post/42193 要想使用截图功能,你需要首先确保 Chrome 已升级至 59 或更高版本.在想要截图的网页中,首先按下 ⌘Comma ...

  7. CMU Database Systems - Parallel Execution

    并发执行,主要为了增大吞吐,降低延迟,提高数据库的可用性 先区分一组概念,parallel和distributed的区别 总的来说,parallel是指在物理上很近的节点,比如本机的多个线程或进程,不 ...

  8. open jdk性能与稳定性测试比较(转载)

    因为oracle jdk从jdk8u201之后就不提供免费下载了,所以最近在看openjdk的分支实现,网上搜了下,有下列选择和比较(我们目前主要在跑的是open jdk,不少人推荐的zulu ope ...

  9. 004 API约定

    在具体的学习前,我还是决定学一下,REST风格中在ES中的约定. 1.多重索引 先准备数据: 如果不小心,json里的值写错了,修改过来,重新执行即可. PUT index1/_doc/1 { &qu ...

  10. [原]DOM、DEM、landcover,从tms服务发布格式转arcgis、google服务发布格式

    原作:南水之源 先看看tms和google服务器发布数据的数据排列:(goole地图与arcgis一样) 我现在手上有tms发布的数据,dom,dem等,现在要用arcgis server来发布这些数 ...