Python Day 5 n次元データ、比較/論理演算子


復習Day 4


Day 4復習とDay 5カリキュラムリソース
1-1. 次の「for文」と「informixing」を使用して出力します.
출력예시
가 나
다 라
마 바
list1 = ['가', '나', '다', '라', '마', '바']
for i in range(len(list1)):
    print(list1[i], list1[i+1])
1-2. 次の「for文」と「informixing」を使用して出力します.
출력예시
바 마
마 라
라 다
다 나
나 가
list1 = ['가', '나', '다', '라', '마', '바']
for i in range(len(list1), 0, -1):
    print(list1[i], list1[i-1])

2 Dリスト2 Dりすと


2-1. 下図を参照して、2階建てのマンションを2次元の単子洞に設置してください.
101호|102호
201호|202호
301호|302호
401호|402호
dong = []
for i in range(1, 5):
    dong_e = ["{0}01호".format(i), "{0}02호".format(i)]
    dong.append(dong_e)
print(dong)
2 2 3階だけ探して
print(dong[2])
2 3 102番のみ検索
print(dong[0][1])
24 2番線すべて検索プール1
#풀이1
for j in range(len(dong)):
    print(dong[j][1])
    
#풀이2
for k in dong:
    print(k[1])
2 5最終レイヤーからデジタル順に出力
for j in range(len(dong)-1, -1 , -1):
    print(dong[j][0])
    print(dong[j][1])
2 6最後の階から湖の逆順で出力(池2の方式で)
for row in dong[len(dong) :  : -1]:
    print(row[1])
    print(row[0])
3
dong1 = {}
for i in range(1, 3):
        dong1["{0}호".format(i)] = ["10{0}호".format(i), "20{0}호".format(i), "30{0}호".format(i), "40{0}호".format(i)]
print(dong1)
print(dong1.get("1호")[2], dong1.get("2호")[2])
#단 get 없이 dong1("1호")[2]로 써도 되는데 만약 호출 key 값이 없을시 에러가 난다. 게다가 get을 쓸 때는 없을시 안내문도 추가할 수 있다.
print(dong1.get("2호")[0])
print(dong1.get("2호"))

for j in range(1, 3):
    print(dong1.get("{0}호".format(j)))

1.n次元リストとディクシャナリー


1)n次元リストとその出力方法


実習ホーム印刷
実習パパだけ印刷
# 3차원 리스트
gagu = [ [ ['짱구', '짱구엄마' , '짱구아빠', '짱아'],['훈이', '훈이엄마' , '훈이아빠'] ] ]
# 1번 풀이
for i in range(2):
    print(gagu[0][i]) 
# 2번 풀이
for i in range(2):
    print(gagu[0][i][2])
実習パパだけに印刷
インデックス2の位置にはお父さんがいないかもしれないからです.
(家族の順序が異なるか、家族がいない場合)
リストで「お父さん」を探します.
#풀이 1 불러온 값의 마지막 두 글자 매칭
# 약점발견_ j[-2:] 마지막에서 두 번째까지 꺼낸다는 뜻인데 거꾸로 인덱스 표현하는데에서 좀 헤맸다.
gagu = [ ['짱구', '짱구엄마' , '짱구아빠', '짱아'],['맹구'], ['철수엄마' , '철수'], ['훈이', '훈이아빠' , '훈이엄마', '훈이동생']]
for i in gagu:
    for j in i:
        if j[-2:] == "아빠":
            print(j)
#풀이 2 변수.find() 활용
gagu = [ ['짱구', '짱구엄마' , '짱구아빠', '짱아'],['맹구'], ['철수엄마' , '철수'], ['훈이', '훈이아빠' , '훈이엄마', '훈이동생']]
for i in gagu:
    for j in i:
        if j.find("아빠") >0:
            print(j)

2)nviディック電池及びその出力方法


実習3 apt変数名ディックショーニーの「1番」にクレヨンしんちゃんファミリー、「2番」にフンファミリー
実習
  • 入力時印刷(種類[「小葉幼稚園」][1号])
  • 出力例["クレヨンしんちゃん"、"クレヨンしんちゃんママ"、"クレヨンしんちゃんパパ"、"クレヨンしんちゃん"
  • # 3번 풀이
    apt = {}
    for i in range(len(gagu)+1):
        apt["{0}호".format(i+1)] = gagu[0][i] #가족별로 1호, 2호 딕셔너리에 담기
    # 4번 풀이
    kind = {}
    kind["떡잎유치원"] = apt

    2.深化比較/論理演算子


    1)比較演算子


    A.種類

  • <,>,<=,>=,==,!= : 比較値自体は同等(Equality)
  • is,isnot:比較対象アドレス同一性
  • 他の言語では、==1回の比較値とアドレス値を使用できます.
    ただし、Pythonには完全な恒等演算子(==)はありません.
  • # 예제 1
    print(1 == 1.0) #True 타입은 상관없이 값이 같은지 판단한다.
    print(1 is 1.0) #False 타입이 달라 다른 객체, 다른 주소로 저장되기 때문이다.
    
    # 예제2_ 얕은 복사 vs 깊은 복사
    arr = [10, 20, 30, 40 , 50]
    copy1 = arr
    print(arr is copy1)
    
    import copy
    arr2D = ['Hello', 'Bye', 'Hi', ['Goodnight', 'Goodmorning', 'Goodafternoon']]
    arr2deep = copy.deepcopy(arr2D)
    print(arr2D is arr2deep)

    2)論理演算子


    A.起動方式

  • short-circuit evalution
  • 段落評価:結果が最初の値によって決定された場合、2番目の値は評価なしで動作します.
  • print(False or "Hello") #Hello  헬로 역시 참이다.
    print("hello" or True)  #hello
    print(True or "Hello") 
    #True   or는 순서상 True 나오면 그 값까지 확인하고 출력한다. 
    print(True and "Hello") 
    #Hello  and는 False가 나오면 그 값까지 확인하고 바로 출력한다.

    B.操作手順

  • not,and,or順序判断
  • print(not True and False or not False)
    #(1_not True) (3_and) False (4_or) (2_not False)
    #1 not True → False
    #2 not False → True
    #3 False and False  → False
    #4 False or True  →  결과
    #결과 True

    3)比較演算子と論理演算子を一緒にする場合

  • まず比較演算子を判断し、次に論理演算子を判断する.
  • #예시_1
    print(not 1 is 1.0)
    #1 1 is 1.0  비교연산 is부터 판단
    #2 not False 논리연산 not 판단
    #3 결과 True
    #예시_2
    arr = [1, 3, 4]
    print((2 or 1 or 3) in arr)
    print(2 or 1 or 3) # 2 이다. or는 True가 나오면 멈추고 출력하기 때문이다.
    #0이 아닌 비어있지 않은 모든 값은 True, 빈문자, 빈객체, 0은 모두 False이다.

    実習1ベスキンロビンス31ゲーム

    import random
    num1 = random.randint(1, 32)
    while True:
        cnt = input("숫자를 말해보세요. 아무 것도 말하지 않으면 게임종료하고 파토함") or -1
        if cnt == -1:
            cnt = "얘는 하기 싫음"
            break
        elif int(cnt) < 0 or 31 < int(cnt):
            print("마셔라 마셔!")
        elif num1 < int(cnt):
            print("down")
        elif num1 > int(cnt):
            print("up")
        elif num1 == int(cnt):
            print("{0}, 성공입니다.".format(num1))
            break
        else:
            pass