2016-03-24 5 views
0

私はオーバーフローとPythonをスタックするのがとても新しいので、私に同行してください。Pythonの整数で範囲内のアイテムを掛ける

0 x 8 = 0 
1 x 8 = 8 
2 x 8 = 16 
3 x 8 = 24 
4 x 8 = 32 
5 x 8 = 40 
6 x 8 = 48 
7 x 8 = 56 
8 x 8 = 64 
9 x 8 = 72 

私はインターネットを検索し、次のことを試してみました:

エラーメッセージ促し
x=(int(z)*8 for z in range(10)) 
print(str(z) + 'x 8 = ' + str(x)) 

"TypeError: can only concatenate list (not "str") to list" 
"NameError: name 'z' is not defined" 

を私が試してみました私は、出力するコードを記述しようとしていますこれは 'z'の代わりに 'item'を使用し、運がない場合です。

私はこれが非常に基本的な作業であることは知っていますが、私がオンラインで見つけることができるすべての解決策は、すでに持っている無効なコードと同じです。ご提供いただけるお手伝いをありがとうございます。

+1

'z'は' for'のスコープ内でのみ定義されているため、2行目には定義されていません。これは最初の行だけです。 – morxa

答えて

0

変数zは、(ループのコンテキスト内で)最初の行にのみ定義され、コードの他の行からはアクセスできません。代わりに値をループして、各項目の操作と印刷を実行したいと思うでしょう。

for z in range(10): 
    print '{0} x 8 = {1}'.format(z, z * 8) 

# 0 x 8 = 0 
# 1 x 8 = 8 
# 2 x 8 = 16 
# 3 x 8 = 24 
# 4 x 8 = 32 
# 5 x 8 = 40 
# 6 x 8 = 48 
# 7 x 8 = 56 
# 8 x 8 = 64 
# 9 x 8 = 72 

他の代替は、(あなたがすでに行ったように)xに乗算結果を格納し、インデックスを取得するためにenumerateを使用してそれらのそれぞれを表示することをループすることです。

x = [z * 8 for z in range(10)] 
for k,value in enumerate(x): 
    print '{0} x 8 = {1}'.format(k, value) 
0

これを試してみてください:

x=(int(z)*8 for z in range(10)) 
print("\n".join(str(z) + ' x 8 = ' + str(y) for z, y in zip(range(10), x))) 

x8乗算のリストです。その後、forループを使用してリストを反復処理し、zip()関数を使用してすべてのペアを取得します。その後、改行を指定して\nに参加します。

関連する問題