본문 바로가기
Data Science/Python Introduction

[4일차] 파이썬으로 코딩 예제 풀고, 기초수학 출발

by 루크 Luke 2021. 10. 12.
반응형

 

[연습문제]

- 점수별 결과 출력 프로그램 코딩 연습

# 점수 입력받기
score = [0,0,0,0,0]

score[0] = int(input("국어 점수를 입력하세요."))
score[1] = int(input("영어 점수를 입력하세요."))
score[2] = int(input("수학 점수를 입력하세요."))
score[3] = int(input("과학 점수를 입력하세요."))
score[4] = int(input("국사 점수를 입력하세요."))

#총점, 평균, 편차 출력
index = ['국어', '영어', '수학', '과학', '국사']
everyone = [85, 82, 89, 75, 94]

sum_everyone = sum(everyone)
avr_everyone = int(sum_everyone / 5)

# 편차 구하기
diff = [0,0,0,0,0]
for i in range(len(index)):
    diff[i] = score[i] - everyone[i]

# 총점과 평균
sum_score = sum(score)
avr_score = int(sum_score / 5)
diff_score = [sum_score-sum_everyone, avr_score-avr_everyone]

# 1단락 출력
print('-' * 70)

print(f"총점: {sum_score}({diff_score[0]}), 평균: {avr_score}({diff_score[1]})")
for j in range(5):
    print(f"{index[j]}: {score[j]}({diff[j]})", end="")
    if j == 4:
        break
    print(", ", end="")
print()
print('-' * 70)

# 2단락 출력 : marker 선택
marker = ""
for k, p in enumerate(diff):
    if p < 0:
        marker = "-"
        print(f"{index[k]} 편차: {marker * ((-1) * p)}({p})")
    else:
        marker = "+"
        print(f"{index[k]} 편차: {marker * p}({p})")

# 3단락 출력
for q, r in enumerate(['총점', '평균']):
    if diff_score[q] < 0:
        marker = "-"
        print(f"{r} 편차: {marker * ((-1) * diff_score[q])}({diff_score[q]})")
    else:
        marker = "+"
        print(f"{r} 편차: {marker * diff_score[q]}({diff_score[q]})")

print('-' * 70)

코딩 결과 화면

- 일일히 출력 안 하고 반복문으로 조금 돌아서 코딩해봤는데, enumerate()도 써 보고 좋았다.

- 난수를 이용해서 홀/짝 게임 만들기

- 난수를 이용해서 가위바위보 게임 만들기

import random

answer = int(input("가위바위보를 선택해주세요. (가위는 1, 바위는 2, 보는 3) "))
randomResult = random.randint(1,3)

while answer != 1 and answer != 2 and answer != 3:
    answer = int(input("잘못 입력하셨습니다. 다시 입력해주세요. (가위는 1, 바위는 2, 보는 3) "))

result_final = ["무승부", "유저 승리", "유저 패배"]

if answer == 1:
    if randomResult == 1:
        print(result_final[0])
    elif randomResult == 3:
        print(result_final[1])
    else:
        print(result_final[2])

if answer == 2:
    if randomResult == 2:
        print(result_final[0])
    elif randomResult == 1:
        print(result_final[1])
    else:
        print(result_final[2])

if answer == 3:
    if randomResult == 3:
        print(result_final[0])
    elif randomResult == 2:
        print(result_final[1])
    else:
        print(result_final[2])

코드 실행 화면

- 오늘 날짜와 관련한 코딩

import datetime

today = datetime.datetime.today()   # 오늘 날짜와 시간 불러오기
today.day   # 날짜만 꺼내기

- PC에서 난수를 발생시키면 사용자가 그 난수를 맞추는 게임(시도횟수는 20회까지만 가능하다.)

import random

numberUser = int(input("1에서 1000까지의 정수 중 하나를 선택하세요. "))
print()
numberGame = random.randint(1,1000)
iter = 1

while (numberUser != numberGame) and iter < 20:
    if numberGame > numberUser:
        print("더 높은 숫자를 입력하세요.")
        numberUser = int(input("1에서 1000까지의 정수 중 하나를 선택하세요. "))
        print()
        iter += 1
    else:
        print("더 낮은 숫자를 입력하세요.")
        numberUser = int(input("1에서 1000까지의 정수 중 하나를 선택하세요. "))
        print()
        iter += 1

