找回密码
 加入
搜索
查看: 25801|回复: 23

[AU3基础] 如何让N个for语句用简短的语句描述

 火.. [复制链接]
发表于 2012-10-29 20:34:18 | 显示全部楼层 |阅读模式
悬赏30金钱未解决
for $a=0 to 10 step 1
               for $a=0 to 10 step 1
                    for $a=0 to 10 step 1
                          for $a=0 to 10 step 1
                               ……(有N个for语句)
                     ……(有N个next语句)
                  next
                     next
                 next
           next
如果有N个for语句,N还是个变量,这个时候有什么办法?

 楼主| 发表于 2012-10-29 21:11:21 | 显示全部楼层
在线急等,行不行都说一下,谢谢
发表于 2012-10-29 21:18:18 | 显示全部楼层
你能把问题说的具体点吗?这样描述太模糊了。
 楼主| 发表于 2012-10-29 21:24:56 | 显示全部楼层
回复 3# MicroBlue


    比方说,我们要得到一个1--N的和,我们可以这样写
local $b=0,N
for $a=0 to N step 1
$b=$b+$a
next
这样N是变量,N是由用户输入的值。那么这个时候,1--N,变成了1--N个层层的for语句,那怎么表示呢?
发表于 2012-10-29 22:15:30 | 显示全部楼层
楼主何不运行一下代的代码测试下,多次层都是11次~~
请修改下
发表于 2012-10-29 22:20:16 | 显示全部楼层
问题说的越具体越容易得到帮助
 楼主| 发表于 2012-10-29 22:35:40 | 显示全部楼层
for $a=0 to 10 step 1
               for $a=0 to 10 step 1
                    for $a=0 to 10 step 1
                          for $a=0 to 10 step 1
                               ……(有N个for语句) ;这里有N个for,但是N是个变量,是个手动输入的值,如果我N的值输入100,那我就要手动输入100个for语句了,高于100呢,这样程序繁杂,有没有什么简单的办法,比方说写一个函数,进行调用,随着N的值的变化,函数调用的次数也跟着变化的等等
                     ……(有N个next语句)
                  next
                     next
                 next
           next
发表于 2012-10-29 22:47:25 | 显示全部楼层
回复 7# sanye000001

楼主没有试运行下代码??
你试过便知,就算中间有一万个for ,代码都只执行11次
 楼主| 发表于 2012-10-29 22:52:00 | 显示全部楼层
回复 8# annybaby


    不会吧,autoit不会那么烂吧
发表于 2012-10-29 23:00:08 | 显示全部楼层
回复  annybaby


    不会吧,autoit不会那么烂吧
sanye000001 发表于 2012-10-29 22:52



    是你的描述问题。你至少应该有一段可以运行的代码来诠释问题过程,而不是不能执行的伪代码。
发表于 2012-10-29 23:01:12 | 显示全部楼层
回复 9# sanye000001


    你对for循环理解有问题啊,怪什么autoit啊。晕。
发表于 2012-10-29 23:04:14 | 显示全部楼层
回复 9# sanye000001

遇到问题时请先思考并检查代码/实机测试,而不是假设问题出在编程工具上
发表于 2012-10-29 23:05:06 | 显示全部楼层
回复 11# MicroBlue


就是就是~~
 楼主| 发表于 2012-10-29 23:12:28 | 显示全部楼层
回复 10# afan


    好吧,那我就用以下一段代码来说明一下:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <array.au3>
Global Const $haoma[33] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]
Dim $haomax[33],$haomay[1],$array[1][3] ;$haomax[33]定义复选框
Local $i, $a = 50, $b = 80, $j,$x1,$x2,$y1,$y2,$suoyin,$z,$zu,$pro ;$a\$b表示界面上的距离 $i\$j定义复选框文本以及字体大小,$x/$x1\y1\y2表示输入的组数的值,$suoyin表示被选择的数组最后一个数值的下标,$z无意义,$zu表示输入的组数
$anzhuang = GUICreate("彩票幸运分 QQ:1375030119", 800, 600)
$y1=GUICtrlCreateInput($x1,110,350,80,30)
GUISetState(@SW_SHOW, $anzhuang)
Func sange($m)                 ;这段代码表示有三个循环,因为有三个取值放在一个数组里面,现在有$y1个取值,要放在一个数组里面,我需要写入$y1个循环,怎么办?$y1=GUICtrlCreateInput($x1,110,350,80,30),$y1的值取决于用户输入$x1的值作的变化。
        Local $i1,$i2,$i3,$num1,$num2,$num3,$k=0
        For $i1 = 0 To $m Step 1
                                $num1 = $haomay[$i1]
                                For $i2 = 1 To $m Step 1
                                        If $i2 > $i1 Then
                                        $num2 = $haomay[$i2]
                                        For $i3 = 2 To $m Step 1
                                                If $i3 > $i2 Then
                                                        $num3 = $haomay[$i3]
                                                    ReDim $array[$k+1][3]
                                                $array[$k][0]=$num1
                                                    $array[$k][1]=$num2
                                                        $array[$k][2]=$num3
                                                    $k=$k+1
                                            EndIf
                                        Next  
                                        EndIf
                                Next
        Next                        
        Return $array        
EndFunc
While 1
        $msg = GUIGetMsg()
        If $msg = $gui_event_close Then
                ExitLoop
        EndIf        
        Select 
                Case $msg=$kaishi
                        $haomay=duqu()
                        GUICtrlSetData($pro,10)
                        $jieguo=sange(UBound($haomay)-1)  ;得到二维数组的结果$jieguo[$k][3]
                        GUICtrlSetData($pro,50)
                        $yiweishuzu=yiwei($jieguo) ;二维转化成一维
                        GUICtrlSetData($pro,80)
                        $zu=duqux1() ;读取x1的值
                        GUICtrlSetData($pro,85)
                        zuhe($yiweishuzu,$zu)
                EndSelect
                
WEnd
GUIDelete($anzhuang)
发表于 2012-10-29 23:13:55 | 显示全部楼层
_CallSelf(4)


Func _CallSelf($n)


        MsgBox(0,"",$n)

        If $n = 1 Then
                Exit
        Else
                _CallSelf($n-1)
        EndIf

EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 07:30 , Processed in 0.081069 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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