[210616 TIL] Python

Choi Rim·2021년 6월 16일
0

Python

목록 보기
3/20
post-thumbnail

조건문

input

input('아이디를 입력하세요 : ')

아이디를 입력하세요 :

  • input 명령은 사용자가 입력하고 엔터를 친 값이 input 값으로 표현됨.
id = input('아이디를 입력하세요 : ')
print(id)

아이디를 입력하세요 : rimi0108
rimi0108

  • 사용자가 입력한 값이 변수 id에 입력되고 id를 출력하면 사용자가 입력한 값이 출력된다.

if

id = input('아이디를 입력하세요 : ')
if id == 'rimi0108' :
    print(id + '님 환영합니다.')

아이디를 입력하세요 : rimi0108
rimi0108님 환영합니다.

  • 사용자가 입력한 값이 조건과 일치하면 조건문이 출력됨.

들여쓰기

  • tab키는 스페이스 네 번
  • 파이썬은 서로 같은 블럭에 속하는 코드를 같은 들여쓰기로 구분함.

else

id = input('아이디를 입력하세요 : ')
if id == 'rimi0108' :
    print(id + '님 환영합니다')
else :
    print('아이디가 존재하지 않습니다.')

아이디를 입력하세요 : hyerim1234
아이디가 존재하지 않습니다.

  • else를 사용해 조건과 일치하지 않을 때 출력할 프린트문을 지정할 수 있음.

elif

user_id = 'hye1111'
user_passwd = 'rim2222'

id = input('아이디를 입력하세요 : ')
passwd = input('비밀번호를 입력하세요 : ')

if id == user_id and passwd == user_passwd:
    print(id + '님 환영합니다.')
elif id != user_id and passwd == user_passwd:
    print('아이디가 일치하지 않습니다.')
elif id == user_id and passwd != user_passwd:
    print('비밀번호가 일치하지 않습니다.')
elif id != user_id and passwd != user_passwd:
    print('아이디와 비밀번호가 일치하지 않습니다.')
  • elif를 사용해서 if문과 다른 조건도 지정할 수 있음.
  • and는 오른쪽과 왼쪽 조건이 모두 일치할 때 True를 반환함

논리 연산자

and

True and True
True and False
False and False

True
False
False

  • 첫 번째 False를 반환한다.
  • 양 쪽이 모두 True여야 True를 반환한다.

or

True or True
False or True
False of False

True
True
False

  • 첫 번째 True를 반환한다.
  • 양 쪽 중 하나만 True면 True를 반환한다.

not

not True
not False

False
True

  • 결과를 반대로 반환한다.

데이터타입

4. 리스트 (list)

a = [1, 2, 3, 4, 5, 6]
print(a)

print(a[0])

print(len(a))

a[1] = 4
print (a)

del a[1]
print(a)

a.append('a')
print(a)

[1, 2, 3, 4, 5, 6]
1
6
[1, 4, 3, 4, 5, 6]
[1, 3, 4, 5, 6]

  • 대괄호([])안의 숫자들을 인덱스라고 부른다.
  • 인덱스는 각 각의 값들을 식별하는 식별자이다.
  • 인덱스는 0부터 시작한다.
  • 리스트의 각 각의 값들은 요소(element)라고 부른다.
  • len(리스트)를 이용해 해당 리스트에 몇 개의 값이 있는지 알 수 있다.
  • 인덱스에 값을 할당하면 해당 인덱스의 값이 변한다.
  • del 리스트[인덱스]를 이용하면 해당 리스트의 해당 값이 삭제된다.
  • 리스트.append('요소')를 이용하면 리스트에 원하는 요소를 추가할 수 있다.

시퀀스 자료형 (sequence types)

시퀀스 자료형이란

시퀀스 자료형이란 각 요소들이 마치 한 영화의 이어지는 에피소드처럼 연속적으로 이루어진 자료형이다.

시퀀스 자료형의 종류

a = [1, 2, 3, 4, 5] # 리스트(list)
b = (1, 2, 3, 4, 5) # 튜플(tuple)
c = range(10) # 레인지(range)
d = 'Python' # 문자열(string)

