TypeError:只能在Python中连接元组(而不是"int")

sam*_*ohn 9 python tuples typeerror

我将需要你的帮助,我不断得到这个不断的元组错误.似乎这是许多人常见的数学错误.我几乎读过TypeError的每个实例,包括'not int','not list','not float'等.但是我没弄明白为什么我得到它.

我写了下面的代码,允许你输入随机数的总和,最后计算你的成功率.所以我有一个计数器"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()
Run Code Online (Sandbox Code Playgroud)

而且我一直在:

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 . . .
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 15

你的checkAnswer()函数返回一个元组:

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

    return right, answer
Run Code Online (Sandbox Code Playgroud)

这里return right, answer返回两个值的元组.请注意,它是逗号,使该表达式成为元组; 在大多数情况下,括号是可选的.

您将此返回值分配给right:

right = checkAnswer(number1, number2, answer, right)
Run Code Online (Sandbox Code Playgroud)

right在这里制作一个元组.

然后,当您尝试1再次添加时,会发生错误.你不在answer函数内改变,所以在这里返回值没有意义; 从return声明中删除它:

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

    return right
Run Code Online (Sandbox Code Playgroud)