Python编程如果语句问题

时间:2014-12-01 11:55:58

标签: python


我目前正在进行一项项目练习,其中涉及我创建一个评估儿童算术能力的计划。它询问加法,乘法和减法问题,它是用Python编写的。

您可以自己查看下面的代码。

from random import randint

username = input("What is your name? ")
score = 0
question = 1



while (question < 11):
    random_integer= randint(1,3)
    if (randnum == 1):
        return = multiply()
    elif (randnum == 2):
        return = add()
    else:
        return = subtract()

    if (return== True):
        score+=1
    question += 1

input("\nYou scored %s out of 10... \nPress enter to quit" %(score))

def multiply():
    num1= randint(1,12)
    num2= randint(1,12)
    correct_ans= str(num1 * num2)

    user_answer = input("%s x %s = " %(num1, num2))
    if (user_answer == correct_ans):
        print("Correct!")
        return True
    else:
        print("Incorrect. The correct answer was %s" %(correct_ans))
        return False


def add():
    num1= randint(1,50)
    num2= randint(1,50)
    correct_ans = str(num1 + num2)

    user_answer = input("%s + %s = " %(num1, num2))
    if (user_answer == correct_ans):
        print("Correct")
        return True
    else:
        print("Incorrect. The correct answer was %s" %(correct_ans))
        return False

def subtract():
    num1= randint(1,80)
    num2= randint(1,50)
    correct_answer = str(num1 - num2)

    user_answer = input("%s - %s = " %(num1, num2))
    if (user_answer == correct_ans):
        print("Correct")
        return True
    else:
        print("Incorrect. The correct answer was %s" %(correct_ans))
        return False

现在,当我运行程序时,要求输入用户名的第一行正常显示,但是这段代码在IDLE中显示为错误。 有人可以帮忙吗?

Traceback (most recent call last):
File "H:\code3.py", line 14, in <module>
return = subtract()
NameError: name 'subtract' is not defined

2 个答案:

答案 0 :(得分:0)

return是一个保留的关键字,所以只需更改变量名即可解决您的问题。

答案 1 :(得分:0)

您的代码中存在很多问题。

首先,你必须在之前定义一个函数。所以你得到的错误“NameError:name'减去'没有定义',是因为这个函数没有在代码中的这个状态下定义。解决方案是提升您对函数的定义。

接下来就是你写了“return = x”。这是不正确的python语法。如果要返回值,请使用“return x”。

最后一件事(我提到过)是你使用“input()”。在你的代码中,你必须使用“raw_input()”,因为你的代码的其余部分需要一个字符串。

我已在您的代码中纠正了这些内容(以及其他一些小问题)。

from random import randint

username = raw_input("What is your name? ")
score = 0
question = 1
answerCorrect = True

def multiply():
    num1= randint(1,12)
    num2= randint(1,12)
    correct_ans= str(num1 * num2)

    user_answer = raw_input("%s x %s = " %(num1, num2))
    if (user_answer == correct_ans):
        print("Correct!")
        return True
    else:
        print("Incorrect. The correct answer was %s" %(correct_ans))
        return False


def add():
    num1= randint(1,50)
    num2= randint(1,50)
    correct_ans = str(num1 + num2)

    user_answer = raw_input("%s + %s = " %(num1, num2))
    if (user_answer == correct_ans):
        print("Correct")
        return True
    else:
        print("Incorrect. The correct answer was %s" %(correct_ans))
        return False

def subtract():
    num1= randint(1,80)
    num2= randint(1,50)
    correct_ans = str(num1 - num2)

    user_answer = raw_input("%s - %s = " %(num1, num2))
    if (user_answer == correct_ans):
        print("Correct")
        return True
    else:
        print("Incorrect. The correct answer was %s" %(correct_ans))
        return False

while (question < 11):
    random_integer= randint(1,3)
    if (random_integer == 1):
        answerCorrect = multiply()
    elif (random_integer == 2):
        answerCorrect = add()
    else:
        answerCorrect = subtract()

    if (answerCorrect== True):
        score+=1
    question += 1

raw_input("\nYou scored %s out of 10... \nPress enter to quit" %(score))