字符串中字符的获取
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了.
尝试编写程序,实现分段函数计算,如下表所示。
| x | y |
| x<0 | 0 |
| 0<=x<5 | x |
| 5<=x<10 | 3x-5 |
| 10<=x<20 | 0.5x-2 |
| 20<=x | 0 |
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/chaoguo1234/article/details/81277994
https://blog.csdn.net/weixin_41261833/article/details/103796759
http://blog.csdn.net/weixin_41261833/article/details/104130894
本文介绍了Python中字符串格式化的两种方法:format方法和f-string。通过实例展示了如何利用它们进行复杂的字符串拼接,包括指定宽度、精度等格式规则。同时,提到了在使用f-string时需要注意的lambda表达式括号问题。

1万+

被折叠的 条评论
为什么被折叠?



