字符串格式.format转换为变量

时间:2018-06-28 21:47:56

标签: python string while-loop iteration string.format

我正在尝试创建一个函数,该函数允许我使用while循环将字符串传递到age变量中。这是使用.format字符串的代码的简化版本。下面的代码按预期方式工作。

num = 1
while num<7:
    age = 'My age is {}'.format(num)
    print(age)
    num+=2

输出如下所示:

My age is 1
My age is 3
My age is 5

但是,当我尝试使用while循环在age变量中捕获字符串“我的年龄是{}”时,它不起作用。这是代码。

num = 1
age = 'My age is {}'
while num<7:
    age = age.format(num)
    print(age)
    num+=2

我得到以下输出。

My age is 1
My age is 1
My age is 1

您知道第二个示例中while循环中num不增加的原因吗?有什么解决方案?

2 个答案:

答案 0 :(得分:5)

您正在覆盖age字符串,因此在第二次迭代中无需格式化。您可以使用两个字符串-一个用于模板格式化的字符串,另一个用于格式化结果的字符串:

num = 1
template = 'My age is {}'
while num<7:
    age = template.format(num)
    print(age)
    num+=2

答案 1 :(得分:3)

第一次通过循环,您已经用数字替换了字符串中的{}。从那时起,format无需做任何事情,因为字符串中没有任何格式标记。