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

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

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

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

Q&A

解決済

3回答

797閲覧

int(変数名)にしてもエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2019/04/23 01:14

以前このサイトで、身長(cm)の値をキーボードで入力し、標準体重(kg)を計算するプログラムでエラーが出たことについて質問しました。そのときのプログラムを下に記します。

print("数字を入力してください")
height = input('>>')
print(height/100**2*22) 
//標準体重(kg)=bmi(22)*身長(m)*身長(m)

このプログラムのエラーの原因は、heightが文字列になっていて、文字列を数字で割り算しようとしていることで発生しているとの回答がありました。そこで、上のプログラムをheightの部分をint(height)にすれば実行できました。上のプログラムを書き直したものが下のプログラムです。

print("数字を入力してください")
height = input('>>')
print(int(height)/100**2*22) //height→int(height)

前置きが長くなりましたがここから本題に入ります。今回は平成の年をキーボードで入力し、西暦に変換するプログラムなのですが、上のプログラムのようにint(変数名)にしても実行できません。なぜでしょうか?

year=input() #平成の年をキーボードで入力
print("平成"+int(year)+"年は"+"西暦"+int(year+1988))+"年です")

#平成の年+1988=西暦の年

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

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

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

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

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

guest

回答3

0

ベストアンサー

文字列と数値は+で結合することができません。
strでキャストするか、フォーマット文字列等をしましょう。

print("平成"+year+"年は"+"西暦"+str(int(year)+1988)+"年です") print("平成{}年は西暦{}年です".format(int(year),int(year)+1988))

投稿2019/04/23 01:27

y.nakamura

総合スコア190

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

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

0

文字列と整数は、足すことができないからです。

Python

1>>> year_str = input() 230 3>>> type(year_str) 4<class 'str'> 5>>> 6>>> year_int = int(year_str) 7>>> type(year_int) 8<class 'int'> 9>>> 10>>> 'spam' + '30' 11'spam30' 12>>> 'spam' + 30 13Traceback (most recent call last): 14 File "<stdin>", line 1, in <module> 15TypeError: must be str, not int 16>>> 17>>> 1988 + '30' 18Traceback (most recent call last): 19 File "<stdin>", line 1, in <module> 20TypeError: unsupported operand type(s) for +: 'int' and 'str' 21>>> 1988 + 30 222018 23>>> 24>>> 'spam' + str(30) 25'spam30' 26>>> 1988 + int('30') 272018

躓いたときは、エラーメッセージを読む癖を付けてください。
今は意味が分からずとも、目を慣らしておくことが非常に大事です。

また、質問の際には必ずエラーメッセージを記載してください。


それはさておき、str.formatやf-stringを知っておくと後々楽かと思います。

投稿2019/04/23 01:26

編集2019/04/23 01:28
LouiS0616

総合スコア35660

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

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

0

以前の質問と同じ原因です。
year+1988のように文字列型の変数yearint型の変数1988は足せません。
int(year)+1988のように修正ください。

それ以前に)の数が合わずにSyntax Errorが発生しますね…

投稿2019/04/23 01:25

編集2019/04/23 01:30
can110

総合スコア38256

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問