簡體   English   中英

我將如何分配運算符列表,以便計算出隨機數以告訴用戶它們是否正確?

[英]How would I assign the list of operators so that the random numbers are worked out to tell the user if they're correct or not?

我將如何分配運算符列表,以便計算出隨機數以告訴用戶它們是否正確?

    # Controlled Assessment - Basic Times Table Test
import random

score = 0

print ("Welcome to the times table test")

name = input("Please type your name: ")


print ("How to play")
print ("Step 1: When you see a question work out the answer and type it in the space.")
print ("Step 2: Once you have typed your answer press the enter key.")
print ("Step 3: The program will tell you if you're right or wrong.")
print ("Step 4: The next question will load and you can repeat from step 1.")
print ("When you have answered all 10 questions your final score will be    printed.")




for q in range(10):
    Number1 = random.randint(1,12)
    Number2 = random.randint(1,12)
    ListOfOperator = ['+','-','*']
    Operator =random.choice(ListOfOperator)
    print ('what is' ,Number1,Operator,Number2)
    Answer= input ("Please Type Your Answer: ")

realanswer = (Number1,Operator,Number2)

if ListOfOperator:
    ListOfOperator=['+'] = Number1+Number2
    ListOfOperator=['-'] = Number1-Number2
    ListOfOperator=['*'] = Number1*Number2




if Answer==realanswer:
    print("Your answer is correct")
    score = score + 1
    print (score)
else:
    print("Your answer is incorrect, the correct answer is.",realanswer,".")
    print (score)

需要分配給運算符列表的代碼是...

    if ListOfOperator:
    ListOfOperator=['+'] = Number1+Number2
    ListOfOperator=['-'] = Number1-Number2
    ListOfOperator=['*'] = Number1*Number2

它應該使用我告訴程序的功能算出每個問題的答案,即如果算子列表中的算子是*,則算出Number1 * Number2

告訴他們答案是否正確的當前輸出

您的答案不正確,正確的答案是Number1 * Number2。

當問題是10 * 3是多少時,它應該打印

您的答案不正確,正確的答案是30。


現在我有了這段代碼...

if Operator == '+':
    realanswer = Number1+Number2
elif Operator == '-':
    realanswer = Number1-Number2
elif Operator == '*':
    realanswer = Number1*Number2




if Answer==realanswer:
    print("Your answer is correct")
    score = score + 1
    print (score)
else:
    print("Your answer is incorrect, the correct answer is.",realanswer,".")
    print (score)

即使輸入了正確的答案,程序也會始終打印出問題是不正確的,然后它將打印正確的答案,我該怎么做,以便它也可以告訴他們是否正確?

operator模塊將基本操作實現為功能。 定義一個將操作符(例如"+"映射到操作符的dict ,然后使用該映射進行計算。

import random
import operator

op_map = {'+':operator.add, '-':operator.sub, '*':operator.mul}
op_list = list(op_map.keys())

score = 0

print ("Welcome to the times table test")

name = input("Please type your name: ")

print ("How to play")
print ("Step 1: When you see a question work out the answer and type it in the space.")
print ("Step 2: Once you have typed your answer press the enter key.")
print ("Step 3: The program will tell you if you're right or wrong.")
print ("Step 4: The next question will load and you can repeat from step 1.")
print ("When you have answered all 10 questions your final score will be    printed.")

for q in range(10):
    Number1 = random.randint(1,12)
    Number2 = random.randint(1,12)
    Operator =random.choice(op_list)
    print ('what is' ,Number1,Operator,Number2)
    while True:
        try:
            Answer= int(input("Please Type Your Answer: "))
            break
        except ValueError:
            print("Must be an integer... try again...")

    realanswer = op_map[Operator](Number1, Number2)

    if Answer==realanswer:
        print("Your answer is correct")
        score = score + 1
        print (score)
    else:
        print("Your answer is incorrect, the correct answer is.",realanswer,".")
        print (score)

要執行這樣的多次檢查,可以使用if,elif語句:

if Operator == '+':
    realanswer = Number1+Number2
elif Operator == '-':
    realanswer = Number1-Number2
elif Operator == '*':
    realanswer = Number1*Number2

供參考: Python Docs

...

def realanswer(Num1, Op, Num2):
    return {
        '+': Num1 + Num2,
        '-': Num1 - Num2,
        '*': Num1 * Num2,
    }[Op]

for q in range(2):
    Number1 = random.randint(1,12)
    Number2 = random.randint(1,12)
    ListOfOperator = ['+','-','*']
    Operator =random.choice(ListOfOperator)
    print ('what is',Number1,Operator,Number2)
    userInput = input("Please Type Your Answer: ")
    Answer = 0
    try:
        Answer = int(userInput)
    except ValueError:
        print("Input not convertible to int!")
    rAnswer = realanswer(Number1,Operator,Number2)
    if Answer == rAnswer:
        print("Correct!")
    else:
        print("Incorrect...")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM