- 締切済み
python四則演算の問題
python初心者の者です。 ある問題で、input()を使って入力した数字を百倍して表示するという問題があって、以下が作成したプログラムです。 ~省略~ line = input print(line * 100) 例で10をlineに代入したとして実行すると、1000ではなく、10が100個表示されるのですが、これはprint()内のlineが文字として認識されているから100かけれないんですか? 昨日始めたばかりでエラーについて全然わからないもので、 教えてください!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asciiz
- ベストアンサー率70% (6849/9742)
Pythonは、変数の型は動的に解決される珍しい言語なのですが。 input で受け取った値は、その時点では文字列型となっています。 そして、「文字列 * 数値」と書くと、「文字列を数値回数繰り返した」文字列を返す演算となります。 受け取った文字列を数値として演算に使いたい場合、int( )関数 (整数にする)または float( )関数 (小数点数にする)で、明示的に数値型に変換すれば、数値としての演算ができます。 → print(int(line) * 100) まあ、「文字列のかけ算」ができるので、エラーにはならず、実行できてしまっている、という話でもありますね。
- wormhole
- ベストアンサー率28% (1626/5665)
>例で10をlineに代入したとして実行すると、1000ではなく、10が100個表示されるのですが、これはprint()内のlineが文字として認識されているから100かけれないんですか? はい、そうです。 https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations の >* (乗算: multiplication) 演算子は、引数同士の積を与えます。引数は、両方とも数値であるか、片方が整数で他方がシーケンスかのどちらかでなければなりません。前者の場合、数値は共通の型に変換された後乗算されます。後者の場合、シーケンスの繰り返し操作が行われます。繰り返し数を負にすると、空のシーケンスを与えます のとこですね。 >昨日始めたばかりでエラーについて全然わからないもので、 >教えてください! あなたにとっては思った通りに動作していないのでエラーなのかもしれませんが、 pythonにとっては言語仕様に沿って、あなたの指示通りに動いているだけでエラーではないです。