파이썬으로 회원가입 프로그램을 만들어보자.

print('==============================')
print('회원가입')
print('==============================')

register = False

while not register:
    print('회원가입을 진행하시겠습니까?\n y:진행     N:취소')
    register_input = input('>> ')
    register_input = register_input.lower()

    if register_input == 'y':
        register = True
        print('==============================')
        print('회원가입이 진행됩니다.')
        print('==============================')
    elif register_input == 'n':
        print('==============================')
        print('회원가입이 취소됩니다.')
        print('==============================')
        exit()
    else:
        print('입력 값을 확인해주세요.')

users = [] # 회원정보 저장

while True:

    user = {} # 회원 하나하나의 정보

    username = input('ID: ')
    while True:
        password = input('PW: ')
        password_confirm = input('PW 확인: ')
        if password == password_confirm:
            break
        else:
            print('비밀번호가 일치하지 않습니다.')
    name = input('이름: ')
    while True:
        birth_date = input('생년월일(6자리): ')
        if len(birth_date) == 6:
            break
        else:
            print('생년월일 입력값이 올바르지 않습니다.')
    email = input('이메일: ')

    # user 딕셔너리에 추가
    user['username'] = username
    user['password'] = password
    user['name'] = name
    user['birth_date'] = birth_date
    user['email'] = email
    
    users.append(user) # users 리스트에 추가
    print(users)

    print("------------------------------")
    print(f"{user['name']} 님 가입을 환영합니다!")
    print("------------------------------")

    print('회원가입을 추가로 진행하시겠습니까?\n y:진행     N:취소')
    register_another_input = input('>> ')
    register_another_input = register_another_input.lower()

    if register_another_input == 'y':
        pass
    elif register_another_input == 'n':
        exit()

위에 입력한 회원가입 정보는 실제로 저장되지 않는다.

실제로 회원가입이 저장되기를 원한다면 데이터베이스와 연동하여 프로그램을 짜야한다.

'Back-End > Python' 카테고리의 다른 글

예외 처리와 파일 다루기  (0) 2023.08.10
객체지향  (0) 2023.08.09
함수  (0) 2023.08.07
자료구조 - 리스트 / 튜플 / 딕셔너리  (0) 2023.07.27
조건문과 반복문  (0) 2023.07.20
함수(Functions)

함수는 def를 통해 선언한다. 함수의 이름은 변수와 마찬가지로 규칙에 따라 정해야한다.

값을 받아 함수를 처리하려면 파라미터가 있어야한다. 파라미터는 괄호( )에 들어가는 변수이다.

def print_name(name):     # 'name' => 매개변수(파라미터)
    print(f'이름은 {name}입니다')

print_name("김토끼")
print_name("이토끼")     # "김토끼", "이토끼", "박토끼" => 인자(인수)
print_name("박토끼")

파라미터는 함수를 정의하는 부분에 쓰인 변수, 인자는 함수를 실행할 때 넘겨지는 값이라고 보면 된다.

 

함수를 정의할 때 파라미터를 반드시 사용하지 않아도 된다.

def print_ex_string():
    print('예시 문자열입니다.')

print_ex_string()

 

파라미터를 두 개 이상 사용해도 된다.

def print_name_age(name, age):
    print(f'이름은 {name}이고 {age}살 입니다.')

print_name_age("김토끼", "3")

 

파라미터에 기본값을 설정하면 인자를 주지 않아도 오류가 발생하지 않는다.

def order_coffee(qty, option = 'hot'):
    print(f'{qty}잔 / {option}')

order_coffee(3, 'iced')
order_coffee(3)

주의할 점은 기본값이 있는 파라미터는 기본값이 없는 파라미터의 뒤에 와야한다.

 

파라미터를 직접 가져와 입력하면 순서에 상관없이 입력할 수 있다.

def order_coffee(qty, option = 'hot'):
    print(f'{qty}잔 / {option}')

order_coffee(option ='iced', qty = 5)

 

