[나도코딩 파이썬기초(4)] if문, for, while 반복문, input함수를 실행시켜 사용자가 직접 입력값을 넣는 방법
if 문
weather 라는 변수를 만들어두고
if (조건) : (결과)
elif (조건) : (결과)
else : (결과)
이런 식으로 작성할 수 있다.
변수를 input 함수로 사용자가 직접 입력하는 경우
input() 함수는 항상 문자열(string)으로 값을 받는다.
이 예시의 경우 if 문 변수의 자료형이 string이라 그대로 쓸 수 있다.
if문 내의 자료형이 다른 자료형일 경우 변환해주어야 한다.
위 코드를 실행하면
input 함수에 의해 터미널에 다음과 같이 뜬다.
if 문 내에 정해진 값을 입력하니 맞게 뜬다.
input 함수에 숫자를 입력하는 경우
input함수 내에 숫자를 입력해도 문자열(string)으로 인식되기 때문에
int() 함수로 숫자로 변환해주어야한다.
대소를 비교할 때,
10 <= temp and temp < 30
이렇게 쓸 수도 있지만
0 <= temp < 10
이렇게 한 번에 쓸 수도 있다.
위 예시처럼 elif는 여러번 쓸 수 있다.
for (반복문)
print() 로 반복되는 구문을 일일이 작성하기보다
for 를 사용해 반복문을 사용할 수 있다.
반복문 내에서도 일일이 숫자를 입력하기보다 range()를 사용한다.
range( 1, 6) ... 1 이상 6 미만
list 안에 있는 변수를 하나 씩 반복하기
먼저 list를 작성해준다.
for (변수) in (list) :
print("{0}".format(변수))
list 내 변수를 하나 씩 반복해 출력한다.
왜 변수를 직접 안넣고
.format()을 사용하는지 궁금했는데
이런식으로 사용할 때 유용하겠다.
while
while도 반복문인데,
일정 조건을 만족해야 빠져나간다.
위 예시에서는 index가 1보다 크거나 같을 때까지는 문장을 반복하고
한 회당 index -= 1 로 1씩 줄여나간다.
이후 index가 0이 되면 폐기처분 되었다는 문구를 띄우고 종료한다.
무한루프
위 코드처럼 탈출조건이 없는 경우
무한루프에 빠지게되므로 주의.
while 문 내에 옳은 값을 입력할 때만 탈출할 수 있는 경우
person이라는 새로운 변수를 만들고,
while문 내에서 해당 변수를 input() 내에서 다시 선언할 수 있게 만든다.
person = input() 함수가 실행되었을 때
잘못된 값을 입력하면 while문 조건이 맞지않아
계속 반복하게 된다.
옳은 값을 입력해야 탈출할 수 있다.
반복문 내의 continue 와 break
absent, no_book 이라는 두개의 리스트를 생성하고
for stuident in range(1,11) ... 1이상 11 미만
if student in absent : ... absent 리스트에 해당하는 경우
countinue ... 다음 반복문으로 넘어간다.
elif student in no_book:
print("{0}".format(student)) ... format() 형식이 익숙치 않아서 자주 써봐야겠다.
break ... 반복문을 종료한다.
한 줄 for 문
list 안에 반복문을 넣어서
list를 새롭게 변경할 수도 있음.
student = [ i + 100 for i in students]
... 리스트 안에 있는 변수 i 에 100씩 더해서 만든다.
이번에는 string 자료형의 글자 수를 변환한다.
students = [ len(i) for i in students ]
띄어쓰기까지 글자수에 포함되는 점 참고
이런식으로 대문자 변환 등 다양한 함수를 사용할 수 있다.
퀴즈
내가 만든 코드
from random import random, randrange
count = 0 # 탑승승객
for customer in range(1,51) :
minute = randrange(5,51) # 승객 별 운행소요시간
if minute < 16:
print("[0]")
count += 1
else:
print("[ ]")
print("{0}번째 손님 (소요시간 : {0}분".format(customer,minute))
print("총 탑승승객 : {0}분".format(count))
2 트!!
from cgi import print_directory
from itertools import count
from random import randint
# 이부분은 자동으로 입력됨. (extention 깔아서 그런듯?)
# customer = 1
# minute = randint(5,11) # 이건 또 랜덤으로 잘 나오는데,,,
# print(minute)
# while customer <= 50:
# minute = randint(5,50)
# print("{0}번째 손님 (소요시간 : {0}분)".format(customer,minute))
# customer += 1
# => 위 부분에서 잘못한 점...
# {0} {1} 이게 순서인데 이걸 모르고 그냥 다 0으로 써버리니 customer 값만 두번 출력됨.
customer = 1
countcustomer = 0
while customer <= 50:
minute = randint(5,50)
if minute <= 15:
drive = "[O]"
countcustomer += 1
else :
drive = "[ ]"
print("{0} {1}번째 손님 (소요시간 : {2}분)".format(drive,customer,minute))
customer += 1
print("총 탑승승객 = {0}분".format(countcustomer))
아래와 같이 잘 출력된다.
영상 정답
영상에서는 for 문으로 처리하였다.