[파이썬 기초 문법] 3장. 입력 및 반복문
18 Jun 2019
Reading time ~2 minutes
이 포스트는 윤성우님의 저서 열혈 파이썬 기초편을 기반으로 작성한 글입니다.
윤성우 열혈 파이썬 기초편
3장.입력 및 반복
1.입력을 위한 input 함수
>>> str = input("How old are you: ")
How old are you: 12 years old
>>> print(str)
12 years old
2.input함수의 특징
>>>n1 = input("n1:")
n1:123
>>>n2 = input("n2:")
n2:567
>>>n3 = n1 + n2
>>>print(n3)
123567
input 결과가 숫자가 아닌 문자열로 반환되어 690이 아닌 문자열이 결합된 출력 확인
3.input 결과를 숫자로 바꿔주는 eval 함수
>>> rad = eval(input("radius: "))
radius: 2.5
>>> area = rad * rad * 3.14
>>> print(area)
19.625
>>> result = eval(input("Input Anything: "))
Input Anything: 2 - 4 * 5 + 3
>>> print(result)
-15
4.어떠한 것이든 변환해주지만 해킹의 위험성이 존재하는 eval함수
아래 함수는 사용자에게 수학 표현식을 문자열로 받고, 계산 결과값을 출력해주는 간단한 함수이다.
하지만 이때 사용자가 아래와 같이 입력을 하면 어떻게 될까.
x = str(input(">> input some text for mathematical expression : ")
print eval(x)
'''
>> input some text for mathematical expression: __import__('os').system('ls /')
Applications Volumes home tmp
Developer bin installer.failurerequests usr
Library cores macOS Install Data var
Network data net
System dev private
Users etc sbin
'''
서버의 root 디렉토리의 정보가 그대로 노출되었다.
출처: https://bluese05.tistory.com/64 [ㅍㅍㅋㄷ]
5.반복문
for 변수명 in [반복 범위]:(콜론)으로 선언 후 들여쓰기 유지하고 마지막에 엔터키
>>> sum = 0
>>> for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + i
>>> print(sum)
55
6.반복문과 range함수
>>> sum = 0
>>> for i in range(1, 11):
sum = sum + i
>>> print(sum)
55
1부터 10(11-1)까지의 합 55 출력
7.반복문의 인자를 생략 가능한 경우
>>> for i in range(0, 3): # 3회 반복이 목적
print("Happy")
Happy
Happy
Happy
>>> for i in range(3): # 첫 번째 0 생략 가능
print("Happy")
Happy
Happy
Happy
>>> for in range(3): # 변수명 i도 생략가능
print("Happy")
Happy
Happy
Happy