2017-03-04 23 views
1

我想弄清楚如何将所有有效数字保留在一个值中。因此,例如,让我们说我想要的值“A”和“B”:Python 2.7,Sypder,保留十进制前的重要数字

a = 00 
    b = 00 

我希望能够保留两个0的,但如果它只是恢复到“0”。我曾尝试在'00'后添加小数点'。',但这只是给出'0.0'。仅供参考,我使用它来创建一个文件名我的代码如下:

  filename = 'Folder/File' + str(a) + '-' str(b) + '.file' 

,其中“B”将重申一次循环为:

b += 10 

,希望这将a设置为'01'等。然后我指出,如果B到达一定数量,则“A”值重申和“b”重置“00”:

if b > 50: 
     a += 1 
     b = 00 

由于可能是明显的,这是我的尝试初步建立了“时间'般的功能。这是因为改变的部分文件名是它们被创建的时间。这令人生气,因为我正在使用2670多个文件,我需要一个很好的方式来设置它们以供阅读。

回答

0

,而不是试图垫ab,你可以使用string formatting创建填充,当你计算filename

filename = 'Folder/File%02d-%02d.file' % (a, b) 
+0

请你再解释一下吗?我不是最好的编码python :( –

+0

@EoinMansfield我编辑的链接应该解释的东西 – Mureinik

+0

谢谢,我可以用它来帮助写入文件名,但现在当我在做'if'语句时,它声明它需要一个数字而不是一个字符串D:<。所以现在我需要将它转换为一个数字,同时保持'00'格式这是我得到的那是给我的错误 'if if s1> 50:' 'm1 + = 1' 's1 ='%(s)02d'%{“s”:00}' –

0

在计算机语言,数字存储在内部的二进制和无格式的概念。 16,为0x10,0b10000是格式化号码的所有方面16.

Python有字符串格式化,以帮助这一点:

>>> x = 16 
>>> format(x,'x') # format as hexadecimal 
'10' 
>>> format(x,'b') # format as binary 
'10000' 
>>> format(x,'#x') # hexadecimal with indicator 
'0x10' 
>>> format(x,'#b') # binary with indicator 
'0b10000' 
>>> format(x,'4') # decimal with minimal length 4 
' 16' 
>>> format(x,'04') # decimal with mimimal length 4 and leading zeroes 
'0016' 

您可以嵌入在格式字符串格式化,而且因为同指定不同的格式参数按指数。下面格式的第一个参数(索引0)三种不同的方式:

>>> '{0} {0:#x} {0:#b}'.format(16) 
'16 0x10 0b10000' 

在Python 3.6,有新的格式化字符串,以简化的语法:

>>> a,b,c=1,2,3 
>>> f'{c} {b} {a:02}' 
'3 2 01' 

对于示例:

filename = 'Folder/File{:02}-{:02}.file'.format(a,b) 

请参阅Format Specification Mini-Language