014 while문 개념 배우기(while~continue~break)
for loop문처럼 while loop문도 같은 반복문
for loop문은 특정 범위에서 반복실행하게 하는 반면에 while loop문은 특정 조건에서 코드를 반복실행하게 함.
for loop문과 while loop문의 비교
for loop문 | vs | while loop문 |
for i in range(1,11): print(i) |
x = 1 while x < 11: print(x) x = x + 1 |
# while loop문 코드 설명
x = 1 # 변수x에 1을 할당
while x < 11: # x < 11 보다 작다는 조건하에서만 다음의 실행문을 실행
print(x) # 변수 x값 출력
x = x + 1 # 변수 x의 값을 1씩 증가시킴
문제54. 구구단 2단을 while loop문으로 출력하시오
i = 1
while i < 10:
print(2,'x',i,'=',2*i)
i = i + 1
문제55. 주사위를 던져서 숫자6이 나올 확률은? (주사위를 10만번 던지세요, while문 사용할 것)
import random
dice = [1,2,3,4,5,6]
x =0
cnt = 0
while x < 100000:
a = random.choice(dice)
if a == 6:
cnt = cnt + 1
x = x + 1 # while문을 종료시킬 조건
print(cnt/100000)
문제56. 동전을 던져서 동전의 앞면이 나오는 확률을 while loop문으로 구하시오.(동전을 10만번 던지세요)
import random
coin = ['앞면','뒷면']
x =0
cnt = 0
while x < 100000:
a = random.choice(coin)
if a == '앞면':
cnt = cnt + 1
x = x + 1
print(cnt/100000)
문제57. 6개의 제품이 들어있는 상자가 있는데 그 중에 2개가 불량품이라고 하자. 제품검사를 위해서 3개를 추출했을 때, 적어도 그 중에 1개가 불량품이 발견될 확률은 ?
import numpy as np
box = ['pass','pass','pass','pass','nonpass','nonpass']
cnt = 0
x = 0
while x < 100000:
result = np.random.choice(box,3,replace = True)
result2 = list(result)
if result2.count('nonpass') >= 1: #if result2.count('nonpass') in [1,2,3] 로 작성할 수도 있음.
cnt = cnt + 1
x = x + 1
print(cnt / 100000)
문제58. ★을 옆으로 5개 출력하시오
print('★'*5)
문제59. 숫자를 물어보게 하고 숫자를 입력하면 해당 숫자만큼 ★이 출력되게 하시오
a = int(input('숫자를 입력하세요~'))
print('★'*a)
문제60. 아래와 같이 결과가 출력되게 하시오.(while loop문 이용)
숫자를 입력하세요~ 5
★
★★
★★★
★★★★
★★★★★
a = int(input('숫자를 입력하세요~'))
x = 1
while x <= a:
print('★'* x)
x = x + 1
문제61. 아래의 결과를 while loop문으로 구현하시오.
숫자를 입력하세요~ 5
★★★★★
★★★★
★★★
★★
★
a = int(input('숫자를 입력하세요~'))
x = 1
while x <= a:
print('★'* a)
a = a - 1
문제62. 1부터 10까지의 합은? (while loop문으로 수행)
x = 0
cnt = 0
while x < 11 :
cnt = cnt + x
x = x + 1
print(cnt)
문제63. (필수 알고리즘 문제) 팩토리얼 구하기
5 ! = 5*4*3*2*1
a = int(input('숫자를 입력하세요~'))
x = 1
cnt = 1
while x <= a :
cnt = cnt * x
x = x + 1
print(cnt)
문제64. 아래와 같이 숫자를 물어보게 하고 숫자를 입력하면 해당 숫자부터 1씩 차감해서 1까지 나오게 하시오.
a = int(input('숫자를 입력하세요~'))
while 0 < a:
print(a)
a = a - 1
문제65. 64번 코드를 수정하여 어떤 숫자를 입력하든 3에서 무조건 멈추게 하시오
a = int(input('숫자를 입력하세요~'))
x = 0
while x <= a:
print(a)
if a == 3:
break
a = a-1
문제66. 두개의 숫자를 물어보게 하고 두 개의 숫자를 입력하면 두 개의 숫자에 대한 최대 공약수를 출력하시오.(while문과 break를 이용하시오)
a = int(input('첫번째 숫자를 입력하세요~'))
b = int(input('두번째 숫자를 입력하세요~'))
x = b
while 0 < b:
if a % b == 0 and x % b == 0:
break
b = b -1
print(b)
# for loop문으로 구한 최대공약수
a = int(input('첫번째 숫자를 입력하세요~'))
b = int(input('두번째 숫자를 입력하세요~'))
for i in range(b,0,-1):
if a % i == 0 and b % i == 0:
break
print('최대공약수는 ',i,'입니다.')
015 None 개념 배우기
None은 아무것도 없다는 의미의 상수.
아무것도 없다는 것을 나타내기 위해서 주로 사용됨.
x = 0 # 변수x에 숫자0을 할당함
while x < 10:
print(x)
x = x + 1 # 0 + 1이 실행됨
변수x는 숫자만 담김. 그런데 경우에 따라 숫자가 들어갈수도 문자가 들어갈 수도 있어서, 처음에 변수 선언시 결정을 잘 못하겠다면 아래와 같이 None을 이용해서 변수를 생성하면 됨.
x = None #앞으로 x에 어떤 유형의 데이터가 들어올지 몰라서 none으로 할당함
a = int(input('숫자를 입력하세요~'))
if a == 1:
x = [1,2,3]
else:
x = 'i love python'
print(x)
문제67. 아래의 문자열에는 숫자 8이 몇 번 나오는가?
a = '829100282'
cnt = 0
for i in a:
if i == '8':
cnt = cnt + 1
print(cnt)
# while로 하는 방법 생각해보기
# a = '829100288'
# i =0
# cnt = 0
# while i < len(a) + 1:
# if a[i-1] == '8':
# cnt = cnt + 1
# i = i + 1
# print(cnt)
loop문은 자제하는게 좋음.
# loop문을 사용하지 않는다면?
a = '829100282'
b = list(a) # a문자열을 리스트로 변경
print(b) # ['8', '2', '9', '1', '0', '0', '2', '8', '2']
b.count('8')
문제68. 1부터 10000까지 출력하는 for문을 작성하시오.
for i in range(1,10001):
print(i)
문제69.위의 결과를 다시 출력하는데 str함수를 이용해서 문자로 출력하시오.
for i in range(1,10001):
print(str(i))
문제70. 위의 결과에서 문자로 나온 것을 리스트형으로 출력하시오.
for i in range(1,10001):
print(list(str(i)))
문제71. ['8', '2', '9', '1', '0', '0', '2', '8', '2'] 이 리스트에서 숫자 8이 몇 번 나오는가?
a = ['8', '2', '9', '1', '0', '0', '2', '8', '2']
a.count('8')
문제72. 아래의 코드를 이용해서 그 옆에 8이 몇 번 나오는지 같이 출력하시오.
for i in range(1,10001):
print(list(str(i)),list(str(i)).count('8'))
문제73. 1부터 10까지의 합을 구하시오.
cnt = 0
for i in range(1,11):
cnt = cnt + i
print(cnt)
문제74. (구글입사문제) 1부터 10000까지 8이라는 숫자가 몇 번 나오는가?
# 처음 쓴 코드
cnt = 0
for i in range(1,10001):
a = list(str(i))
b = a.count('8')
if b >= 1:
cnt = cnt + b
print(cnt)
# 두번째로 쓴 코드
a = 0
for i in range(1,10001):
x = list(str(i)).count('8')
a = a + x
print(a)
# 다른 사람이 쓴 코드
print(str(list(range(1,10001))).count('8'))
문제75. 숫자를 물어보게 하고 숫자를 입력하면 해당 숫자만큼 ★이 출력되게 하세요.
a = int(input('숫자를 입력하세요~'))
for i in range(1,a+1):
print('★'*i)
문제76. (오늘의 마지막 문제) 다음과 같이 가로의 길이와 세로의 길이를 각각 물어보게 하고 사각형을 출력하시오.
a = int(input('가로의 길이를 입력하세요~'))
b = int(input('세로의 길이를 입력하세요~'))
for i in range(1,b+1):
print('★'* a)
'Study > class note' 카테고리의 다른 글
python / 시퀀스 자료형 이해 (0) | 2021.12.10 |
---|---|
sql / log함수 (0) | 2021.12.10 |
python / for ~ else, for~continue~break, 이중 for문 (0) | 2021.12.08 |
python / 주석, 자료형 개념, print, for문 개념 (0) | 2021.12.07 |
python / 설치 (0) | 2021.12.06 |