본문 바로가기

Study/class note

python / while문

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