1. 字符串的格式化问题
举例:要按照如下格式输出一句话
我叫xxx, 我住在xxxx, 我今年xx岁, 我喜欢做xxxxx
这里首先引入占位符概念:
%s 占位字符串%d 占位整数%f 占位小数
s0 = "我叫%s" % name
print(s0)
因此用这种格式法可以用如下表示方式
name = input("请输入你的名字:") #将输入的值存储在变量 name 中。input 函数返回的是字符串
address = input("请输入你的住址:") #将输入的值存储在变量 adress 中。input 函数返回的是字符串
age = int(input("请输入你的年龄:")) #将输入的值转换为整数类型后存储在变量 age 中。因为 input 函数返回的是字符串,所以使用 int() 函数进行转换。
hobby = input("请输入你的爱好:") #将输入的值存储在变量 hobby 中。input 函数返回的是字符串
第一种写法:
chart1 = "我叫%s, 我住在%s, 我今年%d岁, 我喜欢%s" % (name, address, age, hobby)
这种写法使用了字符串格式化,将之前收集到的用户信息插入到一段文本中,形成最终的字符串 chart1。在字符串中,%s、%d 等是格式化占位符,它们分别代表字符串和整数的插入位置,而后面的 % (name, address, age, hobby) 则是一个元组,包含了要插入到字符串中的值。
这种写法是按照顺序赋值的,确保了每个变量的值都插入到了正确的位置。每个占位都需要被赋值,而赋值的方法是在% ()中进行按顺序赋值,每个值之间用,隔开。
name变量的值会替换第一个%saddress变量的值会替换第二个%sage变量的值会替换%dhobby变量的值会替换最后一个%s。
如果你少赋值了一个占位符,比如这样:
chart1 = "我叫%s, 我住在%s, 我今年%d岁,我喜欢%s" % (name, address, age)
在这里少赋值了一个 hobby 在元组中,这时会产生一个 TypeError 错误,提示类似于:
TypeError: not enough arguments for format string
告诉你在格式化字符串时缺少了足够的参数。
第二种写法:
chart2 = "我叫{}, 我住在{}, 我今年{}岁, 我喜欢{}".format(name, address, age, hobby)
这种方法和之前提到的百分号 % 格式化方法相似,只是使用了不同的语法。
这段代码使用了字符串的 .format() 方法来创建一个包含用户信息的格式化字符串。
-
"我叫{}, 我住在{}, 我今年{}岁, 我喜欢{}":这是一个字符串模板,其中使用了花括号{}作为占位符,用来指示在这些位置插入后续传入的值。 -
.format(name, address, age, hobby):这是字符串的.format()方法,它用来将传入的值按顺序填充到字符串模板的占位符位置。传入的值依次是name、address、age和hobby。
在.format()字符串的格式化 {} 中,你可以使用一些格式化选项来自定义插入的值的样式。以下是一些常用的 {} 格式化选项:
-
基本用法:
{}: 默认情况,直接插入值。{:<width}: 左对齐,指定字段宽度。{:>width}: 右对齐,指定字段宽度。{:^width}: 居中对齐,指定字段宽度。
-
数字格式化:
{:.2f}: 浮点数,保留两位小数。{:+.2f}: 带正负号的浮点数,保留两位小数。{:.0f}: 浮点数,不保留小数部分。
-
整数格式化:
{:d}: 整数。{:x}: 十六进制。{:b}: 二进制。
-
字符串格式化:
{:.N}: 最大长度为 N 的字符串截断。{:.Ns}: 最小长度为 N 的字符串填充。{:<N}: 左对齐,最小长度为 N。{:>N}: 右对齐,最小长度为 N。{:^N}: 居中对齐,最小长度为 N。
-
日期时间格式化:
{:%Y-%m-%d}: 日期格式化为年-月-日。{:%H:%M:%S}: 时间格式化为时:分:秒。{:%Y-%m-%d %H:%M:%S}: 日期和时间格式化。
注意,这只是一小部分可能的格式化选项。Python 的格式化字符串支持非常灵活的方式来调整插入值的显示样式。你可以根据需求查阅官方文档或其他资源,以获取更详细和全面的信息。
第三种写法:
chart3 = f"我叫{name},我叫{name},我叫{name},我叫{name},我今年{age}岁,我叫{name},我叫{name}" # f-string
这段代码使用了 f-string,它是 Python 中一种最方便的字符串格式化方式,允许你在字符串中直接嵌入变量,并且可以在大括号 {} 内直接使用表达式。
-
f": 这个字符串以f开头,表示它是一个 f-string。 -
{name}: 在字符串中的{}中,变量name的值将会被插入。 -
{age}: 同样,在{}中插入变量age的值。
f-string 是一种在字符串中嵌入变量和表达式的格式化方法,它提供了多种方式来进行格式化。以下是一些常见的 f-string 格式化写法:
-
插入变量:
name = "Alice" age = 30 f"My name is {name} and I am {age} years old." -
数值格式化:
value = 123.456 f"The value is {value:.2f}" -
字符串格式化:
text = "Hello, World!" f"Text: {text.upper()}" -
表达式计算:
x = 5 y = 10 f"The sum of {x} and {y} is {x + y}" -
字典和属性:
person = {"name": "Bob", "age": 25} f"My name is {person['name']} and I am {person['age']} years old." -
调用函数:
def greet(name): return f"Hello, {name}!" f"{greet('Alice')}" -
在大括号内使用大括号:
value = 42 f"Curly braces inside f-string: {{value}}" -
日期时间格式化:
from datetime import datetime now = datetime.now() f"Current date and time: {now:%Y-%m-%d %H:%M:%S}" -
条件表达式:
x = 10 f"{x} is {'even' if x % 2 == 0 else 'odd'}" -
嵌套 f-string:
pythonname = "Alice" age = 30 f"My name is {name.upper()}, and I am {age + 5} years old."
这只是一小部分 f-string 的应用示例,它们能够使字符串的格式化更加直观和灵活,可以根据需要插入变量、表达式和函数的返回值。