2016-10-31 10 views
-3

数字を先頭にゼロを付けてリストを表示する方法はありますか?< = 9ですが、文字列を使用しないでください。文字列を使用しないリスト内の先行ゼロ

私は割り当てられた学生を助けており、彼のモジュールは乱数のリストを計算し、そのリストをメインプログラムに返します。したがって、この状況ではformat()を使用することはできません。

import random 
list = [] 
x = 0 
while x < 6: 
    number = random.randint(1,70) 
    if number <= 9: 
     temp = str(number) 
     temp = temp.zfill(2) 
     list.append(temp) 
    else: 
     list.append(str(number)) 
    x+=1 

print(list) 

出力例:

['16', '41', '17', '40', '01', '28'] 

所望の出力:あなたが有力と、それを文字列としてフォーマットすることができ、印刷時に

[16, 41, 17, 40, 01, 28] 
+0

いいえ、あなたそれはできない。 '01'は2.xの8進数のリテラルです(ここでは常に10進整数の' 1'としてリストに表示されます)。3.xの構文エラーです。具体的に ''[16、41、17、40、01、28]'という文字列を作ることができます。 – jonrsharpe

+0

できません。 '08'と' 09'はPythonで有効な数字ではありません。 –

答えて

0

さて、あなたはその後、無先行ゼロで数値を格納できゼロ:

import random 
lst = [] # Avoid using keywords 
x = 0 
while x < 6: 
    number = random.randint(1,70) 
    lst.append(number) 
    x+=1 

print("[" + ", ".join(['%02d' % x for x in lst]) + "]") 
  • '%02d' % xstring formatting

  • ['%02d' % x for x in lst]はPythonでlist comprehensionです:最後の行はのは、それを打破しましょう、非常に奇妙です。

  • ", ".join(...)は、リストのすべての要素をコンマで区切って連結します。

しかし、パイソンについてのクールなことは、あなたが簡単な方法で、複雑な物事を行うために取得ということです、例えば、あなたのコードは、数行のコードに減らすことができます。

import random 
lst = random.sample(range(1, 70), 6) 
print("[" + ", ".join(['%02d' % x for x in lst]) + "]") 
関連する問題