web-dev-qa-db-ja.com

エラー: 'int'オブジェクトは添え字付けできません-Python

私は単純なコードを試して、誰かの名前と年齢を取得し、21歳になったら知らせてくれました...ネガなどを考慮せず、ただランダムに。

この'int' object is not subscriptableエラーが引き続き発生します。

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
x = 0
int([x[age1]])
twentyone = 21 - x
print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years."
37
Gal Appelbaum

問題は次のとおりです。

int([x[age1]])

あなたが欲しいのは

x = int(age1)

また、出力用にintを文字列に変換する必要があります...

print "Hi, " + name1+ " you will be 21 in: " + str(twentyone) + " years."

完全なスクリプトは次のようになります。

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
x = 0
x = int(age1)
twentyone = 21 - x
print "Hi, " + name1+ " you will be 21 in: " + str(twentyone) + " years."
32
Charles

x = 0と入力すると、新しいint変数(名前)が作成され、それにゼロが割り当てられます。

x[age1]を入力すると、xが配列であるかのように、age1 '番目のエントリにアクセスしようとしています。

56

x = 0を記述するとき、xはint ...です。したがって、xintであるため、x[age1]はできません。

8
TJD

ここで何をしようとしていますか:int([x[age1]]) ??意味がない。

年齢の入力をintとしてキャストする必要があります。

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
twentyone = 21 - int(age1)
print "Hi, %s you will be 21 in: %d years." % (name1, twentyone)
1
juliomalegria

まず、age1をintに変換する必要があります。そのため、マイナスを実行できます。その後、結果を表示用の文字列に戻します。

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
twentyone = str(21 - int(age1))
print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years."
0
勿绮语

さて、これらの答えはすべて正しいですが、ここにこれを行うより現代的な方法があります!

name1 : str = input("What's your name? ")
age1 : int = int(input ("how old are you? "))
twentyone : int = 21 - age1
print('Hi, {}, you will be 21 in: {} years'.format(name1, age1))
0
Andrej Hatzi
name1 = input("What's your name? ")
age1 = int(input ("how old are you? "))
twentyone = str(21 - int(age1))

if age1<21:
    print ("Hi, " + name1+ " you will be 21 in: " + twentyone + " years.")

else:
    print("You are over the age of 21")
0
Jacob Morgan