質問: 0: #偶数 continue print(number, "squared is", number*number) ``` 整数を読み、読んだ整数が奇数なら自乗、偶数なら何もしないコードらしいのですが、奇数について全く触れられていないのは何でですか? あと、numberにint(value)が代入されてる意味がわからないです。 アドバイスお願いします。 [追記] お二方の回答を読み、疑問に感じた点があります。 このコードでinput関数とint関数が両方使われている意味についてです。 int関数は文字列を扱えないため(?)、input関数が使われてるのでしょうか?
回答: 奇数について触れられていないのは何故というのが、if文の条件式に何故組み込まないのかという意味でしたら、省略しても問題がない為です ``` if value == 'q': #終了 break number = int(value) if number % 2 == 0: #偶数 continue else: print(number, "squared is", number*number) ``` このようにelseやelifで記述しても動作は同じである為、もしelse文などがあった方がしっくりくるのでしたらそのようにしても問題はないかと また下の代入の質問がint変換をしているのが何故という意味でしたら、can110さんの言うように、数値に変換する為ですが、もし何故わざわざ代入しなおすのかという意味でしたら、代入をし直さなければ、下のコードのように一々int変換をしてやらなければいけないからです ``` while True: value = input("Integer, please [q to quit]:") if value == 'q': #終了 break if int(value) % 2 == 0: #偶数 continue print(value, "squared is", int(value)*int(value)) ``` 代入をする事でint変換を3つも書くことなく済むわけです ただこれに関しては好みの問題なのかなと また数値しか使わない前提であれば、inputを直接int変換してやる方法もあります ``` value = int(input("Integer, please [q to quit]:")) ``` しかし今回はqという文字がループを抜ける条件である為、直接int変換してしまうとqを入力した時にエラーが起きてしまうためこの方法が使えないわけです 追記について int関数を使っているのは、何故かと言うとcan110さんの回答にあるように、inputからは文字列が返されるからです すなわち ``` value=10 #数値 コンピューターで計算可能 型で言うとint型 value2="10" #数字 コンピューターで計算不可能 型で言うとstr型 print(value+int(value2)) ``` value2の方で返されている扱いになっています 数字と数値は見た目は同じですが、 コメントにもあるように、コンピューターは数値でしか計算する事が出来ません 試しにint変換を外してみてください エラーが起きるはずです そこでint変換を使う事で、計算不可能な数字から計算可能な数値に変えてやる事で number*numberという計算を可能にしているわけです 型変換の詳細については32ページから40ページを参照にしてください