파이썬 미니 프로젝트(4)
반복문
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