반복문

For 반복문

fruits = ["사과", "배", "복숭아"]
for fruit in fruits :
    print(fruit)
사과
배
복숭아
fruits = ["사과", "배", "복숭아"]
for fruit in fruits :
    print(fruit)
    print(fruit +" 파이")
    print(fruits)
print()
print(fruits)
사과
사과 파이
['사과', '배', '복숭아']
배
배 파이
['사과', '배', '복숭아']
복숭아
복숭아 파이
['사과', '배', '복숭아']

['사과', '배', '복숭아']

학생 평균 키 계산

student_heights = input("학생들의 키를 입력해 주세요. :").split()

for n in range(0, len(student_heights)):
    student_heights[n] = int(student_heights[n])

print(f"학생 키 현황 : {student_heights}")

student_heights_sum = 0

for k in range(0, len(student_heights)) :
    student_heights_sum += int(student_heights[k])

#student_heights_sum = sum(student_heights)

student_heights_average = round(student_heights_sum / len(student_heights), 1)
print(f"학생 키 합 : {student_heights_sum}")
print(f"학생 키 평균 : {student_heights_average}")


학생 키 현황 : [180, 175, 166, 187, 178, 189, 181, 178, 169, 172]
학생 키 합 : 1775
학생 키 평균 : 177.5

높은 점수 구하기

student_scores = input("학생들의 점수를 입력해 주세요. :").split()
print(student_scores)
#students_score = [78, 65, 89, 86, 55, 91, 64, 89]

highest_score = int(student_scores[0])
for k in range(1, len(student_scores)) :
    if highest_score <= int(student_scores[k]) :
        highest_score = int(student_scores[k])

highest_score2 = 0
for score in student_scores :
    if highest_score2 <= int(score):
        highest_score2 = int(score)


print(f"for문 계산 결과1 : {highest_score}")
print(f"for문 계산 결과2 : {highest_score2}")
print("max 함수 사용 결과 : " + max(student_scores)) #max 함수 사용하기

['78', '68', '89', '90', '82', '87', '59', '98', '87', '56', '69', '85']
for문 계산 결과1 : 98
for문 계산 결과2 : 98
max 함수 사용 결과 : 98

1부터 n까지 더하기

last_number = int(input("숫자를 입력해 주세요. : "))
sum = 0
for i in range(1, last_number+1) :
    sum += i

print(f"1부터 {last_number}까지의 덧셈 결과: {sum}")
1부터 700까지의 덧셈 결과: 245350

1부터 n까지 짝수만 더하기

last_number = int(input("숫자를 입력해 주세요. : "))
sum = 0
sum2 = 0
select_number = []
for i in range(1, last_number+1) :
    if i % 2 == 0 :
        select_number.append(i)
        sum += i

for number in range(2, last_number+1, 2) :
    sum2 += number

print(select_number)
print(f"1부터 {last_number}까지의 짝수 덧셈 결과:")
print(f"if문 이용하여 짝수 구하기: {sum}")
print(f"for문을 이용하여 짝수 구하기 : {sum2}")
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
1부터 100까지의 짝수 덧셈 결과:
if문 이용하여 짝수 구하기: 2550
for문을 이용하여 짝수 구하기 : 2550

1부터 n까지 홀수만 더하기

last_number = int(input("숫자를 입력해 주세요. : "))
sum = 0
select_number = []
for i in range(1, last_number+1) :
    if i % 2 == 1 :
        select_number.append(i)
        sum += i
print(select_number)
print(f"1부터 {last_number}까지의 홀수 덧셈 결과: {sum}")
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
1부터 100까지의 홀수 덧셈 결과: 2500

FizzBuzz 게임

  • 3으로 나눌 수 있으면 fizz
  • 5로 나눌 수 있으면 buzz
  • 3과 5로 모두 나눌 수 있으면 fizzbuzz
last_number = int(input("숫자를 입력해 주세요. : "))
sum = 0
game_list = []
for i in range(1, last_number+1) :
    if i % 3 == 0 and i % 5 == 0 :
        game_list.append("FizzBuzz")
    elif i % 3 == 0 :
        game_list.append("Fizz")
    elif i % 5 == 0 :
        game_list.append("Buzz")
    else :
        game_list.append(i)

