2016-11-05 8 views
1

別の行に各番号とその広場を印刷Forループ:Pythonの - 私は数字のリストを持っている

nums = [12, 10, 32, 3, 66, 17, 42, 99, 20] 

私の最初の仕事は、このように、新しい行に各番号を印刷しました

nums = [12, 10, 32, 3, 66, 17, 42, 99, 20] 
for i in nums: 
    print(i) 

今私はanothを記述する必要があります。

12 
10 
32 
3 
66 
17 
42 
99 
20 

は、私は、リスト内の整数を印刷し、そのループのために作成することによって、これを行うことができましたえー、このような各番号と新しい行にその四角を印刷したループ、のために:

The square of 12 is 144 
The square of 10 is 100 
The square of 32 is 1024 
The square of 3 is 9 
The square of 66 is 4356 
The square of 17 is 289 
The square of 42 is 1764 
The square of 99 is 9801 
The square of 20 is 40 

これまでのところ私は実際に乗値を印刷することができましたが、自分で別の行にそれらを取得することはできません。私はまた値のまわりの括弧を取り除く必要があります。

nums = [12, 10, 32, 3, 66, 17, 42, 99, 20] 
for i in nums: 
    print(i) 

squared = [ ] 

for i in nums: 
    squared.append(i * i) 
    print("The square of", i, "is", squared) 

をもたらし:

12 
10 
32 
3 
66 
17 
42 
99 
20 
The square of 12 is [144] 
The square of 10 is [144, 100] 
The square of 32 is [144, 100, 1024] 
The square of 3 is [144, 100, 1024, 9] 
The square of 66 is [144, 100, 1024, 9, 4356] 
The square of 17 is [144, 100, 1024, 9, 4356, 289] 
The square of 42 is [144, 100, 1024, 9, 4356, 289, 1764] 
The square of 99 is [144, 100, 1024, 9, 4356, 289, 1764, 9801] 
The square of 20 is [144, 100, 1024, 9, 4356, 289, 1764, 9801, 400] 

は、私は括弧を取り除くと、一方だけが行ごとに値を乗含める必要が取得する必要があります(つまりに対応する私の試みは

左側の整数)。私はこれをどのようにするべきですか?

+2

なぜリストを構築しますか? 'i * i'の結果を出力するために作成した* first *ループで' print() 'を使わないのはなぜですか? –

+3

最初の例と同じ方法で、ループの中で印刷してください: 'print("、 "i"は "、i * i)'です。新しいリストに値を収集する必要はありません。 – idjaw

+1

なぜ私はそれを考えなかったのかわかりません - はい、期待どおりに動作します、ありがとう! – HappyHands31

答えて

2

実際に四角形を追跡したいのか、それともそれを印刷するための努力の一部なのかわかりません。あなたが正方形を追跡したいなかったと仮定すると、

、軽微な変更は次のようになります。

https://repl.it/GLmw

nums = [12, 10, 32, 3, 66, 17, 42, 99, 20] 
for i in nums: 
    print(i) 

squared = [ ] 

for i in nums: 
    sqr = i * i 
    squared.append(sqr) 
    print("The square of {} is {}".format(i, sqr)) 

これは、あなたがからそれを参照することなく、で動作するように、現在の正方形の準備ができて持つことができますアレイ。

あなたが本当に配列から二乗値を参照することを意味しなかった場合、あなたは配列の末尾からフェッチするために、負のインデックスを使用したいが:

https://repl.it/GLms

nums = [12, 10, 32, 3, 66, 17, 42, 99, 20] 
for i in nums: 
    print(i) 

squared = [ ] 

for i in nums: 
    squared.append(i*i) 
    print("The square of {} is {}".format(i, squared[-1])) 
+0

負のインデックスを使用すると、すべての二乗結果に対して400が返されますが、最初のコードブロックは私が探していたことを行います。ただし、カンマなしで結果を印刷する方法はありますか?私は現在、( '四角形'、12、 'is'、144) を取得しようとしています:print( "+ i +"が "+ sqr"の場合)エラーメッセージが表示されます:TypeError: 'str'と 'int'オブジェクトを連結できません これを修正する方法はありますか? http://www.pythontutor.com/visualize.html#mode=edit – HappyHands31

+1

@ HappyHands31謝罪します。私はまだ部分的にPython 2の状態にありました。 Python 3にコードを更新し、2番目のチャンクのバグを修正し、いくつかのオンラインデモを追加しました。 – Ouroborus

+0

これは完璧に機能しています。これを少し説明してもらえますか?あなたがprint( "{}の平方は{}"です。format(i、sqr))と言うと、文字列置換をしているように見えますか?そして、あなたが{}を代用している値は "i"と "sqr" ....ですので、 "squared.append(sqr)"という行は現在の広場にあることを確認しています。配列?こうすることで、print文で "sqr"を参照するたびに、毎回次の2乗値を出力することがわかりますか?あれは正しいですか? – HappyHands31

0
nums = [12, 10, 32, 3, 66, 17, 42, 99, 20] 
for i in nums: 
    print(i**2) 
+1

ようこそStackOverflowへ!あなたが投稿したコードを記述して、欲求者とコミュニティがどれほど小さなものであってもそれをよりよく理解できるようにする必要があります。 –

関連する問題