51.`.format`字符串格式化—最适合小白的格式化笔记

news2024/11/24 16:29:53

51..format字符串格式化

文章目录

  • 51.`.format`字符串格式化
    • 1.课题导入
    • 2.知识回顾
    • 3.`.format`的基本用法
      • 3.1{}为空
      • 3.2 {}中有编号
      • 3.3 {}中有变量名
    • 4.浮点数的格式化
    • 5.`.format`官方语法
    • 6. `.format`格式化语法总结
    • 7. 总结
    • 8.课堂练习

1.课题导入

【描述】

用input函数输入你每个月的工资、每天消费的平均值及本月的天数,编写代码输出你当月的余额(假设有剩余)。

【参考】

输入
9000
80
31
输出
本月我还剩余6520.0元。

【备注】月工资为9000元,平均每天消费80元,本月有31天。

【体验代码】

字符串拼接法:

# input函数输入你的月工资,用变量gz存储
gz = input('你每月的工资是多少元?')

# input函数输入你每天的平均消费,用变量xf存储
xf = input('你平均每天消费多少钱?')

# input函数输入本月的天数,用户变量x存储
x = input('本月有多少天?')

# 余额=工资-平均消费*天数
yu = float(gz) - float(xf)*int(x)

print('本月我还剩余'+str(yu)+'元。')

【终端输出】

本月我还剩余6520.0元。

【代码解析】

  1. input 函数获取的内容是字符串类型。如果获取的内容是需要用于计算的数字,要先将字符串转换成整数或浮点数。

  2. float(gz)float(xf)用float函数将终端输入的内容转换成浮点数参与计算。

  3. int(x)用int函数将输入的内容转换成整数参与计算。

  4. yu = float(gz) - float(xf)*int(x)得到的数据类型是浮点数。

  5. str(yu)用str函数将yu的数据类型转换成字符串和前面的字符进行拼接。

2.知识回顾

上面的代码需要同时输出文本信息和变量,我们用了字符串拼接的方法。

我们发现输出有数值变量的一句话要先判断变量的数据类型,然后用函数统一数据类型,操作比较麻烦。

除了字符串拼接方法,同时输出文本信息和变量,我们还可以用更便捷的方法:字符串格式化。

之前我们学了一种格式化方法:%占位符格式化。

我们先回顾 %占位符格式化语法。

【目标任务】

【描述】

输入自己的姓名、籍贯和毕业学校,按指定的格式输出到屏幕上。

【输入】

第一行输入姓名。

第二行输入籍贯。

第三行输入毕业学校。

【输出】

大家好,我叫XXX,来自XXX,毕业于XXX!

【示例】

输入:
安迪
云南
复旦大学
输出:
大家好,我叫安迪,来自云南,毕业于复旦大学!

【体验代码1】

name = input()
city = input()
school = input()
print("大家好,我叫%s,来自%s,毕业于%s! "  %  (name,city,school))

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学! 
  1. 3个%s 是我要替换的内容。

  2. %是占位符格化语法,是固定用法。

  3. name,city,school是我要替换%s的变量,我也称它们为要格式化的变量。

3..format的基本用法

本节我们学第2种字符串格式化方法。

format[ˈfɔːmæt]:格式。

.format的通常有3种用法:

  1. {}为空。

  2. {}中有编号。

  3. {}中有变量名。

3.1{}为空

为了讲解方便,这里我直接给变量赋值,不再从终端获取数据。

name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{},来自{},毕业于{}!".format(name, city, school))

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学!

【编写思路】

一.编写格式化模板。

  1. 我们要输出的内容是:大家好,我叫安迪,来自云南,毕业于复旦大学!

  2. 把要格式化的内容用英文大括号{}替换:

安迪替换为大括号{}

云南替换为大括号{}

复旦大学替换为大括号{}

格式化模板为:"大家好,我叫{},来自{},毕业于{}!"

二. 语法关键字。

  1. 输入一个英文小圆点.

  2. format关键字

三. 要格式化的变量。

  1. (name, city, school)英文圆括号中写入要格式化的变量名。

【语法解析】

{}为空时默认按格式化变量的顺序自动格式化到大括号中。

【调整格式化变量的顺序】

(name, city, school)顺序调整为(school, name, city)

运行下面的代码,观察输出结果。

name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{},来自{},毕业于{}!".format( school, name, city))

【终端输出】

大家好,我叫复旦大学,来自安迪,毕业于云南!

观察输出结果,我们发现在{}为空时,它是按照后面要格式化变量的顺序进行填充的。

因为school在第1个,它替换了第1个{},输出内容变成了我叫复旦大学。

{}为空时需要重点关注要格式化变量的顺序。

【{ }中输入了一个空格】

