if, elif, else 조건문의 기본 구조 이해for 반복문range, len, enumerate를 for와 함께 조합!조건문과 (conditions), 반복문 (loop) 이해
if, elif, else 조건문의 기본 구조 이해 if 조건식1:
<명령문a>
<명령문b>
elif 조건식2:
<명령문c>
<명령문d>
else:
<명령문e>
<명령문f>
<명령문g>
<명령문h>
<.....>
flowchart LR
A[시작] --> B{조건식 1?}
B -- True --> B1[명령문 a] --> B2[명령문 b]
B -- False --> D{조건식 2?}
D -- True --> D1[명령문 c] --> D2[명령문 d]
D -- False --> E1[명령문 e] --> E2[명령문 f]
B2 --> F[명령문 g]
D2 --> F
E2 --> F
F --> G[명령문 h]
주의
예시
# 예: 순수 알루미늄의 녹는점
melting_point = 660 #Celcius degree
temperature = 700 #Celcius degree
if temperature < melting_point:
print("Solid state")
elif temperature == melting_point:
print("Solid and liquid co-exist")
else:
print("Liquid state")
for 반복문기초 설명
기본 구조
## 주의! 실행할 명령문1, 2, ... 줄은 들여쓰기로 구분됨.
for <변수> in <반복가능객체>:
<실행할 명령문1>
<실행할 명령문2>
<...>
flowchart TD
A[시작] --> B[반복가능 객체, iterable ]
B --> C[반복가능객체 속의 다음번 element]
C --> D{아직 남은 element가 있나?}
D -- True --> E[명령문 1] --> E2[명령문 2]
E2 --> C
D -- False --> F[Exit loop]
F --> G[Continue program]
Indent & dedent를 활용해서 시작과 끝을 구분
순서가 있는 데이터 시퀀스로는 List, Tuple, Dictionary 타입의 변수가 있다.
a=[3,4,5] #list type
for e in a:
print(e)
a=[0,1,2,3,4,5,6] #list type
for e in a[::2]: ## 0, 2, 4, 6
print(e)
a=('3',[34343],5) # tuple type
for e in a:
print(e)
a=dict(a='b',b='1',d=3,z=[]) # (Python 3.7>)
for e in a:
print(e)
주의
indent, dedent 에 주의!!
콜론 기호 ‘:’ 빼먹지 말 것!
range, len, enumerate를 for와 함께 조합!len() -> 시퀀스 (List, 문자열, 튜플 등)의 길이(요소 개수)를 반환range() → 지정한 범위의 숫자 시퀀스를 생성 (반복문에서 자주 사용)range 와 len 함께 활용하여, 인덱스 기반 반복enumerate()로 인덱스와 요소 함께 활용 용이
fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)): # 0 ~ len(fruits)-1
print(f"Index {i}: {fruits[i]}")
specimen_lengths = [10.0, 12.3, 9.8, 11.5] # cm
for i in range(len(specimen_lengths)):
length = specimen_lengths[i]
print(f"Specimen {i+1}: {length} cm")
word = "steel"
for i in range(len(word)):
print(f"Index {i} → {word[i]}")
fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits):
print(i, fruit)
## algorithm
# 1. x단 입력 필요
# 2. 1곱하기부터 9 곱하기까지 '반복'; 예를 들어, y를 1부터 9까지 바꾸며 반복
# 2-1 각 '반복' 마다, x 곱하기 9 출력
예제2: 1부터 100사이의 정수합 구하기 (loop)
예제3: x! 팩토리얼 구하기
예제4: 주어진 List에서 최대값과 최소값 찾기 (조건문과 loop 활용) 가령,
a=[3,4,5,6,102,3,4,103,1,-10,3,-10]
으로 주어진 리스트 a내에서 가장 큰 값과 가장 작은 값을 for 구문을 활요해 찾아보기.
x=11. ## initial guess
x=x-(x**2-2)/(2*x)
print(x)
x=x-(x**2-2)/(2*x)
print(x)
x=x-(x**2-2)/(2*x)
print(x)
x=x-(x**2-2)/(2*x)
print(x)
for loop를 활용하면 더 근사하게 표현 가능하겠다. x=11. ## initial guess
for i in range(5):
x=x-(x**2-2)/(2*x)
print(x)
x=1. ## initial guess (0이어서는 안된다. 이유는?)
for i in range(7):
x=x-(x**2-3)/(2*x)
print(x)
x=1. ## initial guess (0이어서는 안된다. 이유는?)
for i in range(7):
x=x-(x**2-4)/(2*x)
print(x)
a=30 # a에 다른 숫자를 넣어서 반복해보자.
x=1. ## initial guess (0이어서는 안된다. 이유는?)
for i in range(7):
x=x-(x**2-a)/(2*x)
print(x,x**2-a)
# Calister 책의 표 2.1
n=3 ## 주양자수,
print('n:',n)
no_electrons=0
for l_value in range(0, n): # 0, 1, .., (n-1) 까지
print('\tl:',l_value) #주의 '\t' string은 키보드의 탭기호를 뜻한다.
low=-l_value
up=+l_value
print('\t\tml:',)
for i in range(low,up+1): # -l, -l+1, ... 1, 0, 1, ... l-1, l
print('\t\t\t',i)
no_electrons=no_electrons+2 # 각 state마다 up/down spin 전자, 따라서 2개씩.
print('total number of electrons:',no_electrons)