2017-07-19 13 views
1

私は単語のリストを持っています。それからランダムな単語を選び、その単語に次の数字を連結するループを作りたいと思います。Pythonで変数とインクリメントの数値を連結する

は、これまでのところ私は「例外TypeError:ない、フォーマット文字列中に変換すべての引数」エラーがスローされます

import random 
wordList = ['some', 'choice', 'words', 'here'] 
for x in range(0, 10): 
    word = random.choice(wordList) 
    print word %(x) 

を持って

私は

for x in range(0, 10): 
    print "number%d" %(x) 

のフォーマットに従うことをしようとしていますしています正常に印刷されます

番号0 n umber1 number2の number3 number4 number5 number6 number7 number8 number9

私は私の問題は、文字列変数のフォーマットであると仮定し、私はそれを修正する方法を見つけ出すことはできません。

+1

'印刷語+ STRを中括弧を使用する場合(x)'は? – Will

+1

'print '{} {}'。フォーマット(word、x)'は動作するはずです –

+0

あなたはどんな出力を期待していますか?問題は 'print'文で' word'と書式設定文字列を使うことですが 'word'は' x'の値に書式指定( '%d'など)を含んでいません。 – Prune

答えて

3

EDITを動作するはずです。

文字列内での書式設定先を指定する必要があります。

for x in range(0, 10): 
    word = random.choice(wordList) 
    print "%s%d" %(word, x) 

それとも、onelinerを探しているなら、

for x in range(0, 10): 
    print "%s%d" %(random.choice(wordList), x) 

あなたは、Python 2.7以降または3.xを使用している場合は、代わりに中括弧を使用する方がはるかに簡単です。

for x in range(0, 10): 
    print("{}{}".format(random.choice(wordList), x)) 

しかし、あなたはPythonで2.6

for x in range(0, 10): 
    print("{0}{1}".format(random.choice(wordList), x)) 
+0

Python 2で中括弧を使うことができます –

+1

@Victor 2.6で中括弧を使うことはできますが、暗黙の参照は使用できません。 '' {0} {1}」。 3.6では、1つを追加して 'f-strings'を使うことができます:' f '{random.choice(wordList)} {x}' ' – AChampion

1

これは、すべての引数が文字列で変換されているわけではないことを意味します。これは、文字列の最後に "%d"を追加するのを忘れたからです。 @Alan Leuthardさんのコメントに基づいて使用されるより、私の意見では、読みやすい答え:これは

In [29]: import random 
     ...: wordList = ['some', 'choice', 'words', 'here'] 
     ...: for x in range(0, 10): 
     ...:  word = random.choice(wordList) + "%d" 
     ...:  print word %(x) 
     ...: 
here0 
here1 
some2 
words3 
words4 
some5 
here6 
here7 
words8 
words9 
関連する問題