name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{ },来自{ },毕业于{ }!".format( school, name, city))

【终端输出】

KeyError: ' '

在编写格式化模板时,我在{}中敲了一个空格。

我叫{}变成我叫{ }

观察输出结果,程序报错。

初学者千万注意,这里的{}中是不能写入空格的。

3.2 {}中有编号

print("大家好,我叫{0},来自{1},毕业于{2}!".format("安迪", "云南","复旦大学"))

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学!

【编写思路】

一.编写格式化模板。

  1. 我们要输出的内容是:大家好,我叫安迪,来自云南,毕业于复旦大学!

  2. 把要格式化的内容用英文大括号加编号{编号}替换:

安迪替换为{0}

云南替换为{1}

复旦大学替换为{2}

格式化模板为:"大家好,我叫{0},来自{1},毕业于{2}!"

二. 语法关键字。

  1. 输入一个英文小圆点.

  2. format关键字

三. 要格式化的内容。

  1. ("安迪", "云南", "复旦大学")英文圆括号中写入要格式化的内容。

【语法解析】

{编号}:大括号中有编号时,按照格式化变量的编号顺序进行格式化。

【温馨提示】

Python中的正索引是从0开始编号的。

这里的编号顺序也是从0开始。

  1. {0}表示要格式化的第1个变量,即"安迪"。

  2. {1}表示要格式化的第2个变量,即 “云南”。

  3. {2}表示要格式化的第3个变量,即 “复旦大学”。

【多次格式化同一个变量】

print(
    "大家好,我叫{0},来自{1},我的同桌也来自{1},我们班有5个同学来自{1}!"
.format("安迪", "云南")
)

【终端输出】

大家好,我叫安迪,来自云南,我的同桌也来自云南,我们班有5个同学来自云南!

【代码解析】

上述代码格式化模板中我用了3个{1},即"云南"我使用了3次。

只要内容相同,我们是可以多次使用的。

【格式化变量的顺序影响输出结果】

name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{0},来自{1},毕业于{2}!".format(school, name, city ))

【终端输出】

大家好,我叫复旦大学,来自安迪,毕业于云南!

【代码解析】

根据格式化变量(school, name, city )的顺序:

{0}要格式化的变量是school,因此输出了我叫复旦大学

{1}要格式化的变量是name,因此输出了来自安迪

3.3 {}中有变量名

print(
    "大家好,我叫{name},来自{city},毕业于{school}!"
    .format(name = "安迪", school = "复旦大学", city = "云南")
    )

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学!

【编写思路】

一.编写格式化模板。

  1. 我们要输出的内容是:大家好,我叫安迪,来自云南,毕业于复旦大学!

  2. 把要格式化的内容用英文大括号加变量名{变量名}替换:

安迪替换为{name}

云南替换为{city}

复旦大学替换为{school}

格式化模板为:"大家好,我叫{name},来自{city},毕业于{school}!"

二. 语法关键字。

  1. 输入一个英文小圆点.

  2. format关键字

三. 要格式化的变量。

  1. (name = "安迪", school = "复旦大学", city = "云南")英文圆括号中写入已经赋值了的格式化变量。

【代码解析】

  1. {name}要替换的内容也可以直接用英文大括号加变量名表示。

  2. (name = "安迪", school = "复旦大学", city = "云南")给要格式化的变量直接赋值。

  3. 这种情况下不用考虑格式化变量的顺序。

  4. 程序会对照变量名进行格式化。

4.浮点数的格式化

【目标任务】

格式化输出3位数的小数。

【示例】

将3.1415926格式化后输出3.142。

【体验代码】

# :是固定语法
# .3 表示保留小数点后3位
# f 表示浮点数
print("{:.3f}".format(3.1415926))

【终端输出】

3.142

【编写思路】

  1. 输入英文冒号:

  2. 输入一个英文小圆点.

这里点表示告诉程序后面要采取的是精度操作,即保留小数点位数的操作。

  1. 输入一个整数,表示小数点保留的位数。

.1表示保留1位小数。

.2表示保留2位小数。

.3表示保留3位小数。

  1. f表示数据类型为浮点数。

  2. 再输入一个英文小圆点.

这里.format是格式化语法固定搭配。

  1. 输入format关键字。

  2. 要格式的浮点数本身或浮点数变量名。

:.1f保留1位小数】

print("{:.1f}".format(3.1415926))

【终端输出】

3.1

:.2f保留2位小数】

print("{:.2f}".format(3.1415926))

【终端输出】

3.14

:.4f保留4位小数】

print("{:.4f}".format(3))

【终端输出】

3.0000

5..format官方语法

【以下内容不需要掌握】

【官方语法参考】

