2014-11-04 2 views
1

Это для Python 3.3. Когда я запускаю эту программу, она всегда выполняет подпрограмму «func_addition».Выбор случайных подпрограмм из списка

Я хочу сделать так, чтобы он выбирал случайную подпрограмму из списка. Таким образом, он задаст случайный арифметический вопрос.

import random 
def func_addition(): 
    a = random.randint(1,25) 
    b = random.randint(1,25) 
    c=a+b 
    answer=int(input("What is "+str(a)+" + "+str(b)+" ? ")) 

def func_subtraction(): 
    d = random.randint(10,25) 
    e = random.randint(1,10) 
    f=d-e 
    answer=int(input("What is "+str(d)+" - "+str(e)+" ? ")) 

def func_multiplication(): 
    g = random.randint(1,10) 
    h = random.randint(1,10) 
    i=g*h 
    answer=int(input("What is "+str(g)+" X "+str(h)+" ? ")) 

my_list=[func_addition() , func_subtraction() , func_multiplication()] 

name=input("What is your name ? ") 
print("Hello "+str(name)+" and welcome to The Arithmetic Quiz") 
print(random.choice(my_list)) 

ответ

0
import random 
def func_addition(): 
    a = random.randint(1,25) 
    b = random.randint(1,25) 
    c=a+b 
    answer=int(input("What is "+str(a)+" + "+str(b)+" ? ")) 

def func_subtraction(): 
    d = random.randint(10,25) 
    e = random.randint(1,10) 
    f=d-e 
    answer=int(input("What is "+str(d)+" - "+str(e)+" ? ")) 

def func_multiplication(): 
    g = random.randint(1,10) 
    h = random.randint(1,10) 
    i=g*h 
    answer=int(input("What is "+str(g)+" X "+str(h)+" ? ")) 

my_list=[func_addition , func_subtraction , func_multiplication] #without parentheses 

name=input("What is your name ? ") 
print("Hello "+str(name)+" and welcome to The Arithmetic Quiz") 
random.choice(my_list)() 
+1

Два раза 'random.choice'? – Matthias

+0

@Matthias спасибо, забыл удалить заявление печати. – orestisf

+0

Я попробовал my_list = [func_addition, func_subtraction, func_multiplication] БЕЗ ПАРАМЕНТОВ. Но когда я запускаю его, он говорит: «Как тебя зовут? Thifyan Привет, Thifyan Приветствуем вас в арифметической викторине

3

Удалите скобки или вы будете называть все функции, когда список будет создан.

my_list = [func_addition , func_subtraction , func_multiplication] 

name = input("What is your name ? ") 
print("Hello {} and welcome to The Arithmetic Quiz".format(name)) 
chc = random.choice(my_list) # pick random function 
chc() # call function 

Вы не видели, чтобы использовать переменные, я хотел бы сделать что-то вроде следующего, чтобы проверить ответ:

def func_addition(): 
    a = random.randint(1,25) 
    b = random.randint(1,25) 
    c = a + b 
    answer = int(input("What is {} + {} ? ".format(a,b))) 
    if answer == c: 
     print("Well done, that is correct") 
    else: 
     print(" Sorry, that is incorrect, the correct answer is {}".format(c)) 
+0

Я пробовал my_list = [func_addition, func_subtraction, func_multiplication] БЕЗ ПАРАМЕТРОВ. Но когда я запускаю его, он говорит: «Как тебя зовут? Thifyan Привет, Thifyan и добро пожаловать в арифметическую викторину

+0

@ThifyanRavinehru, код работает как отправленный –

+0

@ThifyanRavinehru вы печатаете функцию, которую вы выбираете. Вам нужно запустить его вместо random.choice (my_list)() – orestisf