質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1272閲覧

入門Python3、4章にて

Qianli

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/04/14 13:15

編集2017/04/15 00:02

4.4.2 continueによる次のイテレーションの開始のコードでつまずいています。

while True: value = input("Integer, please [q to quit]:") if value == 'q' #終了 break number = int(value) if number % 2 == 0: #偶数 continue print(number, "squared is", number*number)

整数を読み、読んだ整数が奇数なら自乗、偶数なら何もしないコードらしいのですが、奇数について全く触れられていないのは何でですか?
あと、numberにint(value)が代入されてる意味がわからないです。

アドバイスお願いします。

[追記]
お二方の回答を読み、疑問に感じた点があります。
このコードでinput関数とint関数が両方使われている意味についてです。
int関数は文字列を扱えないため(?)、input関数が使われてるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

他の方の回答が全てですが、以下のURLを開いて、1行ずつ動きを見てみ理解を深めてみてください。

Online Python Tutor

投稿2017/04/15 03:09

shimizukawa

総合スコア1847

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Qianli

2017/04/15 03:45

shimizukawa さま 早速やってみました。 そうしたら、valueに10が表示されるのですが、なぜ10になるのでしょうか?
Qianli

2017/04/15 04:10

shimizukawa さま 私の使い方が間違っていたようで、無事解決できました。
guest

0

ベストアンサー

奇数について触れられていないのは何故というのが、if文の条件式に何故組み込まないのかという意味でしたら、省略しても問題がない為です

python

1 2if value == 'q': #終了 3 break 4 number = int(value) 5 if number % 2 == 0: #偶数 6 continue 7 else: 8 print(number, "squared is", number*number)

このようにelseやelifで記述しても動作は同じである為、もしelse文などがあった方がしっくりくるのでしたらそのようにしても問題はないかと

また下の代入の質問がint変換をしているのが何故という意味でしたら、can110さんの言うように、数値に変換する為ですが、もし何故わざわざ代入しなおすのかという意味でしたら、代入をし直さなければ、下のコードのように一々int変換をしてやらなければいけないからです

python

1while True: 2 value = input("Integer, please [q to quit]:") 3 if value == 'q': #終了 4 break 5 6 if int(value) % 2 == 0: #偶数 7 continue 8 print(value, "squared is", int(value)*int(value))

代入をする事でint変換を3つも書くことなく済むわけです
ただこれに関しては好みの問題なのかなと

また数値しか使わない前提であれば、inputを直接int変換してやる方法もあります

python

1value = int(input("Integer, please [q to quit]:"))

しかし今回はqという文字がループを抜ける条件である為、直接int変換してしまうとqを入力した時にエラーが起きてしまうためこの方法が使えないわけです

追記について
int関数を使っているのは、何故かと言うとcan110さんの回答にあるように、inputからは文字列が返されるからです
すなわち

python

1value=10 #数値 コンピューターで計算可能 型で言うとint型 2value2="10" #数字 コンピューターで計算不可能 型で言うとstr型 3 4print(value+int(value2))

value2の方で返されている扱いになっています
数字と数値は見た目は同じですが、
コメントにもあるように、コンピューターは数値でしか計算する事が出来ません
試しにint変換を外してみてください
エラーが起きるはずです

そこでint変換を使う事で、計算不可能な数字から計算可能な数値に変えてやる事で
number*numberという計算を可能にしているわけです

型変換の詳細については32ページから40ページを参照にしてください

投稿2017/04/14 14:56

編集2017/04/15 05:11
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/15 05:13

望みの回答になっているかわかりませんが、追記について、回答の方に追加しときました
Qianli

2017/04/15 12:27

puruko3さま 追記についての回答とサンプルとなるコードでだいぶ理解が深まりました。 ありがとうございました!
guest

0

奇数について全く触れられていないのは何でですか?

「%」は剰余演算子で、割った余りの値を返します。
奇数を2で割ると余りが1になる、偶数なら0になるので提示されたようなコードになります。
本書を読んではいませんが、このあたりが省略されているのかもしれません。

あと、numberにint(value)が代入されてる意味がわからないです。

inputからは「123」のような** 文字列 が返されます。それをint型の 数値 **に変換しています。数値に変換することにより、後の算術演算ができるようになります。

投稿2017/04/14 13:30

can110

総合スコア38256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問