python小咖 字符串的格式化输出 format方法,f方法等

本文介绍了Python中字符串格式化的两种方法:format方法和f-string。通过实例展示了如何利用它们进行复杂的字符串拼接,包括指定宽度、精度等格式规则。同时,提到了在使用f-string时需要注意的lambda表达式括号问题。
字符串中字符的获取
name = 'hanmeimei'
●获取单个字符: print(name[0])
●切片获取子字符串:
1. print(name[3:6])
操作符[n:m]会返回索引值在n和m之间的一个子字符串,包括索引值为n的字符,但是不包括
索引值为m的字符..或者说,返回索引n到m-1之间的子字符串.
2. print (name[3:6:2])
操作符[n:m:s]会返回索引|值在n和m之间,以s为步进的一个子字符串,即: n之后是n+s, 然后
是n+2s、.....以此类推。
3. print(name::-1])
使用切片时冒号前不添加任何值,则默认从第一个元素开始取值, 冒号后不使用任何索引下标
值,则切片操作-直执行至字符串末尾,以-1为步进值,则以倒序的方式输出。
字符串内置的方法
方法                    描述
.lower()                把字符串中的大写字母转换成小写字母
.upper()                把字符串中的小写字母转换成大写字母

.find("x")              查找x字符的第--个下标
.replace("old","new")   用其他字符串替换字符串

.count("X")             返回x字符在字符串中出现的次数
.isalpha()              如果字符串只包含字母则返回true
.isdigit()              如果字符串只包含数字则返回true
字符串的不可变性
字符串是不可变的,不可以改变字符串中的任何元素,如需改变字符串中的元素,则需
要新建一个字符串。
>>>a='hello python'
>>>a[0] ='p'
Traceback (most recent cal| last) 
Fite "<stdin>"tine 1-in <modute>.
TypeError: 'str' object does not support item assignment

>>>a='hello python'
>>>newa ='p' + a[1:]
>>>print(newa)

pello python
读取用户的输入
user jinput = input()
print(user input)
user_ input = input('请输入>")
print(user input)
input()括号内可填提示输入的文字
数据类型的强制转换
如何将一个浮点数类型强制转换成整数类型?
如何将一个看起来是数字的字符串转换成数字类型?
强制转换成整数:
int(某个数字/字符串等)

注意:input()得到的不管是什么内容都是字符串类型的数据!

强制转换成字符串:
str(某个数字/某种数据类型)

 

例:

输出:'电影《XXX》的评分为8.8:,《XXX》大受好评!'

一.基本方法

引号和很多的加号连接变量

movie_name='XXX'

movie_score=8.8

print('电影《'+movie_name='》的评分为' + str(movie_score)+':,《'+movie_name + '》大受好评!')
movie_name='XXX'

movie_score=8.8

print('电影《'+movie_name +'》的评分为' + str(movie_score) +':,《'+movie_name + '》大受好评!')
# 这种写法属初学者常规写法,冗长,加号多,不方便不美观


movie_name='银河补习班'
movie_score=6.7
s='电影《{}》的评分是{},电影《{}》大受好评!'.format(movie_name,movie_score,movie_name)
print(s)

#直接输入好模版,在要填内容的地方,放置花括号,后面跟.format( 在此括号内放置变量,数量和前面花括号对一样多,按顺序一一对应 )
# 在字符串里用{}表示要替换的变量位置,在字符串后面接上.format(变量1,变量2……)


# 稍再改进一点:
s='电影《{0}》的评分是{1}:,《{0}》大受好评!'.format(movie_name,movie_score)
# 在{}里标上数字,代表format里变量的位号(也是从0开始编号)


# 再改进:python3.6之后出现的,目前常用的f-strings:
# s=f'{变量}'
s=f'电影《{movie_name}》的评分是{movie_score}:,《{movie_name}》大受好评!'
# 字符串前面加个字母f,要代换的地方用花括号和变量直接表示.更简单.这样就不需用format了.

尝试编写程序,实现分段函数计算,如下表所示。
 

xy

x<0

0
0<=x<5x
5<=x<103x-5
10<=x<200.5x-2
20<=x0
x=float(input('请输入x的值:'))  #因为x的值可能是小数,所以转换类型不能用整数型int函数了.
if x <0:
	print(0)
# elif x>=0 and x < 5:
# elif 0<= x < 5:  #当有x在0到5类似的连续区间的时候,可以直接写成本句,与上一行写法功能相同.
elif x<5:        #按顺序执行程序到此句时,x<0已排除在外自然也就是x>=0了,所以可以省略,直接写成x<5
	print(x)
# elif 5<=x<10:    #同上,本句可以略写成x<10
elif x<10:
	print(3*x-5)  #注意3x在程序中要写成3*x,别忘了*号
#elif 10<=x<20:   #本句直接写成x<20如下行.
elif x<20:
	print(0.5*x-2)	
elif 20<=x:
	print(0)

下面的三种输出效果一样:

temp=input()
if temp[0:3]=='RMB':
    print('USD',f"{(eval(temp[3:])/6.78):.2f}",sep='')
elif temp[0:3]=='USD':
    print('RMB'+f"{(eval(temp[3:])*6.78):.2f}")
    print(f'RMB{(eval(temp[3:])*6.78):.2f}')

f'{}'的格式:

print(f"{'你今年的运势':*^12}")

***你今年的运势***

f'RMB{(eval(temp[3:])*6.78):.2f}'

RMB为字符串,{}里是要格式化的内容,

{}里面分两部分以:为隔,:前要输出的,:后为规则

其中规则:

都包在f后的引号中.

 

宽度与精度相关格式描述符
格式描述符    含义与作用
width    整数 width 指定宽度
0width    整数 width 指定宽度,开头的 0 指定高位用 0 补足宽度
width.precision    整数 width 指定宽度,整数 precision 指定显示精度
注1:0width 不可用于复数类型和非数值类型,width.precision 不可用于整数类型。 
注2:width.precision 用于不同格式类型的浮点数、复数时的含义也不同:用于 f、F、e、E 和 % 时 precision 指定的是小数点后的位数,用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数)。 
注3:width.precision 除浮点数、复数外还可用于字符串,此时 precision 含义是只使用字符串中前 precision 位字符。

