2017-10-06 79 views
0

我有以下代码:第一个变量代替他人

from a3_functions import convert_date 

date=int(input('Please enter the date in the format: ddmmyyyy')) 

days, months, years=convert_date(date) 

print("{0:02d}/{0:02d}/{0:04d}".format(days, months, years)) 

print(days) 

print(months) 

print(years) 

但是当我运行它输出如下:

Please enter the date in the format: ddmmyyyy03061314 
03/03/0003 
3 
6 
1314 

为什么我输出的句子形式只是输出的第一变量三次?即使当我单独打印它们时,它们也会打印它们各自的值。

+0

请使用格式化工具,在你的问题来格式化代码使其更具可读性。 – ingofreyer

+0

如果我的回答对您有帮助,如果您可以请将其标记为正确答案,我将非常高兴。如果您需要更多解释,请回答更多问题。 – ingofreyer

回答

0

您的格式字符串使用位置索引(全部为0,因此取第一个元素)。如果你想保持位置参数

>>> print("{:02d}/{:02d}/{:04d}".format(days, months, years)) 
03/06/1314 

,你可以只是递增的数字是这样的::

试试这个格式的字符串,而不是(我基本只在:前所有0移除)

>>> print("{0:02d}/{1:02d}/{2:04d}".format(days, months, years)) 
03/06/1314 

或者,你也可以命名位置使用一个更可读的格式字符串:

>>> print("{day:02d}/{month:02d}/{year:04d}".format(day=days, month=months, year=years)) 
03/06/1314 

PyFormat拥有新风格的格式字符串一个很好的概述:

款式新格式化是可能的(在Python 2.6甚至 强制性)给占位符的明确位置索引。

这允许重新排列显示的顺序而不改变参数 。

此操作不适用于旧式格式。

新: '{1} {0}' 格式( '一', '二')

输出:两个一