<jupyter_start><jupyter_text>반복문- 자료구조를 순회할 때 사용- 정해진 동작의 반복 while- 특정 조건이 만족될때까지 블록 반복 수행- for + if- 해당 조건이 언제 거짓이 되는지 알아야만 함 while vs for- for: 반복횟수를 정확히 알고, 반복횟수가 변하지 않을때- while: 반복횟수가 정확하지 않고, 특정 조건을 만족시키면 종료하고 싶을때 반복문의 제어- 의도치 않은 코드 종료를 막기 위해 되도록 사용하지 않는다    - break    - else    - continue<jupyter_code># 구구단 프로그램

print('선택지 목록')
print('=' * 20)
print('1. n단\n2. 1~n단\n3. n~m단\n4. 프로그램 종료')

while True:
    option = int(input('선택지를 골라주세요: '))
    if option == 1:
        n_mul = int(input('몇 단을 출력할까요: '))
        print(f'====={n_mul}단=====')
        for i in range(1, 10):
            print(f'{n_mul} * {i} = {n_mul * i}')

    elif option == 2:
        n_mul = int(input('몇 단까지 출력할까요: '))
        for j in range(1, n_mul+1):
            print(f'====={j}단=====')
            for k in range(1, 10):
                print(f'{j} * {k} = {j * k}')

    elif option == 3:
        start_mul = int(input('몇 단부터 출력할까요: '))
        end_mul = int(input('몇 단까지 출력할까요: '))
        for m in range(start_mul, end_mul+1):
            print(f'====={m}단=====')
            for n in range(1, 10):
                print(f'{m} * {n} = {m * n}')
                
    elif option == 4:
        print('프로그램을 종료합니다.')
        break
        
    else:
        print('선택지를 잘못 입력하였습니다. 다시 골라주세요.')
# 반복문 개인 연습
item_list = ['콜라', '사이다', '삼다수', '쥬스']
price_list = [2500, 2000, 500, 1000]
item_nvm = [1, 10, 20, 10]

while True:
    print('\n안녕하세요, 외대 자판기입니다.\n===명령어목록===\n1. 구매 2. 종료')
    cmd = int(input('무엇을 하시겠습니까: '))
    if cmd == 1:
        print('상품 목록입니다\n1.콜라 2.사이다 3.삼다수 4.쥬스')
        option = int(input('무슨 상품을 구매하시겠습니까: '))
        if option not in [1, 2, 3, 4]:
            print('유효하지 않은 명령입니다.')
            continue
        if item_nvm[option-1] == 0:
            print('해당 삼품은 품절입니다.')
            continue
        else:
            print(f'해당 상품의 가격은 {price_list[option-1]}원 입니다.')
            money = int(input('얼마를 넣으시겠습니까: '))
            if money < price_list[option-1]:
                print('돈이 모자랍니다.')
                continue
            elif money == price_list[option-1]:
                print('구매하였습니다.')
                item_nvm[option-1] -= 1
            elif money > price_list[option-1]:
                print(f'구매하였습니다. 잔돈은 {money - price_list[option-1]}원 입니다.')
                item_nvm[option-1] -= 1
    elif cmd == 2:
        print('프로그램을 종료합니다.')
        break
    else:
        print('유효하지 않은 명령입니다.')
        continue<jupyter_output>안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1.콜라 2.사이다 3.삼다수 4.쥬스
무슨 상품을 구매하시겠습니까: 1
해당 상품의 가격은 2500원 입니다.
얼마를 넣으시겠습니까: 3000
구매하였습니다. 잔돈은 500원 입니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1.콜라 2.사이다 3.삼다수 4.쥬스
무슨 상품을 구매하시겠습니까: 1
해당 삼품은 품절입니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 3
유효하지 않은 명령입니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1.콜라 2.사이다 3.삼다수 4.쥬스
무슨 상품을 구매하시겠습니까: 5
유효하지 않은 명령입니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1.콜라 2.사이다 3.삼다수 4.쥬스
무슨 상품을 구매하시겠습니까: 4
해당 상품의 가격은 1000원 입니다.
얼마를 넣으시겠습니까: 3000
구매하였습니다. 잔돈은 2000원 입니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1.콜라 2.사이다 3.삼다수 4.쥬스
무슨 상품을 구매하시겠습니까: 1
해당 삼품은 품절입니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1.콜라 2.사이다 3.삼다수 4.쥬스
무슨 상품을 구매하시겠습니까: 2
해당 상품의 가격은 2000원 입니다.
얼마를 넣으시겠습니까: 2000
구매하였습니다.

