Попытка зациклить список, чтобы распечатать каждое четное число - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь найти способ заставить appleScript отображать нечетные и четные числа.

Эти числа четные 4
Эти числа четные 6
Эти числа четные 8
Эти числа четные 10

Эти числа нечетные 3

Эти числа нечетные 5

Эти числа нечетные 7

Эти числа нечетные 9

Я пытался найти его, но я не очень хорошо понимаю appleScript.

set numberList to {3, 4, 5, 6, 7, 8, 9, 10}
repeat with i in numberList
  repeat while i mod 2 = 0
    display dialog "These numbers are even " & i
  end repeat
end repeat

set numberList to {3, 4, 5, 6, 7, 8, 9, 10}
repeat with numberList in numberList
  repeat while numberList mod 2 = 1
    display dialog "These numbers are odd " & numberList
  end repeat
end repeat

Нет ошибок. Просто застрял в бесконечной петле. Просто отобразите: эти числа даже 4 снова и снова

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вам необходимо заменить каждый внутренний цикл повторения, т. Е. Цикл while, условным условием проверки if...then, например:

set numberList to {3, 4, 5, 6, 7, 8, 9, 10}

repeat with i in numberList
    if i mod 2 = 0 then display dialog "This number is even: " & i
end repeat

предложением if...thenможет быть расширен за счет включения блока else, который будет выполняться всякий раз, когда проверяемое условие не выполняется. Это позволяет объединить два повторяющихся цикла в один, повторяя только один раз в вашем списке и давая вам результат как по коэффициентам, так и по коэффициентам за один раз:

set numberList to {3, 4, 5, 6, 7, 8, 9, 10}

repeat with i in numberList
    if i mod 2 = 0 then
        -- This block will only run if the number is even
        display dialog "This number is even: " & i
    else 
        -- This block will only run if the number is not even
        display dialog "This number is odd: " & i
    end if
end repeat
0 голосов
/ 11 ноября 2019

Форма repeat with X in Y проходит по списку Y, а переменная цикла X содержит текущий элемент в списке. Ваши фрагменты используют дополнительный цикл повторения, который будет продолжаться, пока выполняется некоторое условие, но поскольку переменная сравнения не изменяется во внутреннем цикле, когда тест верен, повторение никогда не закончится.

Вам просто нужнозаменить внутренний цикл повтора простым if ... then сравнением, например:

set numberList to {3, 4, 5, 6, 7, 8, 9, 10}
repeat with i in numberList
  if i mod 2 = 0 then
    display dialog "This number is even: " & i
  end if
end repeat

set numberList to {3, 4, 5, 6, 7, 8, 9, 10}
repeat with i in numberList
  if i mod 2 = 1 then
    display dialog "This number is odd: " & i
  end if
end repeat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...