return은 값을 반환시켜 다른 곳에 사용할 수 있도록 해준다.

def get_id(email):

    email_id = email.removesuffix('@test.com')
    print(email_id)

    return email_id

user_id = get_id('user@test.com')
print(user_id)

 

return이 없으면 user_id는 값이 없는 변수가 된다.

def get_id(email):

    email_id = email.removesuffix('@test.com')
    print(email_id)

    # return email_id

user_id = get_id('user@test.com')
print(user_id)

 

if 문을 활용한 함수

def get_id(email):

    if email.endswith('@test.com'):
        email_id = email.removesuffix('@test.com')
        print(email_id)
        return email_id
    else:
        print('처리할 수 없는 이메일 주소입니다.')

user_id = get_id('user@example.com')
print(user_id)

 

 

모듈

연관이 있는 함수들의 집합

모듈로 함수를 관리하게 되면 하나의 라이브러리처럼 만들어서 다양한 프로그램에 공통적으로 활용할 수 있다.

 

먼저 모듈로 사용할 파일을 만든다.

def get_id(email):

    if email.endswith('@test.com'):
        email_id = email.removesuffix('@test.com')
        print(email_id)
        return email_id
    else:
        print('처리할 수 없는 이메일 주소입니다.')

함수를 넣어준 뒤, 저장한다.

 

새로운 파일에서 모듈에 있는 함수를 불러와 활용할 수 있다.

from id_getter import get_id

user_id = get_id('user@test.com')
print(user_id)

from은 모듈의 파일명이고 import는 모듈에서 불러올 함수의 이름이다.

 

 

'Back-End > Python' 카테고리의 다른 글

객체지향  (0) 2023.08.09
회원가입 프로그램 실습 - 파이썬(Python) 편  (0) 2023.08.08
자료구조 - 리스트 / 튜플 / 딕셔너리  (0) 2023.07.27
조건문과 반복문  (0) 2023.07.20
변수와 자료형  (0) 2023.07.19

>>본문<<

 

오늘의 단어

establish / reinforce / conclude / persist / assume

 

 

establish

1. 설립[설정]하다
2. (특히 공식적인 관계를) 수립하다
3. (~로서의 지위·명성을) 확고히 하다

 

예문

These methods of working were established in the last century.

이러한 작업 방식은 지난 세기에 설립되었다.

 

Male hunting and female gathering established sex-based labor, perhaps more than 1 million years ago, or so the story went.

남성의 사냥과 여성의 채집은 성을 기반으로 한 노동으로 수립되었고, 이는 아마 100만년 전의 이야기라고 한다.

 

 

reinforce

1. (감정·생각 등을) 강화하다
2. (구조 등을) 보강하다
3. (군대·구성원·장비 등을) 증강[증원]하다

 

예문

An influential 1966 symposium at the University of Chicago reinforced this idea.

1966년 시카고 대학에서 열린 영향력 있는 심포지엄은 이 생각을 강화시켰다.

 

The pockets on my jeans are reinforced with double stitching.

내 청바지의 주머니는 이중 스티치로 보강되어있다.

 

 

conclude

1. 결론[판단]을 내리다
2. 격식 끝나다; 끝내다, 마치다
3. (협정·조약을) 맺다[체결하다]

 

예문

Many participants concluded that male hunters supplied the meat critical to survival—and human evolution.

많은 참가자들은 남성 사냥꾼들이 생존과 인간의 진화에 중요한 영향을 끼치는 고기 공급을 했다고 판단했다.

 

She concluded the speech by reminding us of our responsibility.

그녀는 우리에게 책임을 상기시키며 연설을 마쳤다.

 

Everyone was intent on concluding the agreement.

모두가 그 계약을 맺는데 전념하고 있다.

 

 

persist

1. 집요하게[고집스럽게/끈질기게] 계속하다
2. (없어지지 않고) 계속[지속]되다

 

예문

If he persists in asking awkward questions, then send him to the boss.

그가 곤란한 질문을 집요하게 한다면 그를 상사에게 보내십시오.

 

