简体   繁体   English

Python数学游戏级别未更改

[英]Python maths game level not changing

When I type level4 or level3 or level2 my game does not go to the requested level. 当我键入level4level3level2我的游戏无法进入要求的级别。

It prints the entered level (eg level1 ) and stays on level one. 它打印输入的级别(例如level1 )并停留在第一级。

print("Welcome to the maths skills testing machine!")
userinput = input("\nAre you ready to test your maths skills?")

print("\nWhich level would you like to play?")
userinput = input('''Level 1, Level 2, Level 3, Level 4''')

if userinput=="level1":
    level1()
elif userinput=="level2":
    level2()
elif userinput=="level3":
    level3()
elif userinput=="level4":
    level4()

def level1():

    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(1, 10)
    num_b = random.randint(1, 10)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    while user_answer == expected_answer:
        level1()
    else:
        exit()

level1()


def level2():

    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(10, 50)
    num_b = random.randint(10, 50)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    while user_answer == expected_answer:
        level2()
    else:
        exit()

level2()


def level3():

    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(50, 100)
    num_b = random.randint(50, 100)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    while user_answer == expected_answer:
        level3()
    else:
        exit()

level3()


def level4():

    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(100, 1000)
    num_b = random.randint(100, 1000)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the 
question'.format(time.time() - start))
    while user_answer == expected_answer:
        level4()
    else:
        exit()

level4()

In your if statement, you're using an input() method. 在if语句中,您使用的是input()方法。 It doesn't have to be there. 它不必在那里。 Just write: 写吧:

if userinput=="level1":
    level1()
elif userinput=="level2":
    level2()

etc. It's also better to use elif in stead of if . 等。最好使用elif代替if

You should define the function before using it. 您应该先定义函数,然后再使用它。 You are calling functions before they are defined. 您在定义函数之前先调用它们。

Also the calls to them (eg level1() ) after them is not needed. 同样,不需要在它们之后调用它们(例如, level1() )。 You may also move the imports at the begging of the file, and remove them from each function. 您也可以按照文件的开头移动导入,并将其从每个函数中删除。 You may also use an IDE, for example PyCharm . 您也可以使用IDE,例如PyCharm

def level1():
    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(1, 10)
    num_b = random.randint(1, 10)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    while user_answer == expected_answer:
        level1()
    else:
        exit()


def level2():
    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(10, 50)
    num_b = random.randint(10, 50)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    while user_answer == expected_answer:
        level2()
    else:
        exit()


def level3():
    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(50, 100)
    num_b = random.randint(50, 100)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    while user_answer == expected_answer:
        level3()
    else:
        exit()


def level4():
    import operator
    import random
    import time
    start = time.time()

    ops = {'+': operator.add,
           '-': operator.sub}

    num_a = random.randint(100, 1000)
    num_b = random.randint(100, 1000)
    op = random.choice(tuple(ops.keys()))

    print('{}{}{}=?'.format(num_a, op, num_b))
    expected_answer = ops[op](num_a, num_b)
    user_answer = int(input())
    if user_answer == expected_answer:
        print('Correct')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    else:
        print('Wrong')
        print('It took you {0:0.1f} seconds to answer the question'.format(time.time() - start))
    while user_answer == expected_answer:
        level4()
    else:
        exit()


print("Welcome to the maths skills testing machine!")
_ = input("\nAre you ready to test your maths skills?")

print("\nWhich level would you like to play?")
userinput = input('''Level 1, Level 2, Level 3, Level 4''')

if userinput=="level1":
    level1()
elif userinput=="level2":
    level2()
elif userinput=="level3":
    level3()
elif userinput=="level4":
    level4()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM