2016-05-16 15 views
-4

私は7桁のコードから奇数桁を受け取り、それを 'oddDigitList'というリストに追加する関数を作成しましたが、なぜ私はコードを実行すると、実行時エラーが発生します。'ValueError:基数10のint()のリテラルがPythonで' N ''

# A function used to add odd digits from a variable to the 'oddDigitList' list, which will be used to calculate the 8th digit of the GTIN-8 code 
def formOddDigitList(variable): 
    # The 'for' loop gets values from digit #1 to digit #7 in twos 
    variable = str(variable) 
    for i in range(0,8,2): 
     variable[i] 
     # The digits in the 'variable' argument are added to the 'oddDigitList' list 
     # The digits are converted into integers so that they can be used to calculate the 8th digit of the GTIN-8 product code) 
     oddDigitList.append(int(variable[i])) 
    return variable 

そして、ここで私が得たエラーメッセージです:

oddDigitList.append(int(variable[i])) 
ValueError: invalid literal for int() with base 10: 'N' 

誰かが私のコードが間違っている理由を説明し、私の機能の正しいバージョンを提供していただけます。私はこれが何をしたいです推測している

+5

'variable'の内容を見てください。エラーが示唆するように、そこには 'N'があります。 – njzk2

+2

また、[MCVE]の作成方法についても学んでください。あなたのケースでは、エラーを再現するために、エラーが発生したときに関数本体**と**関数引数の両方が明確に必要です。 –

+0

'変数'は7桁の整数です –

答えて

0

def formOddDigitList(number): 
    """ 
     A function used to add odd digits from a variable to the 'oddDigitList' list, 
     which will be used to calculate the 8th digit of the GTIN-8 code 
    """ 

    oddDigitList = [] 

    string = str(number) 

    # get values for only the odd digits from digit #1 to digit #7 

    for i in range(0, 7, 2): 
     # The digits in the 'string' variable are added to the 'oddDigitList' list 
     # The digits are converted into integers so that they can be used to calculate the product code 
     oddDigitList.append(int(string[i])) 

    return oddDigitList 


print(formOddDigitList(9638507)) 

RETURNS/PRINTS:GTIN-8の場合

[9, 3, 5, 7] 

、私はあなたが奇数の数字が一定でそれらを乗算するとしますそれらを偶数桁に追加します。これらはすべて単一の機能で実行できます。

1

私の質問に答えるために信じられないほどの努力をしてくれてありがとう、私はあなたの機能に文脈がどのようなものか知っていたので、私の機能にもっと追加する必要があることを認識しています。私が前に言ったように

oddDigitList = [] 

# A function used to add odd digits from a variable to the 'oddDigitList' list, which will be used to calculate the 8th digit of the GTIN-8 code 
def formOddDigitList(variable): 
    # The 'for' loop gets values from digit #1 to digit #7 in twos 
    for i in range(0,8,2): 
     # The digits in the 'variable' argument are added to the 'oddDigitList' list 
     # The digits are converted into integers so that they can be used to calculate the 8th digit of the GTIN-8 product code) 
     oddDigitList.append(int(variable[i])) 
    return variable 

# A function used as an input to assign boundaries/extremes to variables as well as enforcing 'try' and 'except' loops so that the user cannot crash the program by inputting a random number 

def assignBoundariesToInput(number, text): 
    while True: 
     try: 
      variable = input(text) 
     if len(variable) != number: 
      raise ValueError 
    # This statement keeps looping until the user inputs the suitable data type 
    except ValueError: 
     print("Please input a/an", number, "digit number") 
    else: 
     break 
    return variable 

gtin7OrGtin8 = str(input("Would you the like program to:\n\n a) Calculate the GTIN-8 product code from a seven digit number\n b) Check the validity of an eight digit GTIN-8 code\n c) Exit\n\nPlease enter your designated letter: ")).lower() 

if gtin7OrGtin8 == "a": 
    gtinput7 = assignBoundariesToInput(7, "Enter the 7-digit code: ") 
    formOddDigitList(gtinput7) 
    print(oddDigitList) 

else: 
    pass 

、私はあなたたちはバグを解決するのに役立つ追加の詳細を追加しないために深く申し訳ありません:ここで完全に発生した問題を修正し、私の先生のソリューションは、です。将来的に私は、問題がいつも私に起こる問題にコミュニティが答えるのを助けるために、文脈を常に追加するようにします。

関連する問題