示例:

f-string大括号内也可填入lambda表达式,但lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符,为避免歧义,需要将lambda表达式置于括号 () 内:

>>> f'result is {lambda x: x ** 2 + 1 (2)}'
  File "<fstring>", line 1
    (lambda x)
             ^
SyntaxError: unexpected EOF while parsing
 
>>> f'result is {(lambda x: x ** 2 + 1) (2)}'
'result is 5'
>>> f'result is {(lambda x: x ** 2 + 1) (2):<+7.2f}'
'result is +5.00  '

几个例子:

a=8
print("{0:0>8b}".format(a))
print(format(a,'0>8b'))

print(f"{6:0>8b}")
import sys
print(f'{sys.platform}')

00001000
00001000
00000110
win32

参考:

https://blog.csdn.net/yizhuanlu9607/article/details/89530982?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6

https://blog.csdn.net/chaoguo1234/article/details/81277994

https://blog.csdn.net/weixin_41261833/article/details/103796759

http://blog.csdn.net/weixin_41261833/article/details/104130894

 

 

 

内容概要 本资源是一套完整可运行的 Qt Widgets 批量图片压缩桌面工具源码,基于 Qt5/C++ 从零开发,专为初学者设计,分步实现图片批量处理全套功能。工具支持多选单张图片、直接读取整个文件夹内所有 JPG/PNG 图像,可自定义输出图片分辨率、调节 JPG0~100 区间压缩质量,自带锁定宽高比防拉伸变形功能;批量处理完成后自动统计每张图片压缩前后文件体积,计算整体压缩缩小比例,直观展示压缩效果。 适用人群 Qt/C++ 零基础初学者,学习 QImage 图像绘图、文件目录遍历、UI 交互开发; 需要本地批量处理图片的办公、设计、自媒体从业者; 想要学习图片缩放、JPG 压缩、本地文件 IO、进度条交互的开发学习者。 使用场景 自媒体批量压缩配图,降低图片体积节省上传流量; 摄影、设计批量统一图片尺寸,批量轻量化相册图片; 程序开发学习:QFileDialog 文件选择、QDir 文件夹遍历、QImage 缩放保存、QSlider 参数联动、批量循环界面防卡顿、文件大小格式化转换全套 Qt 图像开发实战案例。 工具核心功能清单 双模式导入图片:手动多选单张图片 / 一键读取整个文件夹全部图片; 自定义输出宽高分辨率,支持锁定原始宽高比,避免图片拉伸变形; 滑块调节 JPG 压缩质量 0~100,平衡图片清晰度与文件占用大小; 自定义输出保存目录,批量生成压缩后的图片文件; 实时进度条展示处理进度,循环中刷新界面,程序不会假死卡顿; 自动统计每张图片压缩前后体积,换算 KB/MB 直观展示; 批量完成弹窗汇总:图片总数、成功数量、单张大小对比、整体压缩节省空间比例; 完整模块化代码,功能拆分清晰,每段代码附带详细注释,新手可分步拆解学习。 其他说明 开发环境:Qt Creator + Qt5.15 MSVC,Windows 平台可直接编译运行; 源码结构清晰,功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值