if numberUser == numberGame:
    print("정답입니다.")
    print(f"{iter}회만에 정답 '{numberGame}'을 맞추셨습니다.")
elif iter == 20:
    print("실패하셨습니다.")
    print(f"{iter}회의 기회를 모두 사용하셨습니다. 정답은 '{numberGame}'입니다.")

코드 실행 결과

- 강의에서는 이렇게 했다. 이 코딩이 더 좋은 것 같다. 무한루프를 활용했다.

- 1부터 사용자가 입력한 정수까지의 합, 홀수의 합, 짝수의 합, 팩토리얼을 출력하는 프로그램 만들기

- 천 단위 소숫점 붙이는거 : {:,} ~ .format(변수)

- 변수에 소숫점 넣어서 저장하는 방법 

변수 = format(~~~~~~~~, ',')

- 버스 동시 정차시간 출력 프로그램

코딩 결과 출력

- 톱니의 수와 바퀴 회전수 출력 프로그램

# 톱니수 입력
countA = int(input("작은 톱니바퀴 수를 입력하세요."))
countB = int(input("큰 톱니바퀴 수를 입력하세요."))

while countA >= countB:
    if countA >= countB:
        print("잘못 입력하셨습니다.\n")
    countA = int(input("작은 톱니바퀴 수를 입력하세요."))
    countB = int(input("큰 톱니바퀴 수를 입력하세요."))

changeA = countA
changeB = countB
question = False

while question == False:
    changeA += countA
    if (changeA % countB == 0):
        question = True

print(f"최초로 만나는 시기는 톱니 수 {changeA}개 째일 때입니다.")
print(f"작은 톱니바퀴는 {changeA // countA}회전을 했습니다.")
print(f"큰 톱니바퀴는 {changeA // countB}회전을 했습니다.")

코드 실행 화면

[약수와 소수]

- 약수 : 어떤 수를 나누어 떨어지게 하는 수

- 소수 : 1과 자신만을 약수로 가지는 수(단, 1은 제외) ex) 2,3,5,7,11,13,17,19

예제) 1부터 30까지의 숫자 중 5로 나눈 몫과 나머지가 모두 소수인 숫자를 찾아보자.

  -> 몫은 1~6 중에 나올거고, 나머지는 0~4가 나올 것이다.

  -> 몫은 2,3,5, 나머지는 2,3이 소수니까 -> 12, 13, 17, 18, 27, 28이 정답

- 파이썬을 이용해서 약수와 소수 찾기

  1) 파이썬으로 약수 : 나눠서 나머지가 0이면 약수.

  2) 파이썬으로 소수 : range(2, num)까지 돌려서 나머지가 0이 아니면 소수.

[소인수분해]

- 수를 소인수의 곱으로 나타내자.

- 약수 중에서 소수인 숫자를 소인수라고 함

- 20의 약수는 1, 2, 4, 5, 10, 20이며, 20의 소인수는, 2, 5임

- 소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것

- 소인수분해를 통해 약수를 찾을 수 있음

- 파이썬으로 소인수분해  : 하나씩 키워서 나누는 것을 반복

예제) 72에 x를 곱하면 y의 제곱이 된다고 할 때, x에 해당하는 가장 작은 정수를 구하는 프로그램

  -> 72가 N이라면 가능할 수 있도록 구현


온라인 강의 4일차 후기

실습 예제를 풀면서 강의를 들으니까 더 오래 걸리는 듯하다.

생각보다 이것저것 생각하면서 풀 수 있게 해주는 것 같아서 좋다.

코딩테스트 잘하고 싶다.. 기초부터 차근차근 아자아자.

 

 

- 네카라쿠배 데이터사이언스 오프라인 1기 수강 中

https://zero-base.co.kr/

 

제로베이스 - 밑바닥부터 끝까지 듣는 온라인 강의

무조건 간다! 개발자 스쿨 '네카라쿠배', 끝까지 공부하는 '온라인 완주반', 전문가가 베스트셀러를 해석해 주는 '한달한권' 등 교육 서비스로 삶의 전환점을 제공하는 제로베이스입니다.

zero-base.co.kr

 

반응형

댓글