【Python入门】字符串的扩展(二)

简介: 【Python入门】字符串的扩展(二)

4. 格式化的精度控制


4.1 格式化字符串的过程中做数字的精度控制

如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位

name = "传智播客"
setup_year = 2006
stock_price = 19.99
message = "%s,成立于:%d,我今天的股价是:%f" % (name, setup_year, stock_price)
print(message)


代码结果:

传智播客,成立于:2006,我今天的股价是:19.990000

细心的同学可能会发现:

浮点数19.99,变成了19.990000输出

这里我们就要讲解一下,字符串格式化之数字精度控制。


4.2 字符串格式化 - 数字精度控制

我们可以使用辅助符号"m.n"来控制数据的宽度和精度


m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效


.n,控制小数点精度,要求是数字,会进行小数的四舍五入

示例:


%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。


%5.2f:表示将宽度控制为5,将小数点精度设置为2

小数点和小数部分也算入宽度计算。
如,对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35


%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35


体验一下如下代码的快乐吧。

num1 = 11
num2 = 11.345
print("数字11宽度限制5,结果是:%5d" % num1)
print("数字11宽度限制1,结果是:%1d" % num1)
print("数字11.345宽度限制7,小数精度2,结果是:%7.2f" % num2)
print("数字11.345不限制,小数精度2,结果是:%.2f" % num2)


代码结果:

数字11宽度限制5,结果是:   11
数字11宽度限制1,结果是:11
数字11.345宽度限制7,小数精度2,结果是:  11.35
数字11.345不限制,小数精度2,结果是:11.35


4.3 总结

精度控制的语法是:

m.n的形式控制,如%5d、%5.2f、%.2f

m和.n均可省略

如果m比数字本身宽度还小,会发生什么事?

m不生效

.n会对小数部分做精度限制,同时:?

会对小数部分做四舍五入


5. 字符串格式化方式2


5.1 字符串格式化 - 快速写法

目前通过%符号占位已经很方便了,还能进行精度控制。

可是追求效率和优雅的Python,是否有更加优雅的方式解决问题呢?

那当然:有

通过语法:f"内容{变量}"的格式来快速格式化

看如下代码

"""
演示第二种字符串格式化的方式:f"{占位}"
"""
name = "恒川"
set_up_year = 2022
stock_price = 190.9
# f: format
print(f"我是{name},我热爱跑步在:{set_up_year}年,我今天的热量是:{stock_price}")


代码结果:

我是恒川,我热爱跑步在:2022年,我今天的热量是:190.9

注意:这种写法不做精度控制,也不理会类型,适用于快速格式化字符串


5.2 总结

可以通过

f”{变量} {变量}”的方式进行快速格式化


这种方式:


不理会类型

不做精度控制

适合对精度没有要求的时候快速使用


6. 对表达式进行格式化


6.1 什么是表达式

刚刚的演示,都是基于变量的。

可是,我想更加优雅些,少写点代码,直接对“表达式”进行格式化是否可行呢?

那么,我们先了解一下什么是表达式。


表达式:一条具有明确执行结果的代码语句

如:

1 + 1、5 * 2,就是表达式,因为有具体的结果,结果是一个数字

又或者,常见的变量定义:

name = “张三” age = 11 + 11

等号右侧的都是表达式呢,因为它们有具体的结果,结果赋值给了等号左侧的变量。


6.2 表达式进行字符串格式化

那么,对于字符串格式化,能否直接格式化一个表达式呢?

可以,上代码:

"""
演示对表达式进行字符串格式化
"""
print("1 * 1 的结果是:%d" % (1 * 1))
print(f"1 * 2的结果是:{1 * 2}")
print("字符串在Python中的类型名是:%s" % type("字符串"))


代码结果:

1 * 1 的结果是:1
1 * 2的结果是:2
字符串在Python中的类型名是:<class 'str'>


在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码哦


6.3 总结

表达式是什么?

表达式就是一个具有明确结果的代码语句,如 1 + 1、type(“字符串”)、3 * 5等

在变量定义的时候,如 age = 11 + 11,等号右侧的就是表达式,也就是有具体的结果,将结果赋值给了等号左侧的变量

如何格式化表达式?

f"{表达式}"

“%s \ %d \ %f” % (表达式、表达式、表达式)


6.4 股价计算小程序练习

定义如下变量:


name,公司名

stock_price,当前股价

stock_code,股票代码

stock_price_daily_growth_factor,股票每日增长系数,浮点数类型,比如1.2

growth_days,增长天数

计算,经过growth_days天的增长后,股价达到了多少钱

使用字符串格式化进行输出,如果是浮点数,要求小数点精度2位数。

示例输出:


提示,可以使用: 当前股价 * 增长系数 ** 增长天数, 用来计算最终股价哦

如,股价19.99 * 系数1.2 ** 7天 = 71.62778419199998,小数点现在精度2位后结果:71.63


本题代码如下:

"""
讲解字符串格式化的课后练习题
"""
# 定义需要的变量
name = "传智播客"
stock_price = 19.99
stock_code = "003032"
# 股票 价格 每日 增长 因子
stock_price_daily_growth_factor = 1.2
growth_days = 7
# 每天都在增长,然后连续增长七天,七天的增长都是1.2,所以是1.2的七次方
finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_days
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数: %.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days, finally_stock_price))
# 这里的f注意要写成保留几位的形式


如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞👍作为鼓励,并评论收藏一下⭐,谢谢大家!!!

制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。

相关文章
|
11天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
9天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
9天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
9天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
9天前
|
缓存 监控 测试技术
Python中的装饰器:功能扩展与代码复用的利器###
本文深入探讨了Python中装饰器的概念、实现机制及其在实际开发中的应用价值。通过生动的实例和详尽的解释,文章展示了装饰器如何增强函数功能、提升代码可读性和维护性,并鼓励读者在项目中灵活运用这一强大的语言特性。 ###
|
8天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
20 3
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
10天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
11天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!
|
12天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。