기본 구조:
while 조건:
# 반복할 코드
# 조건이 참인 동안 계속 실행됨
주요 특징:
기본 구조:
for 변수 in 범위/시퀀스:
# 반복할 코드
주요 특징:
range() 함수와 많이 사용됨: range(시작, 끝, 스텝)기본 구조:
for i in range():
for j in range():
# 코드 실행
주요 특징:
print("구구단 출력")
print("-"*30)
dan = int(input("몇 단을 출력할까요 ? "))
i = 1
while i <= 9:
print("%d * %d = %d" %(dan, i, dan*i))
i = i + 1
핵심 포인트:
i = 1i <= 9i = i + 1sum = 0
number = 1
while number <= 100:
if number % 3 == 0:
sum = sum + number
number = number + 1
print("1부터 100사이의 모든 3의 배수의 합은 %d입니다." % sum)
핵심 포인트:
sum = 0if number % 3 == 0while number <= 100number = int(input("자리수의 합을 계산하기 위한 값을 입력하시오 : "))
sum = 0
while number > 0:
digit = number % 10
sum = sum + digit
number = number // 10
print("자리수의 합은 %d입니다." % sum)
핵심 포인트!!!!!!!!!!!!!!!:
digit = number % 10number = number // 10number > 0 (모든 자릿수 처리 완료)n = 0
sum = 0
score = 0
print("종료하려면 음수를 입력하시오")
while score >= 0:
score = int(input("성적을 입력하시오: "))
if score > 0:
sum = sum + score
n = n + 1
if n > 0:
average = sum / n
print("성적의 평균은 %f입니다." % average)
핵심 포인트:
if score > 0if n > 0import random
tries = 0
number = random.randint(1, 100)
print("1부터 100사이의 숫자를 맞추시오")
while tries < 10:
guess = int(input("숫자를 입력하시오: "))
tries = tries + 1
if guess < number:
print("컴퓨터가 생각하는 숫자보다 더 작음!")
elif guess > number:
print("컴퓨터가 생각하는 숫자보다 더 큼!")
else:
break
if guess == number:
print("축하합니다.정답입니다.시도횟수=", tries)
else:
print("정답은 ", number)
핵심 포인트:
random.randint(1, 100)tries < 10from random import randint
def game(player):
while True:
player = input("scissors, rock, paper중에서 하나를 입력하고,게임을 끝내려면 q를 입력하세요: ")
if player == "q":
return
elif player == "scissors":
playerNum = 0
elif player == "rock":
playerNum = 1
elif player == "paper":
playerNum = 2
else:
continue
list = ["scissors", "rock", "paper"]
comNum = randint(0,2)
print("● user :", player, "● computer :", list[comNum])
if (playerNum-comNum==0):
print("user and computer are in the same.")
elif (playerNum-comNum==-2 or playerNum-comNum==1):
print("user win !!")
else:
print("computer win !!")
player = input("게임을 시작하려면 s를 입력하세요: ")
if player =="s":
print("게임이 시작되었습니다.")
game(player)
핵심 포인트:
while TrueplayerNum-comNum 값 비교for y in range(5):
for x in range(10):
print("* ", end="")
print()
핵심 포인트:
y)x)end="" 파라미터로 줄바꿈 제어for a in range(1, 101, 1):
for b in range(a, 101, 1):
for c in range(b, 101, 1):
if((a*a+b*b)==c*c):
print(a, b, c)
핵심 포인트:
b는 a부터, c는 b부터 시작a²+b²=c²문제: 1부터 사용자가 입력한 수까지의 합을 계산하는 프로그램을 작성하시오.
풀이:
n = int(input("숫자를 입력하세요: "))
sum = 0
i = 1 #while은 초깃값 뺴먹지말기!!!!!!
while i <= n:
sum += i
i += 1
print(f"1부터 {n}까지의 합은 {sum}입니다.")
문제: range 함수를 사용하여 10부터 1까지 역순으로 출력하는 프로그램을 작성하시오.
풀이:
for i in range(10, 0, -1):
print(i, end=" ")
print() # 줄바꿈
문제: 1부터 100까지 숫자 중 7의 배수이거나 3의 배수인 경우만 출력하되, 합이 200을 초과하면 중단하는 프로그램을 작성하시오.
풀이:
sum = 0
for num in range(1, 101):
if num % 7 == 0 or num % 3 == 0:
print(num, end=" ")
sum += num
if sum > 200:
print("\n합이 200을 초과했습니다. 현재 합:", sum)
break
else:
continue
문제:
풀이:
number = int(input("정수를 입력하세요: "))
original = number
count = 0
while number > 0:
number = number // 10
count += 1
print(f"{original}은(는) {count}자리 수입니다.")
문제: 다음과 같은 패턴을 출력하는 프로그램을 작성하시오.
*
**
***
****
*****
풀이:
rows = 5
for i in range(1, rows + 1):
for j in range(i):
print("*", end="")
print()
문제: 2부터 100까지의 모든 소수를 찾아 출력하는 프로그램을 작성하시오.
풀이:
for num in range(2, 101): # 2부터 100까지의 모든 숫자(num)를 확인
is_prime = True # 소수 여부를 저장하는 변수 (기본적으로 True로 설정)
for i in range(2, int(num**0.5) + 1): # 2부터 num의 제곱근까지 반복
if num % i == 0: # 나누어 떨어지는 수가 있으면
is_prime = False # 소수가 아님
break # 더 확인할 필요 없으므로 반복문 종료
if is_prime: # 소수라면 출력
print(num, end=" ") # 한 줄로 출력하기 위해 end=" " 추가3
문제: 사용자로부터 숫자를 입력받아 합계를 계산하되, 0이 입력되면 입력을 중단하고 지금까지의 합계와 평균을 출력하는 프로그램을 작성하시오.
풀이:
sum = 0
count = 0
print("숫자들을 입력하세요 (종료는 0):")
while True:
num = float(input("숫자: "))
if num == 0:
break
sum += num
count += 1
if count > 0:
print(f"합계: {sum}")
print(f"평균: {sum / count}")
else:
print("입력된 숫자가 없습니다.")
'''### 문### 문제 7: 센티널 값을 활용한 데이터 입력
**문제:** 사용자로부터 숫자를 입력받아 합계를 계산하되,
0이 입력되면 입력을 중단하고 지금까지의
합계와 평균을 출력하는 프로그램을 작성하시오.'''
sum=0
count=0
# 걍 냅다 print처넣기
'''알고리즘
1. while True처넣기
2. 숫자입력
3. 만약 입력된숫자가 0임: 멈춰씨발!
4. 아님:(계속진행됨): num추가, 카운트 +1
5. 이 다음은 break 당한 경우밖에 없으므로 만약 카운트>0: 합계평균출력
아님: 입력된숫자가없음을어필!)'''
print("숫자들을 입력하세요(종료는 0)")
while True:
num = float(input("숫자?: "))
if num == 0:
break
sum += num
count += 1
if count>0:
print(f"지금까지 입력된 숫자의 합계는: {sum}, 평균은 {sum/count}")
else:
print("입력된 숫자가 없습니다.")
문제: 주사위를 100번 던져서 각 숫자(1~6)가 나온 횟수를 세는 프로그램을 작성하시오.
풀이:
import random
counts = [0, 0, 0, 0, 0, 0] # 인덱스 0은 사용하지 않음
for i in range(100):
dice = random.randint(1, 6)
counts[dice-1] += 1
for i in range(6):
print(f"숫자 {i+1}: {counts[i]}번")
#내가한거
'''알고리즘
1. 랜덤임포트
2. 카운트리스트 준비
3. 100번굴려
4. 주사위수 = r.randint 지정해둠
5. 카운트[주사위수-1] += 1
개빡세네 시발
내가잘한점: 리스트[숫자] += 1 이거어케생각햇대 ㅎ'''
import random as r
counts = [0, 0, 0, 0, 0, 0]
for i in range(100):
num = r.randint(1,6)
counts[num-1] += 1
print(counts[0], counts[1], counts[2], counts[3], counts[4], counts[5])
문제: 구구단 중 짝수 단(2, 4, 6, 8단)만 출력하는 프로그램을 작성하시오.
풀이:
for dan in range(2, 10, 2):
print(f"\n== {dan}단 ==")
for i in range(1, 10):
print(f"{dan} × {i} = {dan * i}")
문제: 사용자로부터 양의 정수 n을 입력받아, 피보나치 수열의 첫 n개 항을 출력하는 프로그램을 작성하시오.
풀이:
n = int(input("출력할 피보나치 수열의 항 개수: "))
a, b = 0, 1 #초깃값지정해두기!! 피보나치수열=1,1,2,3...이딴식으로전개됨
count = 0
while count < n:
print(a, end=" ") #앞두자리수의합>다음b가되므로 a만출력: ㅇㅋ
a, b = b, a + b
count += 1
n!을 계산하는 프로그램을 작성하시오. (n은 사용자 입력)
사용자가 입력한 단 ~ 9단까지 구구단을 출력하는 프로그램을 작성하시오.
사용자가 입력한 숫자의 모든 약수를 찾아 출력하는 프로그램을 작성하시오.
1부터 1000까지의 수 중에서 완전수를 모두 찾아 출력하시오.
(완전수는 자기 자신을 제외한 약수의 합이 자기 자신과 같은 수)
#1부터 1000까지의 수 중에서 완전수를 모두 찾아 출력하시오.
#(완전수는 자기 자신을 제외한 약수의 합이 자기 자신과 같은 수)
for i in range(1,1001):
sum = 0
for n in range(1, i):
if i%n ==0:
sum += n
else:
continue
if sum == i:
print(i, end=" ")
100부터 999까지의 암스트롱 수를 모두 찾아 출력하시오.
(각 자릿수의 세제곱의 합이 원래 수와 같은 수)
### 문제 5: 암스트롱 수 찾기
#100부터 999까지의 암스트롱 수를 모두 찾아 출력하시오.
#(각 자릿수의 세제곱의 합이 원래 수와 같은 수)
a=0
b=0
c=0
for i in range(100,1000):
a=i//100 #백의자리수
b=(i-a*100)//10 #십의자리수
c=i%10
if (a**3 + b**3 + c**3 == i):
print(i)
다음과 같은 패턴을 출력하시오.
*
***
*****
*******
*********
for i in range(1,6):
print(" "*(6-i), "*"*(2*i-1)) 우 하 하
사용자가 입력한 양의 정수 n에 대해 콜라츠 추측을 적용하여 1이 될 때까지의 과정과 단계 수를 출력하시오.
### 문제 7: 콜라츠 추측
#사용자가 입력한 양의 정수 n에 대해
#콜라츠 추측을 적용하여 1이 될 때까지의 과정과 단계 수를 출력하시오.
#- n이 짝수면 2로 나눔
#- n이 홀수면 3을 곱하고 1을 더함
#- 위 과정을 n이 1이 될 때까지 반복
num = int(input("정수를 입력하시오: "))
while num != 1:
if num%2 == 0:
num //= 2
print("num//2=", num)
elif num%2 == 1:
num = num*3 + 1
print("num*3-1=",num)
두 수를 입력받아 최대공약수와 최소공배수를 계산하는 프로그램을 작성하시오.
1부터 45까지의 숫자 중에서 중복되지 않는 6개의 숫자를 무작위로 선택하여 출력하는 로또 번호 생성기를 작성하시오.