ValueError: '=' 在字符串格式说明符中不允许对齐有时不工作

问题描述

错误信息:

alarm = f"{alarm_hour}:{alarm_minute:02}:{alarm_am_pm}"

ValueError: '=' alignment not allowed in string format specifier

我不知道为什么这段代码会给出错误,因为我之前在 's 程序中使用过相同的代码并且它工作正常。这是代码

TIME = f"{current_hour}:{current_minute:02}:{current_second} {am_pm}"

但是,每当我从 alarm_minute 中删除 :02 时,它都会起作用,因为我想以 2 位数显示数字。我很困惑代码有什么问题。两者几乎相同,但一个给出了错误,另一个则没有。

解决方法

假设您希望将数字格式化为两位数,当它是一位数时,您可以将其与字母 d 一起传递,让 fstring 知道您要格式化为以 0 为前导的两位数。您可以这样做类似于浮点数打印到 x 多个小数位。

num = 3
price = 4.9
print(f"{num:02d},{price:.2f}")

输出

03,4.90