안녕하세요, 외대 자판기입니다.
===명령어목록===
1. 구매 2. 종료
무엇을 하시겠습니까: 1
상품 목록입니다
1[...]<jupyter_text>print formatting- f string    - f, F 모두 사용 가능    - f'{var}'- format    - {}.format(var)- %    - '%type' %var    * "A", "B", "C" 사용금지<jupyter_code>name = input('input your name: ')
address = input('input your address: ')

print(f'{name} lives in {address}')
print('{} lives in {}'.format(name, address))
print('%s lives in %s' % (name, address))<jupyter_output>input your name: song
input your address: seoul
song lives in seoul
song lives in seoul
song lives in seoul<jupyter_text>Corpus- 종류    - gutenberg    - brown    - inaugural- 함수    - words()    - sents()    - fields()    - raw()<jupyter_code>import nltk
from nltk.corpus import gutenberg
from nltk.corpus import brown

nltk.download('gutenberg', quiet=True)
nltk.download('brown', quiet=True)
print(gutenberg.words())
print(len(gutenberg.words(['austen-emma.txt'])))
print(gutenberg.fileids())
for file in gutenberg.fileids():
    ch_n = len(gutenberg.raw(file))
    word_n = len(gutenberg.words(file))
    sent_n = len(gutenberg.sents(file))
    
    print(f'{file} | 글자수 = {ch_n} | 단어수 = {word_n} | 문장수 = {sent_n}')
gutenberg_corpus = gutenberg.words(fileids = 'whitman-leaves.txt')
fdist = nltk.FreqDist([word.lower() for word in gutenberg_corpus])
print(fdist['tree'])
brown_corpus = nltk.corpus.brown
print(brown_corpus.categories())
humor = brown_corpus.words(categories='humor')
modals = ['can', 'could', 'may', 'might', 'will', 'would']

fdist_brown = nltk.FreqDist([word.lower() for word in humor])

for verb in modals:
    print(verb, fdist_brown[verb])<jupyter_output>can 17
could 33
may 8
might 8
will 13
would 56<jupyter_text>conditional frequency distribution- 조건이 붙은 fdist<jupyter_code>cfd = nltk.ConditionalFreqDist(
    (genre, word.lower())
    for genre in brown_corpus.categories()
    for word in brown_corpus.words(categories=genre)
)
cfd['adventure']['the']
print(cfd['adventure'].most_common(10))
cfd.tabulate(conditions = brown_corpus.categories()[:3], samples = modals)
# cfd 개인 실습/연습

cfd = nltk.ConditionalFreqDist(
    (file, word.lower())
    for file in gutenberg.fileids()
    for word in gutenberg.words(file)
)

print(cfd['austen-emma.txt']['the'])
for i in gutenberg.fileids():
    print(i, cfd[i]['the'])
cfd.tabulate(conditions = gutenberg.fileids()[:3], samples = modals)<jupyter_output>can could   may might  will would 
      austen-emma.txt   284   837   221   326   570   820 
austen-persuasion.txt   107   451    87   166   167   355 
     austen-sense.txt   218   578   175   215   363   515
{'fraction_non_alphanumeric': 0.15192629815745393, 'fraction_numerical': 0.037018425460636516, 'mean_word_length': 2.6542227662178703, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '635114', 'license': 'MIT', 'n_tokens_mistral': 3424, 'n_tokens_neox': 3936, 'n_words': 667, 'path': 'week_05.ipynb', 'repo_name': 'HUFS-Programming-2022/JongbeenSong_202001862', 'size': '5970'}