ループとwhileを終了

6561 ワード

1.ループ終了
  • break、
  • サイクル全体から飛び出します
    #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    for i in xrange(10):
        if i == 5:
            break
        print i
    else :
        print "end"
    

    上記のプログラムの場合、breakがあるため、後続の文は実行されません.結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    0
    1
    2
    3
    4
    
    Process finished with exit code 0
    
  • continue、現在の小さなループから飛び出して上のコードを何行か追加します:
  • #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    for i in xrange(10):
        if i == 3:
            continue
        if i == 5:
            break
        print i
    else :
        print "end"
    

    結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    0
    1
    2
    4
    
    Process finished with exit code 0
    
  • pass占位、何もしない
  • #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    for i in xrange(10):
        if i == 3:
            continue
        if i == 5:
            continue
        if i == 6:
            pass
        print i,
    else :
        print "end",
    print "haha"
    

    これで3も5も印刷されず、結果を見ることができます.
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    0 1 2 4 6 7 8 9 end haha
    
    Process finished with exit code 0
    
  • sys.exit()プログラムを終了し、sysモジュール
  • を先に挿入する
    #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    import sys
    for i in xrange(10):
        if i == 3:
            continue
        if i == 5:
            continue
        if i == 6:
            sys.exit()
        print i,
    else :
        print "end",
    print "haha"
    

    結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    0 1 2 4
    
    Process finished with exit code 0
    
  • デジタルゲーム
  • システムは1つの20以内のランダムな整数を生成して、プレーヤーは6回推測する機会があって、毎回推測してすべてフィードバックがあります(推測は大きくて、推測は小さくて、推測は-終了しました)6回の中で、推測は正しくて、プレーヤーは勝った.さもなくばシステムは勝った.
    #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    import random
    import sys
    random_num = random.randint(1, 20)
    for i in xrange(1, 7):
        enter_num = int(raw_input('Please input a num between 1 and 20:  '))
        if random_num < enter_num:
            print 'the enter_num is bigger.'
        elif random_num > enter_num:
            print 'the enter_num is lower.'
        elif random_num == enter_num:
            print 'you are win'
            sys.exit()
    print 'game over'
    

    結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171228/   .py
    The random have been created
    Please input a num between 1 and 20:  5
    the enter_num is lower.
    Please input a num between 1 and 20:  6
    the enter_num is lower.
    Please input a num between 1 and 20:  7
    the enter_num is lower.
    Please input a num between 1 and 20:  8
    the enter_num is lower.
    Please input a num between 1 and 20:  9
    the enter_num is lower.
    Please input a num between 1 and 20:  10
    the enter_num is lower.
    game over
    
    Process finished with exit code 0
    

    2.プロセス制御--while
  • while forと比較
  • forサイクルは回数のあるサイクルに用いられる.
  • whileサイクルは条件付き制御に用いられる.

  • whleループは、式が偽になるまでwhileループを終了します.式は論理式であり、TrueまたはFalseを返さなければなりません.
  • 構文:while expression:statement(s)
  • whileはデッドサイクルと書きやすく、負荷が大きすぎます.例えば、次のスクリプト:
  • #!/usr/bin/python
    while 1:
        print "hello"
    

    実行すると、コンピュータはhelloを出力し続けます.
  • 修正バージョン1:
  • #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    n = 0
    while 1:
        if n == 5:
             break
        print n,"hello"
        n += 1
    

    出力結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    0 hello
    1 hello
    2 hello
    3 hello
    4 hello
    
    Process finished with exit code 0
    
  • 修正バージョン2:キーボード入力待ち
  • #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    while 1:
        print "hello"
        if raw_input("please input sth,q for quit:  ") == "q":
            break
    

    実行結果
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    hello
    please input sth,q for quit:  a
    hello
    please input sth,q for quit:  q
    
    Process finished with exit code 0
    
  • 修正バージョン3:while条件はfalse、終了ループ
  • #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    n = "" #n     
    while n != "q" :
        print "hello"
        n = raw_input("please input sth,q for quit:  ")
    

    結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    hello
    please input sth,q for quit:  fgg
    hello
    please input sth,q for quit:  q
    
    Process finished with exit code 0
    
  • whileのelse、クラスは他のサイクル
  • より
    #!/usr/bin/python
    # -*- coding:utf8 -*-
    # author: chawn
    # date:
    n = ""
    while n != "q" :  #   n  ,         
        print "hello"
        n = raw_input("please input sth,q for quit:  ")
        if n == "q":  #    q,  while  ,  else  
            continue
    else:
        print "world"
    

    結果:
    C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/171226/ts.py
    hello
    please input sth,q for quit:  w
    hello
    please input sth,q for quit:  q
    world
    
    Process finished with exit code 0
    

    3.練習
    練習問題
  • は、正の整数を質量係数に分解する.例えば、90を入力し、90=233*5を印刷します.プログラム分析:nを分解する質量因数は、まず最小の質量数iを見つけてから、以下の手順で完成する:(1)分解後商が1であれば、質量因数を分解する過程が終わったことを説明し、印刷すればよい.(2)商が1でない場合はiの値を印刷し、nをiで割った商を用いて新しい正の整数として分解し、第1のステップを繰り返す.(3)nがiで割り切れない場合,iの値に1を加え,第1のステップを繰り返す.
  • サルが桃を食べる問題:サルは初日にいくつかの桃を摘んで、すぐに半分食べて、まだ中毒していないで、また1つ多く食べて、翌朝また残りの桃を半分食べて、また1つ多く食べました.それから毎朝、前日の残りの半分を食べました.10日目の朝に食べたくなったとき、桃が1つしか残っていませんでした.初日にどれだけ摘んだかを求めます.プログラム分析:逆思考の方法を採用し、後から推測する.
  • 解答:
  • def fun(n):
    
        for i in range(2, n / 2 + 1):
    
            if n % i == 0:
    
                print(i),
    
                print("*"),
    
                return fun(n / i)
    
        print(n),
    
    
    
    if __name__ == "__main__":
    
        i = int(input("      : "))
    
        fun(i)
    
  • 解答
  • num = 1
    
    for i in range(9, 0, -1):
    
        num = (num + 1) * 2
    
    print('      %s   ' %num)