2016-06-19 5 views
0

invalid literal for int() with base 10は、入力ストリームがループ内で生成された値を連結しているように見えます。Python:基数10のint()の無効なリテラル

def collectData(): 
    lst = makeCases() 
    cases = int(input()) 
    for i in range(cases): 
     size = int(input()) 
     case = [] 
     for j in range(size): 
      value = int(input()) 
      case +=[value] 
     insert(lst,case) 
    return lst 

これは問題を生成する関数です。値とサイズの変数は、変換前の後続の値を連結しているように見えるため、問題になります。

makeCases()関数は、("Case",[])の形式でタプルを生成します。

編集:コードは、ローカルで正常に動作しますが、トムKarzesがinput()が数以外の何かを返して、言ったようにhackerrankのIDE

+0

あなたはいくつかの場所で 'int(input())'を使っています。明らかに、 'input()'はそれらの呼び出しのうちの一つで数値文字列以外を返しています。 'int()'に渡す文字列を見つけて修正してください。あなたは不正な値をキャッチし、それらを出力する独自の 'input_int'関数を書くことができます。いずれにせよ、私は問題が連結とは関係がないとは思わない。 –

+2

Python3またはPython2? – rrauenza

+0

おそらく空白行があるか、ユーザーはを押すだけです。 'int'に変換する前に、' input() 'からの応答をテストするか、例外処理を使うべきです。 – cdarke

答えて

2

では動作しません。 Pythonによって生成されるエラーメッセージを見て、私はあなたがPython 3を使用していると仮定しますが、Python 2もカバーします。

のPython 2

input()チェック標準入力から与えられた入力は、それができるものeval uateにある場合。これはeval(raw_input())に相当します。 (Pydoc

>>> a = input() 
123 
>>> a 
123 
>>> abc = 3 
>>> a = input() 
abc 
>>> a 
3 

あなたはそれができるinput()ものではありませんevalときには、別のエラーを生成します。

>>> a = input() 
abc 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 1, in <module> 
NameError: name 'abc' is not defined 

それは与えられた入力にevalを実行するので、それはabcは変数名であり得ることを前提とします。それはそれを検索しますが、それを見つけることができなかったのでエラーをスローします。

パイソン3

input()は、Python 2 input()に新しいraw_input()ある与えられた入力が数字であっても、文字列を返します。 (Pydoc

>>> a = input() 
123 
>>> a 
'123' 

これは、あなたがinput()を取得した後、あなたがint()に変換しまう可能性が高い理由です。

私は(Pythonの3)ように、あなたのエラーメッセージを複製することができます:あなたはそれを、それはに変換することができない何かを与えているので、結論として

>>> a = int(input()) 
abc 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: 'abc' 
>>> a = int(input()) 
123 123 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '123 123' 

を、それがこのようなエラーを返している原因で最も可能性の高い理由は、 int

関連する問題