Случайный выбор операторов (add, sub) с условиями - PullRequest
0 голосов
/ 14 января 2020
import operator
import random
# these modules will help with the random picking of operators

ops = {"+": operator.add, "-": operator.sub}
a = ["+", "-"]  #this is to do the random.choice() function
b = float(ops[random.choice(a)](0, 1))  #these can only take 2 parameters, don't ask me why 
c = float(ops[random.choice(a)](2, 3))
d = float(ops[random.choice(a)](4, 5))
e = float(ops[random.choice(a)](6, 7))
f = float(ops[random.choice(a)](8, 9))
print(b+c+d+e+f)  #I have no idea how to do random operators here so i just added

while b+c+d+e+f != 5: #to over and over until i get 5
    if b+c+d+e+f == 5: #if that finally happens...
        print(b+c+d+e+f) #print 5

Так что идея состоит в том, чтобы использовать случайные операторы между числами 0-9, чтобы получить 5. Я буквально не знаю, какой код использовать. Функция operator.add() принимает только 2 параметра. если кто-нибудь может дать мне представление о том, как ввести больше параметров, это действительно поможет. Проще говоря, числа 0,1,2,3,4,5,6,7,8,9 должны иметь + или минус go между каждым числом, чтобы получить число 5.

1 Ответ

0 голосов
/ 14 января 2020

Вероятно, это не самый эффективный или элегантный метод, но он сработает. Всегда делайте то, что нужно сделать, пока l oop. В вашем примере только b + c + d + e + f вычисляется только снова и снова, в то время как операторы и значения для b, c, d, e и f не меняются.

import random

result = 0
result_str = ""
while result != 5:
    result = 0
    result_str = ""
    for i in range(0,10):
#         here is random decision between operators
        if bool(random.getrandbits(1)):
            result += i
            result_str = result_str + "+" + str(i)
        else:
            result -= i
            result_str = result_str + "-" + str(i)
print(result_str)
...