print("FizzBuzz 게임 결과")
print(game_list)

FizzBuzz 게임 결과
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz', 16, 17, 'Fizz', 19, 'Buzz', 'Fizz', 22, 23, 'Fizz', 'Buzz', 26, 'Fizz', 28, 29, 'FizzBuzz', 31, 32, 'Fizz', 34, 'Buzz', 'Fizz', 37, 38, 'Fizz', 'Buzz', 41, 'Fizz', 43, 44, 'FizzBuzz', 46, 47, 'Fizz', 49, 'Buzz', 'Fizz', 52, 53, 'Fizz', 'Buzz', 56, 'Fizz', 58, 59, 'FizzBuzz', 61, 62, 'Fizz', 64, 'Buzz', 'Fizz', 67, 68, 'Fizz', 'Buzz', 71, 'Fizz', 73, 74, 'FizzBuzz', 76, 77, 'Fizz', 79, 'Buzz', 'Fizz', 82, 83, 'Fizz', 'Buzz', 86, 'Fizz', 88, 89, 'FizzBuzz', 91, 92, 'Fizz', 94, 'Buzz', 'Fizz', 97, 98, 'Fizz', 'Buzz']

비밀번호 생성기

파이썬에서 알파벳 리스트를 만드는 가장 쉬운 방법은 다음과 같습니다

import string
alphabets = list(string.ascii_lowercase)

위 코드는 string 모듈에서 ascii_lowercase라는 변수를 가져와서 리스트로 만듭니다. 이 리스트는 소문자 알파벳을 모두 포함합니다. 만약 대문자 알파벳을 포함하려면 string.ascii_uppercase를 사용하면 됩니다.

import string
alphabets = list(string.ascii_lowercase + string.ascii_uppercase)

이제 alphabets 변수는 소문자와 대문자 알파벳을 모두 포함하는 리스트가 됩니다.

내가 만든 프로그램

import string, random

low_letters = int(input("몇 글자의 암호를 만들까요? : "))
upper_letters = int(input("대문자 개수 : "))
symbol_letters = int(input("기호 개수 : "))
number_letters = int(input("숫자 개수 : "))
count_list = [upper_letters, upper_letters+symbol_letters, upper_letters+symbol_letters+number_letters] #비밀번호로 만들 대문자, 기호, 숫자간의 간격 저장, random_location에서 활용

# 소문자, 대문자, 숫자, 심볼 기호 리스트 생성
low_letter_list = list(string.ascii_lowercase)
upper_letter_list = list(string.ascii_uppercase)
number_list = list(range(10))
symbol_list = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")"]

print("소문자 생성")
print(low_letter_list)
print("대문자 생성")
print(upper_letter_list)
print("숫자 생성")
print(number_list)
print("사용할 기호")
print(symbol_list)

# 사용자의 요구 사항 출력
print(f"전체 암호 길이 : {low_letters} 글자")
print(f"대문자 개수 : {upper_letters} 개")
print(f"기호 개수 : {symbol_letters} 개")
print(f"숫자 개수 : {number_letters} 개")

# 11개의 소문자 알파벳 비밀번호 생성
make_password = []
for i in range(low_letters):
    make_password.append(random.choice(low_letter_list))
print()
print("소문자를 랜덤으로 뽑아낸 비밀번호")
print(make_password)

# 대문자, 기호, 숫자가 들어갈 랜덤 위치 뽑아내기
random_location = []
ran_num = random.randint(0, low_letters-1)

for i in range(count_list[2]) :
    while ran_num in random_location: #random_location에 ran_num이 있는 경우에만 랜덤 번호를 산출하여 ran_num에 입력
        ran_num = random.randint(0, low_letters-1)
    random_location.append(ran_num)
print("대문자, 기호, 숫자를 넣을 랜덤 위치")
print(random_location)

# random_location의 위치에 대문자, 숫자, 기호로 변경하기
for i in range(0, count_list[0]):
    make_password[random_location[i]] = random.choice(upper_letter_list)
