Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

03. [자료형] Python 튜플, 리스트(+함수), 사전, 문자열 본문

Python/Python 기초

03. [자료형] Python 튜플, 리스트(+함수), 사전, 문자열

끈기JK 2022. 8. 6. 20:53
튜플
# 생성 방법
변수명 = (value1, value2, ...)
변수명 = tuple([value1, value2, ...])  # 리스트에서 튜플로

tup = (1, 2, 3, 4, 2)  # 왼쪽과 같을 때
tup.count(2)  # 2 라는 값이 몇개인가
tup.index(2)  # 2 라는 값의 인덱스는 무엇인가
tup.index(2, 3)  # 2라는 값에 대해 3번 인덱스부터 찾아라

 

리스트
# 생성 방법
변수명 = [value1, value2, ...]
변수명 = list((value1, value2, ...))  # 튜플에서 리스트로

 

리스트 함수
append(value)  # 리스트 끝에 값 추가
extend(iter)  # 리스트 끝에 list, tuple, dict의 값 하나씩 추가
insert(idx, value)  # 특정 인덱스 위치에 값 추가
pop([idx])  # 마지막 인덱스 값 반환 후 삭제. 인덱스 번호 지정도 가능
remove(value)  # 특정 값 삭제
clear()  # 모든 값 삭제 후 빈 리스트 남김
count(value)  # 리스트에서 일치하는 값의 수 반환
index(value)  # 일치 값 인덱스 번호 반환
index(1, 2)  # 1 값을 2번 인덱스부터 찾아라
reverse()  # 리스트의 모든 값 뒤집어 나열
sort([reverse=False])  # 리스트 값 오름차순(False), 내림차순(True) 정렬

 

사전
# 생성 방법
변수명 = {key1:value1, key2:value2, ...}
변수명 = dict([(k1, v1), (k2, v2), ...])

# 사전 함수
update(dict)  # 자료 추가
fromkeys(iter[, value])  # 리스트 튜플에 존재하는 값을 키로 사전형 자료를 생성하여 반환
get(key[, value])  # 사전형의 키를 통해 값 반환
get(key, '문구')  # 해당 키가 없으면 문구 반환
keys()  # 사전형의 모든 키 반환
values()  # 사전형의 모든 값 반환
items()  # 사전형의 모든 키-값 쌍 튜플로 반환
pop(key)  # 키를 통해 값 반환 후 삭제
popitem()  # 키-값 쌍 튜플로 반환 후 삭제
clear()  # 모든 키-값 삭제하여 빈 사전형 남김

 

문자열

문자열 하나하나에 인덱싱, 슬라이싱, 반복문 가능

find(str)  # 특정 문자열 찾아 index 값 반환
count(str)  # 특정 문자열 찾아 해당 문자열 수 반환
lower()  # 소문자로 반환
upper()  # 대문자로 반환
stip()  # 앞뒤 공백 제거
lstrip()  # 왼쪽 공백 제거
rstrip()  # 오른쪽 공백 제거
replace(old, new)  # 특정 문자열 변경
split(str)  # 특정 문자열 기준으로 분리하여 리스트로 반환

 

문제1.

다음 조건을 보고 회원가입을 위한 프로그램 코드를 작성하시오

- 아이디는 반드시 10자리 이상

- 패스워드는 반드시 8~16자리 사이

- 패스워드에 아이디가 포함되면 안됨

- 패스워드에는 다음의 특수문자가 반드시 하나 이상 포함(~,!,@,#,$,%,^,&,*,_,?)

while True:
    Id = input('아이디 입력(10자리 이상): ')
    if len(Id) < 10:  # 아이디 10자리 이상인지 확인
        print('\n*****아이디는 10자리 이상이어야 합니다.*****')
    else:
        break

PwMustChr = '~!@#$%^&*_?'
while True:
    Pw = input('[아이디 포함 불가]\n[다음 특수문자 하나 이상 포함(~,!,@,#,$,%,^,&,*,_,?)]\n위 조건 확인하여 패스워드 입력(8~16자리): ')
    if 8 <= len(Pw) <= 16:  # 패스워드 8~16자리인지 확인
        if Id not in Pw:  # 패스워드 아이디 포함 불가 확인
            for x in PwMustChr:  # 패스워드 특수문자 하나 이상 포함 확인
                if x in Pw:  
                    print('\n회원가입 완료 되었습니다.')
                    print('아이디 : {}'.format(Id))
                    print('패스워드 : {}'.format(Pw))
                    break
                else: 
                    print('\n*****(~,!,@,#,$,%,^,&,*,_,?) 해당 특수문자 반드시 하나 이상 포함해야 합니다.*****')
                    break
        else:
            print('\n*****패스워드에 아이디를 포함할 수 없습니다.*****')
    else:
        print('\n*****패스워드는 8~16자리로 입력해 주십시오.*****')
    break

처음에는 while로 검사하고 빠져나오면 다음 조건 while로 검사하도록 짰는데 강사님 강의 보고 if로 조건 맞으면 다음 조건 검사하는게 더 간결하고 직관적인거 같아서 수정하였다.