티스토리 뷰

INTRO

Code Block은 제어문/반복문이나 함수에서 콜론(:)을 기준으로 들여쓰기된 덩어리 모양

제어문은 case-by-case를 구성하고 반복문은 중복 제거와 단순화의 목적을 가짐

Target/Model에 따라 coding 방식은 개발자의 특성에 따라 다르지만 제어흐름은 2가지로 구분함

1. 조건문 : if-else, if-elif-else

2. 반복문 : for / while

 

 

1. if-else, if-elif-else

swich, case를 다루는 언어도 있으나 python은 if-elif-else로 커버

 

다음은 회원가입 sequence를 단순하게 구현했을 때 if-else와 if-elif-else 사용 방법이다.

mebers 객체는 dic의 user1,user2로 구성

input()를 이용하여 user1 or user2를 넣으면 message1을 print한다.

user3 or 다른 아이디를 넣으면 다음 if문으로 넘어가 4글자 암호를 입력하도록 제어흐름이 구성되었다.

 

python code : test7.py

#### if-else
members = {'user1':('id1','pass1','name1'),'user2':('id2','pass2','name2')}
message1 = 'You are member'
message2 = '**Please input password : 4-letters**\n'
message3 = 'Please 4-letters'
message4 = 'Good-bye'


user = input('input your ID : \n')
if user in members:
	print(message1)
	yno = True
else:
	print(' You are not member.\n Use \'{}\' ID?'.format(user))
	yno = input("Input 'yes' or 'no' : \n")


if yno == 'yes':
	pwrd = input(message2)
	if len(pwrd) == 4:
		print('\nThanks for sign up!')
		print("Your ID : '{}'".format(user))
	else:
		print(message3)
		print('Please retry sing-up, Bye~~\n')
elif yno == 'no':
	print(message4)
else:
	print("Welcome!! '{}'\n".format(user))

 

---- SublimeText python Run test7.py ----

case1) user2 입력 시 결과

input your ID : 
user2
You are member
Welcome!! 'user2'


***Repl Closed***

 

case2) user3 입력 후 회원가입 진행

members 객체에 할당되어있지 않기 때문에 가입여부를 묻고 yes를 입력하고 4글자의 암호를 지정했을 때 결과

input your ID : 
user3
 You are not member.
 Use 'user3' ID?
Input 'yes' or 'no' : 
yes
**Please input password**
ttca

Thanks for sign up!
Your ID : 'user3'

***Repl Closed***

 

case3) user3 입력 후 회원가입 진행 이후 암호 갯수가 틀렸을 때

members 객체에 할당되어있지 않기 때문에 가입여부를 묻고 yes를 입력하고 3글자의 암호를 지정했을 때 결과

input your ID : 
user3
 You are not member.
 Use 'user3' ID?
Input 'yes' or 'no' : 
yes
**Please input password : 4-letters**
kkd
Please 4-letters
Please retry sing-up, Bye~~


***Repl Closed***

 

case4) user3 입력 후 회원가입 미진행

members 객체에 할당되어있지 않기 때문에 가입여부를 묻고 no를 입력하면 Good-bye message를 print

input your ID : 
user3
 You are not member.
 Use 'user3' ID?
Input 'yes' or 'no' : 
no
Good-bye

***Repl Closed***

 

 

 

2. for / while

일반적으로 for문을 주로 사용하기에 while문 보다 for문에 집중

while문은 code block의 body loop에서 실시간 데이터수집이나 실행 횟수/환경을 알고 있을 때 유용

 

python code, if-elif-else + while 조건/반복문 복합 : test8.py

#### if-else
members = {'user1':('id1','pass1','name1'),'user2':('id2','pass2','name2')}
message1 = 'You are already the our member'
message2 = '**Please input password : 4-letters**\n'
message3 = 'Please 4-letters'
message4 = 'Good-bye'


user = input('input your ID : \n')
if user in members:
	print(message1)
	yno = True
else:
	print(' You are not the our member.\n Use \'{}\' ID?'.format(user))
	yno = input("Input 'yes' or 'no' : \n")


