尝试循环列表,以便打印出每个偶数

时间:2019-11-10 23:55:40

标签: applescript

我正在尝试找到一种方法来使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

没有错误。只是陷入无限循环。 只需显示:这些数字甚至一遍又四遍

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要用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