Цикл Python while, если условия не работают должным образом - PullRequest
0 голосов
/ 16 сентября 2018

Я новичок в Python и пробую свой первый цикл while.

Приведенный ниже код предназначен для перебора определенной формулы, определенной пользователем в переменной number_of_moves.

Когда i = 1, он должен выполнить одну формулу, однако, когда i > 1, он должен выполнить другую.Поэтому я определил if else оператор внутри формулы.

Проблема в том, что когда i > 1 он не берет вторую формулу, а продолжает использовать первую определенную формулу, которая является (22695477 * x + 1) % 2 ** 31.

Фактически, оператор else x2 должен равняться выводу из предыдущей итерации x1, а x3 должен равняться значению из вывода x2... и так далее ... используя эту формулу (22695477 * x2 + 1) % 2 ** 31.

print("Choose the type of game(1:Easy;2 Difficult)")
levelinput = int(input())

print("")


print("Enter the number of moves")

number_of_moves = int(input())
i =1
x = 79
randomvalue = (22695477*x+1)%2**31
x2 = randomvalue
machine = int()


while i <= number_of_moves:
    print("")
    print("Choose your move number", i ,"(0 or 1)")

    move_selection = int(input())

    if i  == 1:
        randomvalue = (22695477*x+1)%2**31

    else:
        randomvalue = (22695477*x2+1)%2**31

    i = i +1


    if randomvalue <= 2**31:
        machine == int(0)
    else:
        machine == int(1)

    def resultgame (move_selection,machine):
        if move_selection == machine:
            return("Computer Wins")
        else:
            return("Player Wins")

    result = resultgame

    print("player = ", move_selection, "machine = ", machine,"-", result(move_selection,machine))

1 Ответ

0 голосов
/ 16 сентября 2018

Хорошо, код, который вы написали наилучшим из возможных способов, не годится.

def LinearCong (x,x2):
  if i == 1:
    randomvalue = (22695477*x+1)%2**31
  else:
    randomvalue = (22695477*x2+1)%2**31

  return randomvalue

 x2 = randomvalue
 i+=1

Эта функция не должна помещаться в цикл while или какой-либо цикл в этом отношении.Сейчас я бы посоветовал забыть об использовании функций, т. Е. def function(): Хотя синтаксис того, что вы написали, несколько корректен, он никоим образом не реализован правильно.

Вот моя интерпретация того, чем вы былипытаясь сделать это в более простой форме.

i =1
number_of_moves = 10
x = 10000

#problem understanding
#included a randomvalue variable here becaause you want it to be assigned to var x2
#unless randomvalue is declared here the else statement would never work
randomvalue = (22695477*x+1)%2**31
x2 = randomvalue

while i <= number_of_moves:
    print("")
    print("Choose your move number", i ,"(0 or 1)")
    move_selection = int(input())

    if move_selection == 1:
        randomvalue = (22695477*x+1)%2**31
        break
    else:
        #here you are asking for var x2 which would have no value unless declared above
        #randomvalue as a variable is created here so x2 would have nothing to refer to
        randomvalue = (22695477*x2+1)%2**31
        #in this case, we are reassigning our already declared variable
        break

print(randomvalue)

У этого кода, который я написал, есть большие проблемы, но я не до конца понимаю, чего вы пытаетесь достичь.Может быть, больше информации об игре поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...