找回密码
 加入
搜索
查看: 2788|回复: 10

[效率算法] 这个循环应该怎样写最优?

  [复制链接]
发表于 2016-8-26 23:43:08 | 显示全部楼层 |阅读模式
循环10次,如果过程中满足条件1 或条件2 则跳出循环并执行命令A
如果直至循环结束都没有满足任一条件,则执行命令2
for next 和 while哪个好
发表于 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
发表于 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
发表于 2016-8-28 06:32:45 | 显示全部楼层
用for和while没有啥区别的,只循环10次
发表于 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
发表于 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, '', '执行下面语句')



改了一下,也不完美,条件一不成立,二成立就直接退出了。
发表于 2016-9-1 16:21:37 | 显示全部楼层
指定次数了用for还行,while还要写 = 10
发表于 2016-9-5 15:01:52 | 显示全部楼层
回复 7# 1361739590

你改改我的呢,  第一个判断错误就直接退出了。有点不好。
发表于 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, '', '执行下面语句')


这个貌似可以了。
发表于 2016-9-5 15:37:20 | 显示全部楼层
回复 9# heroxianf


    还是用一个flag比较好,3#
发表于 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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 22:21 , Processed in 0.074336 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表