if yno == 'yes':
	pwrd = input(message2)
	count = 0
	while count < 4:
		if len(pwrd) == 4:
			print('\nThanks for sign up!')
			print("Your ID : '{}'".format(user))
			break
		else:
			count += 1
			print(message3)
			print('Fail count = {}'.format(count))
			if count == 4:
				print('Please Retry sign-up, bye~')
				break
			else:
				pwrd = input(message2)
				
elif yno == 'no':
	print(message4)
else:
	print("Welcome!! '{}'\n".format(user))

 

---- SublimeText python Run test8.py ----

user3 입력 후 회원가입 진행 이후 암호 갯수가 틀렸을 때 반복만.... 나머지는 if-elif-else 결과와 유사

input your ID : 
user3
 You are not the our member.
 Use 'user3' ID?
Input 'yes' or 'no' : 
yes
**Please input password : 4-letters**
ild
Please 4-letters
Fail count = 1
**Please input password : 4-letters**
hti
Please 4-letters
Fail count = 2
**Please input password : 4-letters**
iis
Please 4-letters
Fail count = 3
**Please input password : 4-letters**
bit
Please 4-letters
Fail count = 4
Please Retry sign-up, bye~

***Repl Closed***

 

python code, for 반복문 복합 : test9.py

- 1~10 counting과 지능형 리스트를 이용한 for문 간결화

- for문 속에 for문을 이용하여 j = 1~10 loop 속에 j와i의 곱한 list를 nums-group에 저장

#### for
n_nums = []
print('python은 0부터 카운팅 시작')
for n in range(10):
	n_nums.append(n)
	print('n = {}, nums = {}'.format(n,n_nums))

print('\n해결방법 : 카운팅 number m+1을 사용')
m_nums = []
for m in range(10):
	m_nums.append(m+1)
	print('m = {:2d}, nums = {}'.format(m+1,m_nums))

#### for문 지능형 리스트
print('\n지능형 리스트 사용')
M_nums = []
[M_nums.append(M+1) for M in range(10)]
print('M_nums = {}'.format(M_nums))

print('\n\nfor문 속에 for문을 넣어 list-group 만들기')
print('j = 1:10, j = 1:10 단위곱 list 10개')
nums_group = []
for j in range(10):
	nums = []
	for i in range(10):
		v = (i+1)*(j+1)
		nums.append(v)		
	print('j={:2d}, nums={}'.format(j+1,nums))
	nums_group.append(nums)
print('nums_group\n'.format(nums_group))

 

---- SublimeText python Run test9.py ----

python은 0부터 카운팅 시작
n = 0, nums = [0]
n = 1, nums = [0, 1]
n = 2, nums = [0, 1, 2]
n = 3, nums = [0, 1, 2, 3]
n = 4, nums = [0, 1, 2, 3, 4]
n = 5, nums = [0, 1, 2, 3, 4, 5]
n = 6, nums = [0, 1, 2, 3, 4, 5, 6]
n = 7, nums = [0, 1, 2, 3, 4, 5, 6, 7]
n = 8, nums = [0, 1, 2, 3, 4, 5, 6, 7, 8]
n = 9, nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

해결방법 : 카운팅 number m+1을 사용
m =  1, nums = [1]
m =  2, nums = [1, 2]
m =  3, nums = [1, 2, 3]
m =  4, nums = [1, 2, 3, 4]
m =  5, nums = [1, 2, 3, 4, 5]
m =  6, nums = [1, 2, 3, 4, 5, 6]
m =  7, nums = [1, 2, 3, 4, 5, 6, 7]
m =  8, nums = [1, 2, 3, 4, 5, 6, 7, 8]
m =  9, nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
m = 10, nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

지능형 리스트 사용
M_nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


for문 속에 for문을 넣어 list-group 만들기
j = 1:10, j = 1:10 단위곱 list 10개
j= 1, nums=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
j= 2, nums=[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
j= 3, nums=[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
j= 4, nums=[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
j= 5, nums=[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
j= 6, nums=[6, 12, 18, 24, 30, 36, 42, 48, 54, 60]
j= 7, nums=[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]
j= 8, nums=[8, 16, 24, 32, 40, 48, 56, 64, 72, 80]
j= 9, nums=[9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
j=10, nums=[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
nums_group


***Repl Closed***

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함