2016-06-21 6 views
-1

は私のコードです:私は(私の入力が2だった)、それを実行したときにPythonで変数が整数として認識されませんか?ここ

print "How many frames do you want?" 
f = raw_input() 
print f 
frames = 'abcdefghijklmnopqrstuvwxyz' 

if f > 0: 
    frames = frames[:f] 
    print frames 

はその後、私は私の、私はそれを印刷するときにもかかわらず、変数fはint型として認識されていないこのエラーが出ますinputはint(2)を出力しました。

ここでエラーメッセージです: トレースバック(最新の呼び出しの最後): ファイル "melissa.py"、11行目、 フレーム内=フレーム[:F] はTypeError:スライスインデックスが整数またはNoneであるか、または持っている必要がありますが、 インデックスメソッド...

ですから、fは2ですが、私は文字列をスライスするために使用できませんか?

+2

は '' F = INT(raw_input())を使用してください。あなたは 'int'ではなく' str'として入力を受け取ります。 –

+1

ありがとうございました! –

+1

公式のpythonのドキュメントでは、 'raw_input'が文字列を返すことを明確に示しています。ここで質問する前に、ドキュメントをチェックしてください。 https://docs.python.org/2/library/functions.html#raw_input –

答えて

0

raw_input()機能は関係なく、あなたが入力する内容の文字列を返します

は実際の整数にそれを有効にするには、次のようなものを使用することができます。それは起こっていない注意してください、しかし

f = int(raw_input()) 

実際に整数を入力しない限りうまくいく。失敗したraw_input()と失敗したint()の両方の例外を実際にキャッチする必要があります。後者を行う方法についてはhereを参照してください。同様の方法を使用して、前者の場合はEOFError(必要に応じてその他)をキャッチすることができます。

0

raw_inputinputに変更する必要があります。 raw_inputはそれを文字列として取りますが、inputは整数として取ります。

print "How many frames do you want?" 
    f = input() 
    print f 
    frames = 'abcdefghijklmnopqrstuvwxyz' 

    if f > 0: 
     frames = frames[:f] 
     print frames 
+0

これは 'input()'が効果的に 'eval(raw_input())されているので、信じられないほど悪い考えです。ユーザが入力した文字列を評価すること。 – paxdiablo

+0

@paxdiablo、大丈夫、情報ありがとう:) –

0

ここでの問題は、あなたが整数への入力を変換しなかったということです: は、ここでは、コードです。したがって、Pythonはそれを整数として認識しません。

raw_input()はstdinから入力を受け取り、文字列を吐き出します。 Pythonは文字列が整数かどうかを自動的にチェックしません。しかし、そのための方法があります(isdigit())。

だから、あなたが何をする必要があるか続行する前に、int()コンバータを使用して整数に変換することです:

f = int(raw_input()) 
関連する問題