Nevertheless, the myth of roving, hunting men and baby-tethered gatherers persisted in the popular imagination, thanks in part to museum dioramas and media.

그럼에도 불구하고 방랑하며 사냥하는 남성과 아기를 매달고 채집자들의 설화는 박물관 전시와 미디어의 영향으로 대중의 상상 속에서 지속되었다.

 

 

assume

1. (사실일 것으로) 추정[상정]하다
2. (권력·책임을) 맡다
3. (특질·양상을) 띠다[취하다]

 

예문

For instance, archaeologists routinely assume that skeletons found with weapons were men—even as genetic analyses have proved some cases to be women.

예를 들어, 인류학자들은 유전자 분석을 통해 여성이라는 것을 밝혔지만 해골이 무기와 함께 발견되었기 때문에 일상적으로 남성이라 추정한다.

 

The new president assumes office in January.

새 대통령은 1월에 취임한다.

 

He assumed a look of indifference but I knew how he felt.

그는 무관심해보였지만 나는 그의 기분을 알았다.

 

 

리스트(lists)

리스트의 정의 및 선언

mbti = ['INFP', 'ENFP', 'ISTJ', 'ESTP']
print(mbti)
print(mbti[0])

 

파이썬에서 리스트는 타입을 통일하지 않아도 된다.

my_list = [123, 'apple']
print(my_list)

그러나 for 문이나 while 문 등에서 혼란을 야기할 수 있기 때문에 되도록 통일해주는 것이 좋다.

 

리스트 데이터 접근 및 조작

제거하는 함수의 종류는 비교적 많은 편이다.

colors = ['red', 'blue', 'green']

# 수정
colors[2] = 'black'
print(colors)

# 추가
colors.append('purple')
print(colors)

# 추가 2
colors.insert(1, 'yellow')
print(colors)

# 제거 1
del colors[0]
print(colors)

# 제거 2
color = colors.pop(0) # 인덱스 값을 넣지 않으면 끝부터 삭제
print(colors)
print(color)

# 제거 3
colors.remove('blue')
print(colors)

del 함수는 제거와 동시에 더이상 그 값을 사용할 수 없지만 pop() 함수는 제거한 값을 반환하여 다시 사용할 수 있다.

 

리스트 정렬

sort() 함수는 리스트를 오름차순으로 반환하며 reverse = True를 넣으면 내림차순으로 반환한다.

colors = ['blue', 'red', 'gray', 'black', 'yellow', 'orange']

# 정렬 1
colors.sort()
print(colors)

colors.sort(reverse = True)
print(colors)

# 정렬
print(sorted(colors))

 sort() 함수는 리스트를 오름차/내림차순으로 반환하지만 sorted() 함수는 리스트 자체를 정렬시킨다.

 

len() 함수는 리스트의 값의 개수를 반환한다.

print(len(colors))

 

인덱스 번호를 -1로 하면 리스트의 마지막 값을 반환한다.

print(colors[-1])

값이 존재하지 않는 인덱스 번호를 넣지 않도록 주의한다.

 

리스트 슬라이싱 및 복사

원하는 범위만큼 리스트의 범위를 취할 수 있는 방법

colors = ['blue', 'red', 'gray', 'black', 'yellow', 'orange']

print(colors[1:5])
print(colors[:4])
print(colors[2:])
print(colors[-5:])

 

새로운 리스트에 기존의 리스트를 반환 받아 사용할 수 있다.

colors = ['blue', 'red', 'gray', 'black', 'yellow', 'orange']
# colors_2 = colors
colors_2 = colors[:]

colors_2.pop()

print(colors)
print(colors_2)

기존 리스트가 변형될 수 있기 때문에 변수를 직접 가져와서 쓰지 않는 것이 좋다.

 

리스트와 흐름 제어

조건문과 반복문을 통한 리스트의 활용

scores = [88, 100, 96, 43, 65, 78]
scores.sort(reverse=True)

for score in scores:
    if score >= 80:
        print(score)
    else:
        print("Fail")

 

