55077


Exampleとして

[code]

    $ python3 blastoff.py
    Enter number: 5
    5
    4
    3
    2
    1
    Blast off!
    
[/code]

とあり、これを

[code]

    num = input("Enter number: ")
    for i in range(num, 0, -1):
        sum = sum + i
        print(i)
    print("Blast off!")
    
[/code]

と入力すると

[code]

    Traceback (most recent call last):
    File "blastoff.py", line 2, in <module>
    for i in range(num, 0, -1):
    TypeError: 'str' object cannot be interpreted as an integer
    
[/code]

と出ます。初心者のため自己解決できず、間違っているところを教えていただきたいです。


CC BY-SA 4.0
2019-05-19T00:53:45.057
55076
2019-05-19T01:12:15.740
2019-05-19T01:12:15.740
19110
34377
question
python
forを用いた入力: 'str' object cannot be interpreted as an integer


### 短い回答

変数 `num` に格納されているのは整数値ではなく文字列値なので、range を取ることはできずエラーになっています。`int()`
関数を使って文字列を整数に変換してください。

### 長い回答

多くのプログラミング言語では「文字列」と「整数」は別物として扱います。たとえば `"42"` という文字列と `42`
という整数は別のデータです。これはコンピュータ内部で文字列と整数の 2
進数としての扱いが異なることや、文字列と整数では掛け算ができるかなどの性質が異なることに由来します。

Python において、`input()` 関数から返ってくるのは文字列です。しかし `range()`
関数に渡すべきは整数であり、今回のプログラムではそうなっていないのでエラーが出ています。

[code]

    TypeError: 'str' object cannot be interpreted as an integer
    
[/code]

（「'str' (文字列) は整数として解釈できません」という型エラーです。）

つまり変数 `num` が整数になると良いので、たとえば次のようにして文字列を整数に変換するとエラーが消えます。

[code]

    num = int(input("Enter number: "))
    
[/code]

ところで文字列はいつも整数に変換できるわけではありません。たとえば `"abc"` みたいな入力は整数として解釈できません。`int()`
関数はこういうときエラーを出すので、手元で確かめてみてください。


CC BY-SA 4.0
2019-05-19T01:06:15.077
55077
2019-05-19T01:06:15.077
19110
55076
answer