for i in range(count_list[0], count_list[1]):
    make_password[random_location[i]] = random.choice(symbol_list)
for i in range(count_list[1], count_list[2]):
    make_password[random_location[i]] = str(random.choice(number_list)) #lastpassword 문자열 결합을 위해 숫자를 문자열로 변환

print("대문자, 기호, 숫자를 추가한 비밀번호 리스트")
print(make_password)

# 생성된 리스트에서 문자열로 결합하여 최종 비밀번호 산출
lastpassword = ''.join(make_password)

# lastpassword = ''
# for a in make_password :
#     lastpassword += a

print("비밀번호를 생성하였습니다.")
print("비밀번호 생성 결과 : " + lastpassword)

소문자 생성
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
대문자 생성
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
숫자 생성
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
사용할 기호
['!', '@', '#', '$', '%', '^', '&', '*', '(', ')']
전체 암호 길이 : 12 글자
대문자 개수 : 3 개
기호 개수 : 2 개
숫자 개수 : 3 개

소문자를 랜덤으로 뽑아낸 비밀번호
['q', 'u', 'h', 'x', 'q', 't', 'x', 'g', 'v', 'm', 'e', 'b']
대문자, 기호, 숫자를 넣을 랜덤 위치
[11, 1, 7, 9, 2, 4, 6, 3]
대문자, 기호, 숫자를 추가한 비밀번호 리스트
['q', 'J', '^', '9', '3', 't', '2', 'L', 'v', '@', 'e', 'I']
비밀번호를 생성하였습니다.
비밀번호 생성 결과 : qJ^93t2Lv@eI

유데미 강의를 참고해 수정한 프로그램

import string, random

low_letters = int(input("몇 글자의 암호를 만들까요? : "))
upper_letters = int(input("대문자 개수 : "))
symbol_letters = int(input("기호 개수 : "))
number_letters = int(input("숫자 개수 : "))

# 소문자, 대문자, 숫자, 심볼 기호 리스트 생성
low_letter_list = list(string.ascii_lowercase)
upper_letter_list = list(string.ascii_uppercase)
number_list = list((range(10)))
symbol_list = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")"]

print("소문자 생성")
print(low_letter_list)
print("대문자 생성")
print(upper_letter_list)
print("숫자 생성")
print(number_list)
print("사용할 기호")
print(symbol_list)


# 사용자의 요구 사항 출력
print()
print(f"전체 암호 길이 : {low_letters} 글자")
print(f"대문자 개수 : {upper_letters} 개")
print(f"기호 개수 : {symbol_letters} 개")
print(f"숫자 개수 : {number_letters} 개")

# 각 개수에 맞게 비밀번호 문자를 생성
make_password =[]
for i in range(low_letters-(upper_letters+symbol_letters+number_letters)): #전체 길이에서 대문자, 기호, 숫자의 갯수를 뺀 만큼을 반복하기
    make_password += random.choice(low_letter_list)
for i in range(upper_letters):
    make_password += random.choice(upper_letter_list)
for i in range(symbol_letters):
    make_password += random.choice(symbol_list)
for i in range(number_letters):
    make_password += str(random.choice(number_list))

random.shuffle(make_password) #랜덤 shuffle 메소드를 이용해서 위치를 무작위로 바꿈.

# 산출된 비밀번호 리스트
print()
print(make_password)

# 리스트에서 문자열로 결합하여 최종 비밀번호 출력
lastpassword = ''.join(make_password)

# lastpassword = ''  #유데미 강의 버전
# for a in make_password :
#     lastpassword += a

print("비밀번호를 생성하였습니다.")
print("비밀번호 생성 결과 : " + lastpassword)
소문자 생성
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
대문자 생성
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
숫자 생성
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
사용할 기호
['!', '@', '#', '$', '%', '^', '&', '*', '(', ')']

전체 암호 길이 : 12 글자
대문자 개수 : 2 개
기호 개수 : 3 개
숫자 개수 : 2 개

['M', 'd', '*', '&', '0', 'T', '9', 'o', 'l', 'z', '(', 'q']
비밀번호를 생성하였습니다.
비밀번호 생성 결과 : Md*&0T9olz(q