리스트 최댓값/최솟값/총합/평균

scores = [88, 100, 96, 43, 65, 78]

max_val = max(scores) # 최댓값
min_val = min(scores) # 최솟값
sum_val = sum(scores) # 총합
avg_val = sum(scores) / len(scores) # 평균

 

 

튜플(tuples)

튜플의 정의 및 특징

튜플은 전체를 새로 할당할 수는 있지만 요소의 값을 변경할 수 없다.

tup = (1, 20, 40)
print(tup[0])

#tup[0] = 100
tup = (100, 30, 4)
print(tup)

 

튜플/리스트 변환

tup = (1, 20, 40)

# 리스트 변환 1
list_1 = list(tup)
print(list_1)

# 리스트 변환 2
list_2 = [x for x in tup]
print(list_2)

# 리스트 변환 3
list_3 = []

for x in tup:
    list_3.append(x)
    
print(list_3)

 

 

딕셔너리

딕셔너리 정의 및 선언

딕셔너리는 키-값이 한 쌍이다.

student = {
    "student_no" : "202301234",
    "major" : "English",
    "grade" : 1
}

print(student["student_no"])

 

또한 키 값을 재할당 할 수 있다.

student = {
    "student_no" : "202301234",
    "major" : "English",
    "grade" : 1
}

student["student_no"] = "202301235"

print(student)
print(student["student_no"])

 

딕셔너리 데이터 조작

student = {
    "student_no" : "202301234",
    "major" : "English",
    "grade" : 1
}

# 추가
student["gpa"] = 4.5
print(student)

# 수정
student["gpa"] = 4.3
print(student)

# 삭제
del student["grade"]
print(student)

 

딕셔너리 함수

student = {
    "student_no" : "202301234",
    "major" : "English",
    "grade" : 1
}

# 데이터 접근
print(student.get("major"))
print(student.get("gpa", "해당 키-값 쌍이 없습니다."))

# 딕셔너리의 키를 반환
print(student.keys())

# 딕셔너리의 값을 반환
print(student.values())

키-값을 반환하는 함수를 리스트로 형변환하여 사용할 수 있다.

student = {
    "student_no" : "202301234",
    "major" : "English",
    "grade" : 1
}

print(list(student.keys()))
print(list(student.values()))

 

딕셔너리와 반복문

tech = {
    "HTML" : "Abvanced",
    "JavaScript" : "Intermediate",
    "Python" : "Expert",
    "Go" : "Novice"
}

for key in tech.keys():
    print(key)

for value in tech.values():
    print(value)

for key, value in tech.items():
    print(f'{key} - {value}')

 

중첩

# 중첩(Nesting)

student_1 = {
    "student_no" : "1",
    "gpa" : "4.3"
}

student_2 = {
    "student_no" : "2",
    "gpa" : "3.8"
}

students = [student_1, student_2]

for student in students:
    print(student['student_no']) # 공통되는 값

for student in students:
    student['graduated'] = False
    print(student) # 졸업여부 추가

 

하나의 키에 리스트로 여러 개의 값을 할당할 수 있다.

student = {
    "subjects" : ["회계원리", "중국어회화"]
}

print(student["subjects"])

subjects_list = student["subjects"]

for subject in subjects_list:
    print(subject)

 

딕셔너리 또한 값을 할당할 수 있다.

student = {
    "scholarship" : {
        "name" : "국가장학금",
        "amount" : "1000000"
    }
}

print(student)

for key in student.keys():
    print(key)

for value in student.values():
    for value_2 in value.values():
        print(value_2)

 

 

'Back-End > Python' 카테고리의 다른 글

회원가입 프로그램 실습 - 파이썬(Python) 편  (0) 2023.08.08
함수  (0) 2023.08.07
조건문과 반복문  (0) 2023.07.20
변수와 자료형  (0) 2023.07.19
파이썬 for Beginner 3판 14장 연습문제 답(더보기 클릭)  (0) 2023.07.13

+ Recent posts