nop 发表于 2016-8-26 23:43:08

这个循环应该怎样写最优?

循环10次,如果过程中满足条件1 或条件2 则跳出循环并执行命令A
如果直至循环结束都没有满足任一条件,则执行命令2
for next 和 while哪个好

xiezhuoyi 发表于 2016-8-27 08:23:57

大概试了一下不知道可不可行
Local $i
For $i = 1 To 10
        If (条件1 Or 条件2) Then
                命令A
                ExitLoop
        EndIf

       
Next

If $i = 10 Then
        命令2
EndIf

Alam 发表于 2016-8-27 18:11:46

Local $bool = False

For $i = 1 To 10
        If (条件1 Or 条件2满足) Then
                $bool = True
                ExitLoop
        EndIf
Next

If $bool Then
        ;命令1
Else
        ;命令2
EndIf

h20040606 发表于 2016-8-28 06:32:45

用for和while没有啥区别的,只循环10次

heroxianf 发表于 2016-9-1 10:45:38

Local $Data1 = 3, $Data2 = 9;假设这是你的两个条件
For $i = 1 To 10
        Select
                Case $i = $Data1 ;条件一成立,跳出循环
                        MsgBox(0, '', '条件1成立')
                        ExitLoop
                Case $i = $Data2 ;条件二成立,跳出循环
                        MsgBox(0, '', '条件2成立')
                        ExitLoop
        EndSelect
Next


MsgBox(0, '', '执行下面语句')

上面基本实现,如果条件都不适合还是会执行后边的语句,所以要加判断。可以尝试用Do ... ... Until

heroxianf 发表于 2016-9-1 10:57:37

本帖最后由 heroxianf 于 2016-9-1 11:45 编辑

回复 5# heroxianf


    Local $Data1 = 32, $Data2 = 9;假设这是你的两个条件
For $i = 1 To 10
        Select
                Case $i = $Data1 ;条件一成立,跳出循环
                        MsgBox(0, '', '条件1成立')
                        ExitLoop
                Case $i = $Data2 ;条件二成立,跳出循环
                        MsgBox(0, '', '条件2成立')
                        ExitLoop
                Case Else
                        Exit
        EndSelect
Next


MsgBox(0, '', '执行下面语句')


改了一下,也不完美,条件一不成立,二成立就直接退出了。{:face (197):}

1361739590 发表于 2016-9-1 16:21:37

指定次数了用for还行,while还要写 = 10

heroxianf 发表于 2016-9-5 15:01:52

回复 7# 1361739590

你改改我的呢,第一个判断错误就直接退出了。有点不好。

heroxianf 发表于 2016-9-5 15:31:16

回复 6# heroxianf


Local $Data1 = 32, $Data2 = 91 ;假设这是你的两个条件
For $i = 1 To 10
        Select
                Case $i = $Data1 ;条件一成立,跳出循环
                        MsgBox(0, '', '条件1成立')
                        ExitLoop
                Case $i = $Data2 ;条件二成立,跳出循环
                        MsgBox(0, '', '条件2成立')
                        ExitLoop
        EndSelect
       
        If $i < 10 Then
                Sleep(10)
        Else
                MsgBox(0, '退出提示', $i)
                Exit
        EndIf

Next

MsgBox(0, '', '执行下面语句')


这个貌似可以了。

1361739590 发表于 2016-9-5 15:37:20

回复 9# heroxianf


    还是用一个flag比较好,3#

heroxianf 发表于 2016-9-5 15:50:14

回复 10# 1361739590

貌似是有点便捷,看看能不能用到最近的任务中去。
    Local $bool = False

For $i = 1 To 10
        If $i = 32 Or $i = 9 Then
                $bool = True
                ExitLoop
        EndIf
Next

If $bool Then
        MsgBox(0, '1', $bool)
Else
        MsgBox(0, '2', $bool)
        Exit
EndIf
页: [1]
查看完整版本: 这个循环应该怎样写最优?