{参数序号:格式控制标记}.format(*args,**kwargs)

  1. 参数序号是位置参数或关键字参数传递过来的参数变量。

  2. 英文冒号:是固定语法。

  3. 格式控制标记用来控制参数显示时的格式。这里有9个可选的标记。

有对齐方式:<表示左对齐;>表示右对齐;^居中对齐;=数字填充。

有精度:精度即用英文小圆点.表示,后面紧跟一个整数。操作对象为小数表示小数保留的位数;操作对象为字符串表示截取字符的个数。

有输出类型:默认为s;s表示字符;d表示整数;f表示浮点数。

还有6种这里不做介绍。

  1. .format是格式化语法。

  2. *args表示位置参数。

  3. **kwargs表示关键字参数。

上面是str.format格式化语法的官方介绍。

很多教材里也都是这么叙述的。

如果我像这样写,初学者很难看懂。

因此我用了大白话对官方描述进行了翻译。

初学者不用理解位置参数、关键字参数等含义,你把它理解成要格式化的对象即可。

其实,Python中很多函数都有很多个可选参数,例如print函数也有4个参数,我都没做详细介绍。

初学者不是研究者,我们先掌握基础语法和常用方法即可。

6. .format格式化语法总结

  1. {}
name = "安迪"
city = "云南"
school = "复旦大学"
print(
    "大家好,我叫{},来自{},毕业于{}!"
    .format(  name, city, school)
    )

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学!
  1. {编号}
print(
    "大家好,我叫{0},来自{1},毕业于{2}!"
    .format("安迪", "云南","复旦大学")
    )

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学!
  1. {变量名}
print(
    "大家好,我叫{name},来自{city},毕业于{school}!"
    .format(name = "安迪", school = "复旦大学", city = "云南")
    )

【终端输出】

大家好,我叫安迪,来自云南,毕业于复旦大学!
  1. :.4f保留4位小数
print("{:.4f}".format(3))

【终端输出】

3.0000

【备注】.format格式化语法用例题理解更为直观。

.format语法主要由3个部分组成:

  1. 格式化模板,即要输出的内容,需要格式化的地方用{}代替。

  2. .format,格式化语法。

  3. 要格式化的变量。

7. 总结

在这里插入图片描述

8.课堂练习

  1. .format格式化语法输出:我是白敬亭,今年29岁。

【体验代码】

# 原样输出:我是白敬亭,今年29岁。
print('我是白敬亭,今年29岁。')

print('我是{},今年{}岁。'.format('白敬亭',29))

print('我是{name},今年{age}岁。'.format(name='白敬亭',age=29))

【终端输出】

我是白敬亭,今年29岁。
我是白敬亭,今年29岁。
我是白敬亭,今年29岁。
  1. .format格式化语法输出:今天是12月17日,油价8.5元每升。

【体验代码】

# 方法一
print('今天是{},油价{}元每升。'.format('12月17日',8.5))

# 方法二
print('今天是{data},油价{price}元每升。'.format(data='12月17日',price=8.5))

【终端输出】

今天是12月17日,油价8.5元每升。
今天是12月17日,油价8.5元每升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL中WHERE后跟着N多个OR条件会怎样...

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a;叶金荣文章来源&#xff1a;社区原创 可能会执行非常慢&#xff0c;线上生产环境千万别写出这种SQL ... 背景交…

Docker+Gitlab+Jenkins+Springboot

安装Gitlab 开放防火墙端口80和配置映射文件夹 firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --reload mkdir -p /docker_data/gitlab/{data,logs,config}启动Gitlab容器&#xff08;启动容器之前确保80&#xff0c;443端口没用被占用&#xff0c;被…

H3C双点双向路由引入,以及使用路由策略进行路由控制,路由学习的配置

如下拓扑中&#xff0c;存在两个路由域&#xff0c;左边为isis区域&#xff0c;所有设备均为level-1-2角色。右边为ospf区域&#xff0c;所有使能ospf的接口均在area0区域中&#xff1a; 组网中需要在R1和R3上&#xff0c;分别将各自的isis路由引入到ospf进程中&#xff0c;同时…

Go C 编程 第9课 放飞汽球(魔法学院的奇幻之旅 Go C编程绘图)

Goc编程第八课 Goc编程第八课_哔哩哔哩_bilibili Goc编程第九课 Goc编程第九课_哔哩哔哩_bilibili 59.实心椭圆 (魔法学院第9课) 难度&#xff1a;1 登录 60.双色椭圆 (魔法学院第9课) 难度&#xff1a;1 登录 61.气球串 (魔法学院第9课) 登录 62.同心圆环 (魔法学院第9课…

C++类与对象的应用—日期计算器

目录 一、前言 二、日期类的实现 检查日期的合法性 < 运算符重载 运算符重载 <运算符重载 >运算符重载 >运算符重载 !运算符重载 进一步优化 日期天数 日期天数 日期-天数 日期-天数 前置&&后置 前置--&&后置-- 思路&#…

