【问题标题】:Beginner - what does %i do for a tuple in python [duplicate]初学者 - %i 对 python 中的元组做了什么 [重复]
【发布时间】:2022-01-14 15:59:25
【问题描述】:

在 W3resource 网站上有一个初学者exercise #10 要求以下内容:

编写一个 Python 程序来显示考试时间表。 (从exam_st_date 中提取日期)。转到编辑器 考试日期=(2014 年 11 月 12 日)

样本输出:考试将从 2014 年 11 月 12 日开始*

在示例解决方案中给出了以下代码:

exam_st_date = (11,12,2014)
print( "The examination will start from : %i / %i / %i"%exam_st_date)

%i 是什么意思或做什么以及它如何与 python 中的元组交互?

【问题讨论】:

  • 这意味着他们使用的是旧的字符串格式化方法
  • 您是否尝试过运行该代码?除了输出 %i 和 %d 是同义词之外,它应该是不言自明的
  • %i 是有符号整数十进制值的占位符。
  • i 本身与元组无关。然而,由于给% 运算符提供了一个元组参数,因此元组的每个元素都从左到右“分配”到格式字符串中的不同%i
  • 新代码应使用format 方法或f-strings,而不是使用% 运算符进行字符串格式化。不过,了解% 对于了解logging 模块如何构造日志消息仍然很有用。

标签: python python-3.x string tuples


【解决方案1】:

这是旧的string formatting 语法。 This 页面描述了可接受的格式说明符 - %i 将参数格式化为“有符号整数十进制”。

现代的等价物是str.format 函数,或f-strings

【讨论】:

  • 这并不能解释%i 的含义
  • 呵呵,我在阅读问题时也跳过了%i 部分。
  • @Sayse 查看我的编辑。
  • 如果使用当前的字符串格式化语法,代码会是什么样子?
  • 直接翻译可能类似于:print("The examination will start from : {} / {} / {}".format(*exam_st_date))print(f"The examination will start from : {exam_st_date[0]} / {exam_st_date[1]} / {exam_st_date[2]}")。如果我正在编写它,我会使用 datetime.date 而不是元组,这(以及其他好处)让您可以使用 date-aware formatting specifiers,例如print(f"The examination will start from : {exam_st_date:%d / %m / %Y}")
猜你喜欢
  • 2019-05-30
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
相关资源
最近更新 更多