# Python - Nest loop - Exercise ###### tags: `Python HomeWork` **例**:着ぐるみのバイトの求人には幾つの条件があります。特に着ぐるみ自体の大きさが決まっているので身長制限があります。とある会社の求人には、160センチ以下が好ましいと書いていて、もし153センチの杏奈が応募したら果たしてTrueなのかFalseなのか、プログラミングで出力してください。 ``` 杏奈の身長を表す変数を利用して比較してください annaHigh = 153 出力例: True ``` :::info code: ```python= annaHigh = 153 print( annaHigh <= 160 ) ``` 答え: ![](https://i.imgur.com/SM2qRLJ.png) ::: -------------------------------------------- ## 問1: * 自然数の数値nを入力させる。 * 1!+2!+3!....n!の結果を出力してください ``` 入力出力例1: Input n:5 1! + 2! + 3! + 4! + 5! = 153 入力出力例2: Input n:7 1! + 2! + 3! + 4! + 5! + 6! + 7! = 5913 ``` :::success 先生は楠楠の解き方が知りたいので、コメントつけてもらってもいいですか!?拜托〜〜〜 code: ```python= num=int(input("Input n:")) total=0            #1!や2!の計算結果(答え)の変数。 alltotal=0          #出力例1でいう、153にあたる最終的合計の変数。 for i in range(num): if (i+1) != num:     #(i+1)=1 1!と2!はそれぞれ1*1,2*1で1を掛けるだけなのでifを使って分けた。 if (i+1) <= 2:    #後に1!、2!、3!を足すので、仮置きでtotalで「1!」単体の答えを置く。 total=(i+1) #alltotalは最終的な答えになるので、ここで1!+2!+....の計算。 alltotal+=total #3!以上は3*2*1 , 4*3*2*1となり、ただ1を掛けるだけではないのでelifで判別。 elif (i+1) > 2: total=(i+1)*total alltotal+=total print("{}! ".format(i+1),end="+ ") #(i+1)=numつまりこの計算で最後の計算なので上記↑のifのままprintすると語尾に+がついてしまうのでelifで判別。 elif (i+1) == num: total=(i+1)*total alltotal+=total print("{}! = {}".format(i+1,alltotal)) ``` 結果: ![](https://i.imgur.com/PN4fu36.png) ::: ## 問2: - 自然数の数値を入力させる。 - 入力された数値にそって次のルールにそって表示させること - 3と入力された場合、3つの数値を表示する、表示する数値は以下の通り - 1つ目:1までの全ての整数の累加 - 2つ目:2までの全ての整数の累加 - 3つ目:3までの全ての整数の累加 ``` Please input number: 3 Result: 1 1 3 1 3 6 ``` - 5と入力された場合、5つの数値を表示する、表示する数値は以下の通り - 1つ目:1までの全ての整数の累加 - 2つ目:2までの全ての整数の累加 - 3つ目:3までの全ての整数の累加 - 4つ目:4までの全ての整数の累加 - 5つ目:5までの全ての整数の累加 ``` Please input number: 5 Result: 1 1 3 1 3 6 1 3 6 10 1 3 6 10 15 ``` :::info code: ```python= """ #2列目以降の表示で、1こ前に計算した結果を表示+今回の計算の結果の表示の仕方が分かりません。 num=int(input("Please input number:")) total=1 for i in range(num): if (i+1) == 1: print(total) elif (i+1) != 1: total+=(i+1) print("{}".format(total),end=" ") print( ) num=int(input("Please input number:")) for i in range(num): print("{} ".format(i+1)*(i+1)) print( ) """ n = int(input("Please input number: ")) print("Result:") for i in range(1, n+1): for j in range(1, i+1): print(sum(range(1, j+1)), end = " ") print() ``` 結果: ![](https://i.imgur.com/ZpbasAA.png) ::: :::success * まずは形を書いてください~ ![](https://i.imgur.com/soYRbiq.png) * 実行結果を観察する 緑の四角は私たちが欲しいものです ![](https://i.imgur.com/ZG3izF8.png) ::: ## 問3: * ユーザーに数値(自然数)を入力させる。 * 図を参考にして「*」を表示させること ``` 入力例1: Input n:5 出力例1: * *** ***** ******* ********* 入力例2: Input n:7 出力例2: * *** ***** ******* ********* *********** ************* ``` :::info code: ```python= num = int(input("Input n:")) for i in range(num): for j in range(num-1-i): print(" ", end = "") for k in range((i+1)*2-1): print("*", end = "") print() ``` 結果: ![](https://i.imgur.com/2j2C93c.png) ::: ## 問4: 中島朱実(なかじま あけみ)は天賦の才に恵まれたプログラマーで、現在悪魔を召喚するプログラムを開発しています。その中、最後のステップとしては、六芒星をプログラムで書くことになります。以下、六芒星を書くコードは半分しか完成できていません。修正するのを手伝ってあげてください! (六芒星は、正三角形と逆三角形で構成されています) 中島朱実是一個天才程式設計師,他正在開發可以招換惡魔的程式,其中最後的步驟是要用程式畫出六芒星,下列有寫到一半的程式碼,請你幫助他完成這一步~ (六芒星是由一個正三角形和一個倒三角形所組成的) ![](https://i.imgur.com/xmn7ovD.png) 入出力例1: ![](https://i.imgur.com/tOw6B0J.png) 入出力例2: ![](https://i.imgur.com/yEzz58C.png) :::danger **需要修正的code(錯誤的地方有5個)** **修正すべき箇所は五つあります。** ```python= n = input("Input n:") for i in range(n): for j in range(n-1-i): # 出力ブランク print(" ", end = "") for k in range((i+1)*2-1): # 出力 * print("*", end = "") print() # 真ん中の 3 行 for i in range(2*n-1): print("*", end = "") print("") print("", end = "") # 出力ブランク for i in range(2*n-3): print("*", end = "") print() print() # 逆三角形 for i in range(n-3): for j in range(3+i): # 出力ブランク print(" ") for j in range((n-3)*2-1-2*i): # 出力 * print("*", end = "") print() ``` ::: :::info code: ```python= n = int(input("Input n:")) for i in range(n-3): for j in range(n-1-i): print(" ", end = "") for k in range((i+1)*2-1): print("*", end = "") print() for i in range(2*n-1): print("*", end = "") print("") print("", end = "") for i in range(1): for j in range(1): print(" ", end = "") for k in range(2*n-3): print("*", end = "") print() for i in range(2*n-1): print("*", end = "") print() # 逆三角形 for i in range(n-3): for j in range(n-(n-3)+i): print(" ", end = "") for k in range((n-3)*2-1-2*i): print("*", end = "") print() ``` 結果: ![](https://i.imgur.com/o8tJKCR.png) ::: ## 練習1 :::info code: ```python= for i in range(1,3): print("外のループ:{}回目".format(i)) for j in range(1,4): print(" 中のループ:{}回目".format(j)) ``` 結果: ![](https://i.imgur.com/CKLxuKD.png) ::: ## 練習2 :::info code: ```python= for i in range(2): print("第{}試合".format(i+1)) for j in range(3): print("{}週目".format(j+1)) ``` 結果: ![](https://i.imgur.com/OUfYPRi.png) ::: ## 練習3 :::info code: ```python= """ for i in range(9): print("{}の段".format(i+1))   for j in range(9): num=i*j print("{} * {} = {}".format(i,j+1,num),end=" ") """ for i in range(1,10): for j in range(1,10): print("{} * {} = {} ".format(i,j,i*j),end=" ") print() ``` 結果: ![](https://i.imgur.com/RzUTG7W.png) ::: ## 練習4 :::info code: ```python= for outside in range(3): print("外側のループスタート") for i in range(5): if i == 2: break print("{}:内側のEND".format(i)) print("外側のEND") ``` 結果: ![](https://i.imgur.com/EyhedyW.png) ::: ## 練習5 :::info code: ```python= flag=False for i in range(1,4): print("外のループ:{}回目".format(i)) for j in range(1,4): print("  中のループ:{}回目".format(j)) if i==2 and j==2: print("中のループから抜けます") flag=True break if flag==True: print("外のループから抜けます") break print("ループから完全に抜けました") ``` 結果: ![](https://i.imgur.com/5uvDF6K.png) :::