시퀀스 자료형의 특징

  1. 크기를 len으로 알 수 있다.
print(len(a))

5

  1. 인덱싱(indexing)을 이용해 값에 접근할 수 있다.
print(b[2])

3

  1. 슬라이싱(slicing)을 이용해 요소를 자를 수 있다.
print(b[1:4])
print(b[2:5:2])

(2, 3, 4)
(3, 5)

  • 변수명[시작인덱스:종료인덱스:증가폭]를 입력하면 변수의 시작인덱스에 위치해 있는 값부터 종료인덱스의 바로 전 값까지 출력된다.
  1. 각각의 시퀀스 객체들은 더하기(+)를 이용해 연결할 수 있습니다.
a = [1, 2, 3, 4, 5]
b = [10, 20, 30, 40, 50]
print(a + b)

[1, 2, 3, 4, 5, 10, 20, 30, 40, 50]

  1. * 연산자를 사용해 시퀀스 객체를 원하는 숫자만큼 반복할 수 있습니다.
a = [1, 2, 3, 4, 5]
print(a * 2)

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

5. 딕셔너리 (dictionary)

person = {'name':'choihyerim' 'age': 23}
person['name']
person[age]

choihyerim
23

반복문

for

for value in ['a', 'b', 'c', 'd']:
    print(value)

a
b
c
d

  • 리스트의 값이 하나씩 꺼내어져 value로 출력된다.

range

for i in range(10):
    print(i)

0
1
2
3
4
5
6
7
8
9

  • range는 0부터 숫자 바로 앞까지 출력한다.

조건에 반응하는 앱 만들기

form = cgi.FieldStorage()
if 'id' in form:
    pageId = form["id"].value
else:
    pageId = 'Welcome'
  • id값이 있다면 pageId가 id값으로 바뀌고 아니라면 Welcome이 출력되게 하였다.
  • id값이 없는 홈에서는 Welcome이 출력된다.
    신기하다! 멋있다!

파일제어와 본문기능 구현

if 'id' in form:
    pageId = form["id"].value
    open('data/'+pageId, 'r').read()
else:
    pageId = 'Welcome'
    description = 'Hello web'
  • pageId가 없을때에는 Hello web이라는 본문이 출력되게 하고 pageId가 존재한다면 open('data/'+pageId, 'r')을 이용해 pageId가 바뀔때마다 data/HTML, data/CSS, data/JavaScript 라는 파일을 읽어오게 한다. (data 디렉토리에 있는 파일명은 pageId명과 같기 때문에 pageId가 변경됨에 따라 파일이 읽어잔다.)
  • open("새파일.txt", 'w')
    파일을 쓰기 모드로 읽어오기
  • open("새파일.txt", 'r')
    파일을 읽기 모드로 읽어보기
  • f.read()는 파일의 내용 전체를 문자열로 돌려준다.
  • 밑의 HTML문서에는 format을 이용하여 변수 description를 본문내용에 넣어준다.
    신기하다!!

반복문을 이용해 글목록 구현

import cgi, os

files = os.listdir('data')
print(files)
listStr = ''
for item in files:
    listStr = listStr + item
print(listStr)

['JavaScript', 'HTML', 'CSS']JavaScriptHTMLCSS

  • os 라고하는 명령어들이 모여있는 모듈을 쓴다고 선언
  • os.listdir('디렉토리')
    디렉토리 data에 있는 파일 목록이 리스트 형식으로 저장됨
  • 비어있는 문자열 listStr에 item에 있는 리스트를 더해 출력한다.
files = os.listdir('data')
listStr = ''
for item in files:
    listStr = listStr + '<li><a href="index.py?id={name}">{name}</a></li>'.format(name=item)
print(listStr)
  • JavaScript
  • HTML
  • CSS
    • listStr에 들어갈 리스트로 만들고 format을 이용해 반복문을 통해 출력된 item의 리스트 값들이 차례대로 <li><a></a></li> 로 출력되게 만든다.
      우와!

    <참고>

    profile
    https://rimi0108.github.io/

    0개의 댓글