<Python構文基礎1-2>条件文、重複文、異常処理、関数

30861 ワード


学習のまとめ
条件文
  • 複文
  • 異常処理
  • 関数
  • 1.条件文
    条件文は,特定の条件で実行される演算からなるといえる.条件文で使用される特殊な文にはif,elif,elseがあり,elifは対応する条件を満たす場合,他の条件は演算せずにスキップするという特徴がある.コードを直接見て理解したほうがいいです.
    기본 구조
    def 함수명(매개변수):
    	수행문
    
    money = 1000
    
    if money > 10000:
        print('차 빌리자!')
    elif money > 4000:	-> 조건 만족하면 다른 if, elif, else 무시
    	print('택시 타자')
    elif money > 1200:
        print('버스 타자')
    else:
        print('걸어가자...')
    
    만약 이럴 경우
    if money > 10000:
        print('차 빌리자!')
    if money > 4000:	-> 조건 만족해도 다른 if, else도 연산
    	print('택시 타자')
    if money > 1200:
        print('버스 타자')
    else:
        print('걸어가자...')
    2つ目の場合のように、ifすべてに対して比較演算を実行するのに時間がかかり、結果も理想的ではないので、できるだけそうしないでください.
    2.繰り返し文
    繰り返し文は、同じ演算で要素の繰り返し出力で構成されます.複文を完成させるためには,リスト,ディクシャナリー,チュートリアル,集合,文字列,rangeなど,重複可能な資料型が必要である.コードを見てください.
    기본 구조
    for 변수 in 반복 가능 자료형:
    	수행문
    
    for i in range(10): 	-> range는 범위를 나타내는 함수로 맨 끝 숫자는 제외한다.
        print(i)
    
    fruits = ['귤','복숭아','청포도','딸기','레드향','망고']
    for i, fruit in enumerate(fruits): # 인덱스, 값 동시에 가져옴
        print(i, fruit)
        if i == 3:
            break 		-> 연산을 강제 종료하고 끝냄
    
    for i, fruit in enumerate(fruits): -> enumerate는 값의 인덱스 번호, 값을 함께 반환한다.
        if len(fruit) == 3:
            continue 	-> 연산을 넘기고 반복문 첫줄로 돌아감
        else:
            print(i,fruit)
    3.異常処理
    プログラミング中に多くのエラーが発生し、エラーを無視したり、適切な処理方法を設定したりすることができます.この作業は例外処理です.(ただし、実際の符号化では、どこが間違っているのかなかなか見つからないので、使わないことが多い.)
    何か間違いがありますか.
  • のないファイルを開く場合(FileNotFoundError)
  • 0(ZeroDivisionError)
  • インデックスエラー
  • ...
  • このような状況のほかに、無数のものがある.もちろん、全部暗記するわけにはいきません.間違いがあったときにどう対処するかを学ばなければなりません.
    2)処理方法
    間違いを処理する文法を見てみましょう.思ったより簡単です.
    기본 구조
    try:
    	수행문
    except:
    	수행문
    
    for person in people:
        try:
            if person['age'] > 20:
                print(person['name'])
        except:
            name = person['name']
            print('{}님 자료는 오류입니다.'.format(name))
    予め定められたエラーが発生した場合は、除外文を実行することもできます.
    try:
        4 / 0
    except ZeroDivisionError as e: -> 특정 에러일 때 발생 + 에러 메시지 표시
        print(e)
    try文では、無条件に実行されるfinally句を使用できます.これは無条件に実行され、エラーが発生したかどうかにかかわらず、通常はリソースを閉じるときに使用されます.
    f = open('foo.txt', 'w')
    try:
        수행문
    finally:
        f.close()
    もう1つの方法は、エラーを直接スキップすることです.具体的にいつ使うのがいいかはまだ分かりませんが、下に使ってもいいです.
    try:
        f = open("나없는파일", 'r')
    except FileNotFoundError:
        pass	-> 에러가 발생했지만, 일단 넘김
    このほか、故意にエラーを発生させたり、カスタムエラーを作成して使用したりすることもできます.これは後で説明します.
    4.関数
    関数は、演算の重複部分を組み合わせて書きやすくするコードに名前を付けます.コードを見て構造を熟知している.
    기본 구조
    def 함수명(매개변수):
    	수행문
    
    def check_gender(pin):
        back_num = pin.split('-')[1]
        if int(back_num[0]) % 2 == 1:
            return '남자'
        else:
            return '여자'
    sex = check_gender('200101-3012345')
    print(sex)
    この状況はどうですか.
    def cal(a,b):
    	return a+b
        
    def cal(a,b):
    	print(a+b)
    上の場合はreturnという名前の結果値で、次の場合は関数に実行文があります.つまり、結果値はありません.したがって,次の関数を印刷すると結果値のないNoneが出力される.
    このように、結果値がない関数もあれば、入力値がない関数もあります.もちろん、両方ともない関数を作成することもできます.
    def hi():
    	return 'hi'
    
    def hi():
    	print('hi')
    関数を呼び出すときにパラメータを指定して呼び出すこともできます.
    def cal(a,b):
    	return a+b
    
    sum = cal(b=6, a=5)
    print(sum)
    関数の結果値は常に1つです.したがって,複数のreturnを用いても,1番目のみ出力する.
    def cal(a,b):
    	return a+b
        return a/b
    次の状況はどうですか.
    def cal(a,b):
    	return a-b, a/b
    
    result = cal(4,2)		-> result = (2,2)
    result1, result2 = cal(4,2) 	-> result1, result2 = (2,2)
    上図に示すようにreturnに行を書いて、まとめて返します.
    より多くの関数の特徴は次の議論でさらに議論され,次に今回学習したいくつかの特定の関数について議論する.
  • map
    リスト内のすべての要素を変形させる関数.この関数の結果はmapオブジェクトであるため、リストや凡例などの形式に変換する必要があります.使用方法は次のとおりです.
  • 기본 구조
    list(map(함수, 반복 가능 자료형))
    
    people = [{"name":'bob','age': 20},
              {'name':'carry','age':21},
              {'name':'john','age':26},
              {'name':'smith','age':15},
              {'name':'ben','age':34}]
    
    def check_adult(person):
        return ('성인' if person['age'] > 20 else '청소년')
    
    result = list(map(check_adult,people))
    -> ['청소년','성인','성인','청소년','성인'] 
    map関数はいつ使うべきですか?各要素に関数を適用し、リストを再生成する長いプロセスを短縮するために1つずつ追加することができるかもしれません.
    a_list = [1,2,3,4,5]
    b_list = []
    for i in a_list:
    	i += 1
        b_list.append(i)
        
    def add_one(i):
    	return i+1
    
    result = list(map(add_one,a_list))
  • filter
    map関数の用途と同様に,特定の条件下で参照値のみをフィルタリングして返す関数である.
  • 기본 구조
    list(filter(함수, 반복 가능 자료형))
    
    target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    def is_even(n):
        return True if n % 2 == 0 else False
    
    result = list(filter(is_even, target))
    -> [2,4,6,8,10]
  • lambda
    名前のない一時関数をramda関数と呼ぶ.この関数はメモリの節約、コードの簡潔さなどの利点があり、適切な場合に使用します.
  • 기본 구조
    lambda 매개변수: 수행문
    
    lambda x: x+1
    (lambda x: x+1)(3) 	-> 이처럼 정의 후 바로 사용할 수 있다.
    
    people = [{"name":'bob','age': 20},
              {'name':'carry','age':21},
              {'name':'john','age':26},
              {'name':'smith','age':15},
              {'name':'ben','age':34}]
    
    result = list(map(lambda x: '성인' if x['age'] > 20 else '청소년',people))
    理解しにくい、または全く理解していない内容
    基本的な使い方はだいたい分かりました.しかし,問題を解くたびに,条件文,繰返し文,関数などを適切に混合して用い,それぞれの深化内容を解決することはまだ十分ではないと感じられる.考え、解答、振り返る過程を繰り返すと、いつ応用性の良い開発者になるか分からない.