python独学編9[関数(3):変数役割ドメイン+ATM+5個の小さな練習]

20342 ワード

python基礎シリーズ:python独学編一[Anaconda 3インストール]python独学編二[pytharmインストールおよび使用]python独学編三[判断文ifの使用]python独学編四[基本データ型と文字列常用処理]python独学編五[リスト]python独学編六[メタグループ]python独学編七[辞書+深コピーと浅コピー]説明python独学編八[ループ:while+for+pass+range()+導出式]python独学編9[関数(一):パラメータ+オブジェクト]python独学編9[関数(二):戻り値return+yield+反復器+ジェネレータ]python独学編9[関数(三):変数作用ドメイン+ATM+5個小練習]python独学編9[関数(四):再帰関数+匿名関数+内蔵関数+高次関数]python独学編10[オブジェクト(一):オブジェクト向け概念+定義クラス+練習一]python独学編10[オブジェクト向け(二):継承+マルチ継承+クラス属性+インスタンス属性]python独学編10[オブジェクト向け(三):アクセス制限+クラスメソッド+静的メソッド]python独学編10[オブジェクト向け(四):王者栄光ゲーム+簡単な銀行業務処理をシミュレートするクラス]python独学編11[モジュール概要+モジュール作成+dir()関数+標準モジュール+パッケージ]python独学編12[ファイル:開く+読み込み+書き込み+練習問題]

変数の役割ドメイン

  • プログラムのすべての変数は、どの場所でもアクセスできるわけではありません.アクセス権は、この変数がどこで付与されるかを決定します.
  • は、関数内部の変数が局所的な役割ドメインを有することを定義し、関数外のグローバルな役割ドメインを有することを定義する
  • である.
  • 変数の役割ドメインは、どのプログラムでどの特定の変数名にアクセスできるかを決定します.2つの最も基本的な変数の役割ドメインは、
  • です.

    ローカル変数:関数の内部に宣言された変数はローカル変数であり、ローカル変数は関数にのみ作用し、外部では使用できません。

  • 異なる関数は、同じ名前の局所変数を定義することができるが、それぞれの使用は
  • に影響を及ぼさない.

    ≪グローバル変数|Global Variable|oem_src≫:関数の外部に宣言された変数。関数の外に定義されたグローバルな役割ドメインを持つ

  • 可変タイプのグローバル変数では、global宣言
  • を使用せずに関数を変更できます.
  • 可変型のグローバル変数の場合、関数で変更するにはglobal宣言
  • が必要です.
  • 関数内部でグローバル変数を変更するにはgrobalキーワード宣言
  • を使用する必要があります.
    global    
    

    関数の練習問題


    ATM

  • 最初の方法(世界が2番目より複雑):
  • '''
        ATM   
    '''
        #1.    
    def login(password):
        pwd='88888888'#    88888888
        if password==pwd:
            return True
        else:
            return False
    
        #    
    def checkmoney(money):
        if money.isdigit():
            if int(money)%100==0 and 0<= int(money) <=1000:
                return money
            else:
                return False
        else:
            return False
    
        #    
    def main():
        for i in range(3):
            password=input('       :')
            if login(password):
                money=input('     :')
                if checkmoney(money):
                    print('    ,  :%s '%money)
                else:
                    print('      !')
                break
            else:
                print('      ')
    main()
    
  • 第2の方法(時間の複雑さが小さい):
  • #    
    def login(passwd):
        pwd = '888888'
        if passwd == pwd:
            return True
        else:
            return False
    
    #2.    
    def checkMoney(money):
        if money.isdigit():
            if int(money) % 100 ==0 and 0<= int(money) <=1000:
                return money
            else:
                return False
        else:
            return False
    
    #           
    def main():
        #1.    
        for i in range(3):
            passwd = input('     :')
            if passwd == 'n':
                break
            if login(passwd):
                # 2.    
                while True:
                    money= input('     :')
                    money = checkMoney(money)
                    if money :
                        print('    %s '%money)
                        break
                    else:
                        print('       !     ')
                # 3.    
                print('    ')
            else:
                if i == 2:
                    print('         ,     !')
                    break
                print('    ')
    
    main()
    
  • 1.入力文字列の個数を計算する
  • def getLen(s):
        if isinstance(s,str): #args1:    args2:    
            return  len(s)
        else:
            return '    '
    print('        :')
    num = getLen(input())
    print(num)
    
  • 結果
  •         :
    jhgydjlkjkkjhgiehsgpgvoihsg
    27
    
  • 2.ユーザが入力文字列、リスト、タプル長が5
  • より大きいか否かを判定する.
    def getLen2(args):
        if isinstance(args,(str,list,tuple)):
            if len(args) > 5:
                print('         5')
            else:
                print('         5')
        else:
            print('    ')
    
    getLen2(['a','b',1,2])
    

    結果:
             5
    
  • 3.不定個数の文字列を書き込み、最初の文字列と最後の文字列をつなぐ
  • def getStr(*args):
        return args[0]+args[-1]
    
    print(getStr('fafafaf','2','lkjkjhkjh'))
    

    結果:
    fafafaflkjkjhkjh
    
  • 4.複数のパラメータを入力し、listで
  • を返します.
    def getList(*args):#*args        
        li = []#       
        for i in args:#  args
            li.append(i)#    args          
        return li
    
    list01 = getList(1,2,3,4,5)
    print(list01
    

    結果:
    [1, 2, 3, 4, 5]
    
  • 5.関数を定義し、不定個数の数値を入力し、すべての数値の
  • を返します.
    def getSum(*args):
        x = 0
        for i in args:
            x+=i
        return x
    
    num = getSum(1,2,3,4,5)
    print(num)
    
    

    結果:
    15