精华内容
下载资源
问答
  • secret = random.randint(1, 99) guess = 0 tries = 0 print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!") print ("It is a number from 1 to 99,I'll give you 8 tries. ") while guess != ...
  • break2 = False while (True): // 省略 while (True): // 省略 if xxx: break2 = True break if (break2): break 参考文章1:如何在Python中使用break跳出多层循环 参考文章2:...
    break2 = False
    while (True):
        //  省略
        while (True):
            // 省略
            if xxx:
                break2 = True
                break
        if (break2):
            break
    

    参考文章1:如何在Python中使用break跳出多层循环

    参考文章2:python(3)- 循环语句:从最内层跳出多层循环

    展开全文
  • if (ch == -1) { bt = NULL; } else { bt = (BSTreeNode *)malloc(sizeof(struct BinSearchTreeNode)); bt->data = ch; //递归赋值左子树 bt->leftchild = create(); //递归赋值右子树 ...
  • 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 大神们怎么能让 serverSocket.accept()等待一段时间如果没人连接就退出啊 ```public List<Socket> socketAccept(ServerSocket server){ try { long time=System.currentTimeMillis(); while (System...
  • void GenBoxFiltrLUT(int LUTsiz, float* p_LUT0, float* p_LUT1); void MakeWhiteNoise(int n_xres, int n_yres, unsigned char* pNoise); void FlowImagingLIC(int n_xres, int n_yres, float* pVector, unsigned ...
  • 关于Jeff的《编程小练习:拆分自然数》问题,在此我提供一种思路,希望大家理解这种思路后能够自己把答案写出来。我先问大家一个问题,写一个函数...我知道那些会写高精度加法的人会跳出来说,就做一个高精度的二进制加
            

    关于Jeff的《编程小练习:拆分自然数》问题,在此我提供一种思路,希望大家理解这种思路后能够自己把答案写出来。

    我先问大家一个问题,写一个函数按顺序输出所有的4位二进制数(即:0000, 0001, 0010, 0011, ..., 1110, 1111),你会怎么写? 如果把固定4位变成任意n位,你又会怎么写?我知道那些会写高精度加法的人会跳出来说,就做一个高精度的二进制加法,Array的每一位保存二进制数的每一位,每次在末尾加1,然后让高精度加法自己处理进位,最后打印结果。老实说,我也做过这种蠢事,直到我在高中的一次竞赛中看到了一种比较巧妙的做法:(我最近一年都是写JavaScript,所以我在这里就用JavaScript写了)

    function main(n) {
        
    var array = new Array(n);
        
    var i = 0;
        
        
    var write = function() {
            console.log(array.join(
    ''));
        };
        
        
    var scan = function() {
            
    return array[i] == 1;
        };
        
        
    var step = function() {
            array[i] 
    = 1;
            i
    ++;
        };
        
        
    var fill = function() {
            
    while (i < n) {
                array[i] 
    = 0;
                i
    ++;
            }
            i
    --;
        };
        
        fill();
        write();
        
    while (true) {
            
    while (i >=0 && scan()) {
                i
    --;
            }
            
    if (i < 0) {
                
    break;
            }
            step();
            fill();
            write();
        }
    }

    如果你一眼就能看明白这是怎么做的,我相信你能够立即理解为什么我跟Jeff说两重while能够解决问题,因为本质上是相同的问题。(如果你不熟悉JavaScript的闭包概念的话,你可以认为array和i是全局变量,在write、scan、step、fill以及main的主逻辑中用到的array和i都是指同一个东西。)

    道理其实很简单,根本不需要考虑使用加法,只需要用while从低位开始遍历,找到第一个为0的位(scan),把它置为1(step),然后再回过头来把比它低的位都由1置为0就可以了(fill)。例如1001110011,它从低位数起的第一个值为0的位是百位(如果用十进制数的叫法的话),把它置为1就成了1001110111,然后再把比它低的位都置为0,那就成了1001110100

    简单吧?那么我们再来考虑一个略作修改的问题。写一个函数,按顺序输出所有含有2个1的4位二进制数(即:0011, 0101, 0110, 1001, 1010, 1100),你会怎么写?如果把固定的2和4这两个条件换成任意的m和n,你又会怎么写?

    function main(m, n) {
        
    var array = new Array(n);
        
    var i = 0;
        
        
    var write = function() {
            console.log(array.join(
    ''));
        };
        
        
    var scan = function() {
            
    if (scan.start) {
                scan.start 
    = false;
                scan.sum 
    = 0;
            }
            scan.sum 
    += array[i];
            
    return (array[i] == 1 || scan.sum == 0);
        };
        
        
    var step = function() {
            array[i] 
    = 1;
            fill.sum 
    = scan.sum - 1;
            i
    ++;
        };
        
        
    var fill = function() {
            
    while (i < n - fill.sum) {
                array[i] 
    = 0;
                i
    ++;
            }
            
    while (i < n) {
                array[i] 
    = 1;
                i
    ++;
            }
            i
    --;
        };
        
        fill.sum 
    = m;
        fill();
        write();
        
    while (true) {
            scan.start 
    = true;
            
    while (i >=0 && scan()) {
                i
    --;
            }
            
    if (i < 0) {
                
    break;
            }
            step();
            fill();
            write();
        }
    }

    还是类似的写法,用while从低位开始遍历,找到第一个为1的位,再找它之后第一个为0的位(scan),把它置为1(step),然后再回过头来填充比它低的位(fill)。这次填充逻辑要复杂一些,它需要知道刚才scan跳过了多少个为1的位,把这些1都填充到较低位,而较高位用0填充。

    大家应该能够注意到,第二道题的main代码主题逻辑是和第一道题的几乎一致的,改变的只是scan、step、fill。main代码的主逻辑不同之处在于,scan多了一个start的状态,用于每一轮scan开始的时候初始化sum。此外,scan与fill之间多了一个sum的共享状态。实际上,我们可以对第一道题的scan、step、fill略作修改,容忍掉无用的start与sum状态,使得它们能够运行在第二道题的main代码主逻辑中。

    这是一种什么模式?策略模式。main代码主逻辑按照固定的方式进行scan、step、fill。对于类似的题目,你只要写出正确的scan、step、fill就可以了,main代码的主逻辑完全不需要动。我所出的第二道题,其实是对Jeff题目特化。特化的地方在于,Jeff的题目要求能够接受sum, n, min, max,而我的题目把sum等同为m,把min特化为0,把max特化为1。此外,Jeff要求排除重复的组合,换句话说,就是得到的序列要求是不下降序列,但如果我的题目也如此限制为不下降序列的话,解就永远只有一个了(例如,m=2且n=4时,不下降序列就只有0011),因此我把这个限制条件去掉了。

    总的来说,Jeff的题目与我所说的这两道题本质上是相同的,你想要解答Jeff的题目,只需要在我给出的main代码主逻辑基础上写出正确的scan、step、fill就可以了。具体的解答我稍后给出,大家可以先自己尝试写一下。

    展开全文
  • LINUX与UNIX SHELL编程指南(很全)

    热门讨论 2009-07-26 17:30:33
    18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 要删除所有结点,怎么删除? 往往都要定义前后指针 pre ,p 毕竟一个指针不够用。 思路: 1.定义两个指针pre,p ,其中pre开始指向头结点 (pre = L). 2.通过while循环,首先释放头结点。然后两个指针,同步后移 3. ...

    单链表的存储结构:

    typedef struct LinkList{
            int data;
            LinkList * next;
        }
    

    分析:
    要删除所有结点,怎么删除?
    往往都要定义前后指针 pre ,p 毕竟一个指针不够用。

    思路:
    1.定义两个指针pre,p ,其中pre开始指向头结点 (pre = L).
    2.通过while循环,首先释放头结点。然后两个指针,同步后移
    3. 循环跳出后,pre指向最后一个节点,最后把该节点删除

    C代码实现:

    void DestrongList(LinkList * L){
            LinkList * pre = L,* p;
            p = pre->next;
            while(p!=null){
                free(pre);
                pre = p;
                p = p->next;
            } //跳出后,pre指向最后一个节点,最后把该节点删除
            free(pre);
        }
    
    展开全文
  • 1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或...
  • if(j%(n+1)==0) System.out.println(P[j]); else { if(P[j]=="JianDao") System.out.println("ChuiZi"); else if(P[j]=="ChuiZi") System.out.println("Bu"); else System.out.println("JianDao...
  • 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7...
  • 关于Python的位置规则

    2018-09-21 11:31:24
    怎么从无线循环里跳出来: ... print(1) print('a') print(1) print('a') print(123) 按crtl+c可以跳出无线循环。 关于Python的规则: i = 0 while (i&lt;10): i = i+1 print(1) prin...

    怎么从无线循环里跳出来:

    i = 0
    while (i<10):
        
        print(1)
        print('a')
        print(1)
        print('a')
    print(123)

    按crtl+c可以跳出无线循环。

    关于Python的规则:

    i = 0
    while (i<10):
        i = i+1
        print(1)
        print('a')
        print(1)
        print('b')
    print(123)

    这种情况下while只会管道print(‘b’),而后面的print(123)不属于while范围内了。

    结果表示为:

    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    1
    a
    1
    b
    123

    在Python编程中,比如要输入一个while循环,按回车键Python会自动空格,相当于tab。

    展开全文
  • 2.因为不知道循环次数,故用while循环,这里条件怎么写? 当循环跳出时,就是条件。 1.p !=null 2.p->data != e; {p = p->next; n++} 3.如果p=null ,则返回0。 否则 就是找到了,返回n C代码实现: int ...
  • while (1) { scanf("%c",&sp); if (sp == A || sp == B) break; printf("输入有误,请重输:\n,%c",sp); printf("%c",sp); } 此循环无法生效,然后我改成后面的,发现到scanf处就失效...
  • while(1){ /*通过建立的连接进行通信*/ int res = recv(server.m_revSocket, revData, 255, 0); if (res > 0) { //printf("Bytes received: %d\n", res); // server.m_wndOutputBuild.AddString(_T(...
  • //System.out.println(al.get(1).getName()); for(Clerk c : al){ //System.out.println(c.getName()); } } ClerkManage cm=new ClerkManage(); BufferedReader br=new BufferedReader(new ...
  • = 1) //j=sqrt(i)+1时说明i为质数,符合这个if条件,执行输出语句 dv1.push_back(i); //cout ;此为测试j值语句 else if (j (i) && i != 1) dv2.push_back(i); } cout 质数为:" ; for (n = ...
  • while循环 上期我们讲过了for循环,也提到了while循环,这期我们就来讲...while(1) { 语句1 语句2 …… } 也就是说这个while循环可以等价于死循环+if语句,但是死循环是无止境的,怎么才能让它跳出循环呢?接着
  • while((s=br.readLine())!=null) { allCon+=s+"\r\n"; } //放置到jta即可 jta.setText(allCon); } catch (Exception e2) { // TODO: handle exception e2....
  • %(1) Identification for col = 1:N product(col) = Phi(:,col)'*r_n; end % product = Phi'*r_n;%传感矩阵A各列与残差的内积 a = max(product,0); [val,pos]=sort(a,'descend'); Js = pos(1:K);%选出...
  • //显示正弦波图案 write_date(1); write_date(0); write_date(1); write_date(0); write_date(1); led3=1; led0=0; //点亮正弦波指示灯 } if(boxing==1) //注释同上 { write_com(0x80+10); ...
  • while(j >= 0 && pArray[j] >= tmp) { pArray[j+1] = pArray[j]; j--; } pArray[j+1] = tmp; }//end for i } HDIB Mfa(HDIB hDIB,int n) { BYTE temp=(BYTE)malloc(n*n*sizeof(BYTE)); //指向图像起始位置的指针 ...
  • while(i--){ if(flag){ break; } if(data[i] === item){ flag = true; break }else{ if(data[i] instanceof Array || data[i] instanceof Object){ exitindata(data[i],item); } } } }else{ for...

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

while(1)怎么跳出