230926_스터디노트(1)

Sihyun Kim·2023년 9월 26일

49_[연습문제] 딕셔너리(01)

  • 과목별 점수를 입력 받아서 딕셔너리에 저장 후 출력
subject = ['국어', '영어', '수학', '과학', '국사']
scores = {}

for sub in subject:
    score = input(sub + ' 점수 입력: ')
    scores[sub] = score

print(scores)
  • 아이디, 비번을 이용해서 로그인하기
members = {'abc': '12345&^', 'defg': '67894#$', 'hijk': '023467%%', 'jklm': '789456^^'}

inputID = input('ID 입력: ')
inputPW = input('PW 입력: ')

if inputID in members:
    if members[inputID] == inputPW:
        print('로그인 성공!!')
    else:
        print('비밀번호를 확인하세요')
else:
    print('아이디를 확인하세요')

50_[연습문제] 딕셔너리(02)

  • 삼각형부터 십각형까지의 내각의 합과 내각을 딕셔너리에 저장
dic = {}

# n각형 내각의 합: 180 * (n - 2)

hap = 0; ang = 0

for n in range(3, 11):
    hap = 180 * (n-2)
    ang = int(hap / n)
    dic[n] = [hap, ang]

print(dic)
{3: [180, 60], 4: [360, 90], 5: [540, 108], 6: [720, 120], 
7: [900, 128], 8: [1080, 135], 9: [1260, 140], 10: [1440, 144]}

😮 딕셔너리 안에 벨류를 리스트로 저장하기!

dic = {}

for n1 in range(2,11):
    divisorList = []
    for n2 in range(1, n1+1):
        if n1 % n2 == 0:
            divisorList.append(n2)

    dic[n1] = divisorList

print(dic)

😥 divisorList = []를 정의한 위치가 for문 안이여야 한다!

51_[연습문제] 딕셔너리(03)

  • 띄어쓰기 기준으로 리스트에 저장, 딕셔너리에 인덱스와 함께 표시
aboutPython = '파이썬은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어이다.'

pyList = []; pyDic = {}

pyList = aboutPython.split()

print(pyList)

for idx, value in enumerate(pyList):
    pyDic[idx] = value

print(pyDic)

😂

  • split()을 모르고 어떻게 저장할지 한참 고민함
  • 여전히 enumerate 쓸 생각을 잘 안함
  • 비속어를 찾아서 표준어로 변경
words = {'꺼지다':'가다', '쩔다': '엄청나다','짭새': '경찰관', '꼽사리':'중간에 낀 사람', '먹튀':'먹고 도망','쪼개다': '웃다'}

strEx = '강도는 서로 쪼개다, 짭새를 보고 빠르게 따돌리며 먹튀했다'

for key in words.keys():
    if key in strEx:
        strEx = strEx.replace(key, words[key])

print(strEx)

😅 혼자 풀 때, for문+if문의 비교 순서를 거꾸로 했음..
거꾸로 하면 strEx안에 있는 글자들이 하나씩 나오게 됨

52_[연습문제] 딕셔너리(04)

mems = {}

for idx in range(5):
    mail = input('메일 입력: ')
    pw = input('비번 입력: ')

    mems[mail] = pw

for key in mems.keys():
    print(f'{key} : {mems[key]}')

🙄

  • for문으로 풀었으나, 영상은 중복값은 추가가 안되게 하면서 while문으로 푸는 방식으로 함
  • 아래 풀이 참조
mems = {}

n = 1
while n < 6:

    mail = input('메일 입력: ')
    pw = input('비번 입력: ')

    if mail in mems:
        print('중복 가입 불가')

    else: 
        mems[mail] = pw
        n += 1

for key in mems.keys():
    print(f'{key} : {mems[key]}')
  • 위에 만든 딕셔너리에서 사용자 삭제하기
while True:
    deleteMail = input('삭제 계정 입력: ')

    if deleteMail in mems:
        deletePW = input('비밀번호 입력: ')

        if deletePW == mems[deleteMail]:
            del mems[deleteMail]
            print('삭제 완료')
            break

        else: print('비밀번호 확인 필요')

    else: print('존재하지 않는 계정')

for key in mems.keys():
    print(f'{key} : {mems[key]}')

53_[연습문제] 딕셔너리(05)

  • 알맞은 자료구조를 선택해서 저장하고 불러오기
students = {'S21-0001': {'이름': '최성훈', '성구분': 'M', '전공': '디자인', '연락처': '010-1234-5678', '메일': 'hun@seoul.com', '취미': ['농구', '음악']},
'S21-0002': {'이름': '탁영우', '성구분': 'M', '전공': '체육', '연락처': '010-5678-0000', '메일': 'tak@seoul.com', '취미': ['테니스']},
'S21-0003': {'이름': '황진영', '성구분': 'M', '전공': '음악', '연락처': '010-4567-0001', '메일': 'hjy@seoul.com', '취미': ['수영', '클라이밍']}}


for key in students.keys():
    print(f'학생번호: {key}')

    std = students[key]

    for key2 in std.keys():
        print(f'{key2}: {std[key2]}')

    print('-' * 30)


userN = input('학생번호 입력: ')

if userN not in students:
    print('정보가 없습니다')

else:
    print(students[userN])
profile
문과이과예체능통합형인재

0개의 댓글