2016-12-13 4 views
0

Я хочу создать игру, которая будет генерировать уравнения умножения. Я хочу сделать так, чтобы вы получили простое уравнение множественности (например: 5 * 6), и когда вы ответите на него, программа сообщит вам, если вы правы, а затем переходите к следующему случайному уравнению. Я знаю, как сделать это с множеством разных случайных чисел, но это сделает код очень длинным и не ellegant. Мне нужен способ генерировать два разных случайных числа каждый раз, без необходимости создавать базу данных, скажем, 20 разных случайных чисел. Кто-нибудь знает как это делать? Спасибо!Как я могу создать цикл с изменением случайных чисел?

Это код, который я написал до сих пор:

import random 
import sys 
import os 

random_num1 = random.randrange(1, 10) 
random_num2 = random.randrange(1, 10) 

print(random_num1, 'X', random_num2, '=',) 

def multiplication(random_num1, random_num2): 
    sumNum = random_num1 * random_num2 
    return sumNum 

one = input() 

if(int(one) == multiplication(random_num1, random_num2)): 
    print('true') 
else: 
    print('false') 
+0

«Мне нужен способ генерировать два разных случайных числа каждый раз». Я думаю, вы говорите, что не хотите, чтобы программа создавала пару чисел, которые она уже сгенерировала (в этом запуске программы) , Это верно? Если это так, лучший дизайн - позволить повторять, если пользователь получил неверный ответ в прошлый раз. –

ответ

0

Поместите весь код в цикл в то время, которое никогда не заканчивается использованием while True: (и не забудьте переместить все внутри одной вкладки к право).

Целесообразно перемещать def multiplication из цикла while.

+0

Большое спасибо! и если я хочу запустить его специально для 10 раз, как мне это сделать? –

+0

Затем трек с прилавком. Установите 'counter = 0', затем выполните цикл while. 'while counter <10:' то внутри 'while' цикл увеличивает' counter', как этот 'counter + = 1'. –

0

Вы можете легко сделать это с помощью функции и цикла while. Скажем, вы хотите сыграть 10 раз и хотите выиграть в конце.

def multiplication(random_num1, random_num2): 
    sumNum = random_num1 * random_num2 
    # Indentation fixed 
    return sumNum 

def play() : 
    random_num1 = random.randrange(1, 10) 
    random_num2 = random.randrange(1, 10) 

    print(random_num1, 'X', random_num2, '=',) 

    one = input() 

    if(int(one) == multiplication(random_num1, random_num2)): 
     return 1 
    else: 
     return 0 

if __name__ == '__main__' : 
    number_of_play = 10 
    cpt = 0 
    result = 0 
    while cpt < number_of_play : 
     cpt+=1 
     cpt += play() 
    print "Wow you perform {} out of {}".format(result, number_of_play) 
+0

Спасибо! но я не понял много кода ... часть «def play» и часть инструкции «if» в конце. не могли бы вы объяснить это мне? –

+0

def play() создаст функцию, которая соответствует juste one play: напечатайте два номера, попросите restult и проверьте, выиграл ли пользователь. Мы будем использовать эту функцию в цикле while и называть ее десять раз. Мы получаем результат каждой попытки в «результате». Последнее, если это трюк в python, вы можете узнать больше об этом здесь: http://effbot.org/pyfaq/tutor-what-is-if-name-main-for.htm – iFlo

0

Вот это простой пример, сделанный мной (отредактированный «попробовать» заявление):

from random import randint 

while 1: 
    numA = randint(0,9) 
    numB = randint(0,9) 
    result = numA * numB 

    print("\nFirst number:", numA) 
    print("Second number:", numB) 

    while 1: 
     try: 
      userResult = int(input("Insert your multiplication result: ")) 
      break 
     except: 
      print("Error! The given digit is not a number. Retry :") 

    if userResult == result: 
     print("Bravo! That's right!") 
    else: 
     print("Damn! That's wrong!") 

Я старался быть как можно более четкими. Надеюсь, это было полезно для вас.

+0

Я понимаю, спасибо , Но теперь у меня другая проблема, если пользователь пишет что-то, что не является числом, то оно появляется как ошибка. Я думаю, что это потому, что «int» перед входом, это случилось и в моем коде. Вы знаете решение этой проблемы? –

+0

Несомненно ... здесь это простой способ проверить цифру пользователя. –

+0

в то время как 1: \t \t попробовать: \t \t \t userResult = INT (вход ("Введите свой результат умножения:")) \t \t \t перерыв #if "Int()" не дает ошибок, разрыв будет выполняться \t \t за исключением: \t \t \t print ("Ошибка! Данная цифра не является числом.Retry :) ") –

Смежные вопросы