随机函数选择

问题描述:

我的代码存在一个奇怪的问题。当我只想要10个问题时,它提出了14次问题。那么它也不是正确计算得分。任何帮助表示赞赏解决这两个问题!在此先感谢随机函数选择

import random 
StudentName = input("Please enter you name: ") 


def question_a(): 
    score=0 
    num1=random.randint(1,10) 
    num2=random.randint(1,10) 
    num3=num1-num2 
    answer=int(input("What is "+str(num1)+"-"+str(num2)+"? ")) 
    if answer==num3: 
     print ("Well done, you are correct") 
     score=score+1 
    else: 
     print ("That is the wrong answer") 

    return score 

def question_b(): 
    score=0 
    num1=random.randint(1,10) 
    num2=random.randint(1,10) 
    num3=num1+num2 
    answer=int(input("What is "+str(num1)+"+"+str(num2)+"? ")) 
    if answer==num3: 
     score = score + 1 
     print ("Well done, you are correct") 
    else: 
     print ("That is the wrong answer") 

    return score 

def question_c(): 
    score=0 
    num1=random.randint(1,10) 
    num2=random.randint(1,10) 
    num3=num1*num2 
    answer=int(input("What is "+str(num1)+"*"+str(num2)+"? ")) 
    if answer==num3: 
     score = score + 1 
     print ("Well done, you are correct") 
    else: 
     print ("That is the wrong answer") 

    return score 


def question_d(): 
    score=0 
    num1=random.randint(1,10) 
    num2=random.randint(1,10) 
    num3=num1/num2 
    num4=round(num3,1) 
    answer=float(input("What is "+str(num1)+"/"+str(num2)+"? ")) 
    if answer==num4: 
     score = score + 1 
     print ("Well done, you are correct") 
    else: 
     print ("That is the wrong answer") 

    return score 

my_list=[question_a,question_b,question_c,question_d] 

for i in range (0,10): 
    random.choice(my_list)() 

final_score = (question_a() + question_b() + question_c() + question_d()) 

print(StudentName+", you scored "+str(final_score)+"/10.") 

这条线:

random.choice(my_list)() 

调用10随机函数:对。但忽略输出:错误。

然后这一行:

final_score = (question_a() + question_b() + question_c() + question_d()) 

调用这些函数非随机地,并增加了的结果。 10 + 4等于14次调用你的函数。

解决方案:

final_score = 0 
for i in range (0,10): 
    final_score += random.choice(my_list)() 

或者类似的东西。

+0

非常感谢罗德里戈,作品! – 2014-10-10 11:12:16