强化学习的基础知识和6种基本算法解释

强化学习的基础知识和概念简介&#xff08;无模型、在线学习、离线强化学习等&#xff09; 机器学习(ML)分为三个分支:监督学习、无监督学习和强化学习。 监督学习(SL):关注在给定标记训练数据的情况下获得正确的输出无监督学习(UL):关注在没有预先存在的标签的情况下发现数据…

[附源码]Python计算机毕业设计Django校园疫情防范管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

我的周刊(第070期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目streamlit[1]用 Python 快速构建数据应用&#xff1…

微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权自动登录业务系统)

&#x1f60a; 作者&#xff1a; 一恍过去&#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390&#x1f38a; 社区&#xff1a; Java技术栈交流&#x1f389; 主题&#xff1a; 微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权自…

产品经理快速入门指南之常见问题篇

产品经理作为近几年互联网最炙手可热的岗位&#xff0c;可谓是赚足了眼球。其实呢&#xff0c;产品经理是很难定义的一个角色&#xff0c;如果非要一句话定义&#xff0c;那么产品经理是为终端用户服务&#xff0c;负责产品整个生命周期的人。今天这篇文章小编会带大家了解一下…

交通部1078-2016版中的音视频协议的一点想法

交通部1078的音视频中的格式有点像TS流, 交通部中1078的音视频的解析用的走的HTTP的协议,内容是流媒体,之前用的是ffmpeg解析的内容流之前是把payload中的数据流区分出音频,视频直接塞给ffmpeg,由ffmpeg推两路流到rtmp协议上去,这种方法有点粗暴, 最近分析ffmpeg源码发现交通…

谷歌通过Chrome简化登录安卓密码支持

谷歌宣布&#xff0c;它正在为其 Chrome 网络浏览器和 Android 操作系统引入密码支持&#xff0c;以简化跨应用程序、网站和设备的登录。 谷歌今天表示&#xff1a; “密码是密码和其他可钓鱼身份验证因素的一种更安全的替代品。它们不能重复使用&#xff0c;不会在服务器漏洞…

AngularJS 2.0 稳定版真的发布了!

导读之前我们还哀叹&#xff0c;谷歌的 AngularJS 2.0 的稳定版看起来年底也未必能见到&#xff0c;然而&#xff0c;在 9 月 14 日谷歌总部召开的一个会议上&#xff0c;突然就宣布最终的稳定版发布了——而这距离前一个版本 RC7 的发布才过去了一天。 AngularJS 2.0 的开发始…

详解入门安全测试最难懂的概念 —— CSRF

对于刚刚入门安全的同学来说&#xff0c;csrf是最难理解的概念之一&#xff0c;本文会用最简单的方式对csrf进行讲解&#xff0c;包括csrf的定义&#xff0c;csrf典型的攻击流程以及如何对其进行防范&#xff0c;希望本文能够帮到大家&#xff01; CSRF定义 CSRF&#xff08;…

Nacos学习笔记 (1)Nacos的简介与安装

1. Nacos 介绍与发展前景 1.1 官网概览&#xff1a; Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一…

性能测试(一)—— 概述、策略、指标、流程

目录 一、性能测试概述 1、为什么要进行性能测试&#xff1f; 2、性能测试的概念 2.1 什么是性能&#xff1f; 2.2 什么是性能测试&#xff1f; 2.3 性能测试目的 3、性能测试与功能测试 3.1 焦点不一样 3.2 关系 二、性能测试策略 1、性能测试策略 1.1 基准测试 …

PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

1080608 28.8 KB PO的思想最早是2013年由IT大佬Martin Flower提出的&#xff1a; martinfowler.com bliki: PageObject A page object wraps an HTML page, or fragment, with an application-specific API, allowing you to manipulate page elements for testing without d…

MVC操作方法如何绑定Stream类型的参数

1、我需要读取HTTP消息的整个 body 来填充 MVC 方法参数&#xff1b; 2、HTTP消息的 body 不是 form-data&#xff0c;而是完全的二进制内容。 最简单的方法就是不使用模型绑定&#xff0c;即在MVC方法中直接访问 HttpContext.Request.Body。 var request HttpContext.Requ…

[附源码]计算机毕业设计Python的物品交换平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

使用设备树给DM9000网卡_触摸屏指定中断

目录 1 在设备树中描述网卡中断 2 dm9dev9000c.c 3 在设备树中描述触摸屏中断 1 在设备树中描述网卡中断 srom-cs420000000 {compatible "simple-bus";#address-cells <1>;#size-cells <1>;reg <0x20000000 0x8000000>;ranges;ethernet20000…