1. ホーム
  2. python

[解決済み】TypeError: Pythonではタプルのみ連結可能("int "ではない)。

2022-02-20 23:17:31

質問

この定数タプルのエラーについて、あなたの助けが必要です。これは、多くの人が持っている一般的な数学的エラーのようです。私は'not int', 'not list', 'not float'などのTypeErrorのほとんどすべてのインスタンスを読んできました。しかし、私はなぜそれが起こるのかを理解することができませんでした。

乱数の合計を入力し、最後に成功率を計算する以下のようなコードを書きました。だから、私は正解を数えるためにカウンタ "right=right+1" を持っています。Pythonはそれが気に入らないようです。

以下は、私が書いたものです。

import random 
#the main function
def main():
    counter, studentName, averageRight, right, answer, number1, number2 = declareVariables() 
    studentName = inputNames()

    while counter < 10:
        number1, number2 = getNumber()
        answer = getAnswer(number1, number2, answer)
        right = checkAnswer(number1, number2, answer, right)
        counter = counter + 1
    results(right, averageRight)
    displayInfo(studentName, right, averageRight)

def declareVariables():
    counter = 0
    studentName = 'NO NAME'
    averageRight = 0.0
    right = 0.0
    answer = 0.0
    number1 = 0
    number2 = 0
    return counter, studentName, averageRight, right, answer, number1, number2

def inputNames():
    studentName = raw_input('Enter Student Name: ')
    return studentName

def getNumber():
    number1 = random.randint(1, 500)
    number2 = random.randint(1, 500)
    return number1, number2

def getAnswer(number1, number2, answer):
    print 'What is the answer to the following equation'
    print number1
    print '+'
    print number2
    answer = input('What is the sum: ')
    return answer

def checkAnswer(number1, number2, answer, right):
    if answer == number1+number2:
        print 'Right'
        right = right + 1
    else:
        print 'Wrong'

    return right, answer

def results(right, averageRight):
    averageRight = right/10
    return averageRight



def displayInfo(studentName, right, averageRight):
    print 'Information for student: ',studentName
    print 'The number right: ',right
    print 'The average right is: ', averageRight

# calls main
main()

と出続けています。

Traceback (most recent call last):
  File "Lab7-4.py", line 70, in <module>
    main()
  File "Lab7-4.py", line 15, in main
    right = checkAnswer(number1, number2, answer, right)
  File "Lab7-4.py", line 52, in checkAnswer
    right = right + 1
TypeError: can only concatenate tuple (not "int") to tuple Press any key to continue . . .

解決方法は?

あなたの checkAnswer() 関数は タプル :

def checkAnswer(number1, number2, answer, right):
    if answer == number1+number2:
        print 'Right'
        right = right + 1
    else:
        print 'Wrong'

    return right, answer

ここで return right, answer は2つの値からなるタプルを返す。この式をタプルにするのはカンマであることに注意。ほとんどの文脈で括弧は省略可能である。

この返り値を right :

right = checkAnswer(number1, number2, answer, right)

作成 right をタプルにします。

を追加しようとすると 1 を再び追加すると、エラーが発生します。を変更しない answer 関数内で値を返しても意味がないので、その値を return ステートメントを使用します。

def checkAnswer(number1, number2, answer, right):
    if answer == number1+number2:
        print 'Right'
        right = right + 1
    else:
        print 'Wrong'

    return right