Python 기초개념 (2)

2star_·2024년 9월 27일
0

Python

목록 보기
2/13

Visual Studio code 단축키 모음

링크텍스트

Quiz 3

from random import*

users = range(1,21) # 1부터 20까지 숫자를 생성
# print(type(users)) # range는 list가 아님
users = list(users) # list로 변환
# print(type(users)) 

print(users)
shuffle(users)
print(users)

winners = sample(users, 4) #4명 중에서 1명은 치킨, 3명은 커피

print(" -- 당첨자 발표 -- ")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))  
print(" -- 축하합니다 --")

If문

weather = input("오늘 날씨는 어때요? ") # "?"다음에 쳤을 때 답이 나옴
# if 조건:
#     실행 명령문
if weather == "비" or weather == "눈" :
    print("우산을 챙기세요")
elif weather =="미세먼지" :
    print("마스크를 챙기세요")
else:
    print("준비물 필요 없어요.")

temp = int(input("기온은 어때요? "))
if 30<= temp :
    print("너무 더워요. 나가지 마세요")
elif 10<= temp and temp <30:
    print("괜찮은 날씨에요")
elif 0<= temp < 10: 
    print("외투를 챙기세요")
else:
    print("너무 추워요. 나가지 마세요")

반복문 for


print("대기번호 : 1")
print("대기번호 : 2")
print("대기번호 : 3")
print("대기번호 : 4")

for waiting_no in [0,1,2,3,4]:
    print("대기번호 : {0}".format(waiting_no))

for waiting_no in range(1,6):     # 1 부터 6 직전까지
    print("대기번호 : {0}".format(waiting_no)) 

starbucks = ["아이언맨", "토르", "그루트"]
for customer in starbucks:
    print("{0}, 커피가 준비되었습니다.".format(customer))
    
 # 출석번호가 1,2,3,4 앞에 100을 붙이기로 함 -> 101,102,103,104
students = [1,2,3,4,5]
print(students)
students = [i+100 for i in students]
print(students)

# 학생 이름을 길이로 변환
students = ["Iron man","Thor","I am groot"]
students = [len(i) for i in students]
print(students)

# 학생 이름을 대문자로 변환
students = ["Iron man","Thor","I am groot"]
students = [i.upper() for i in students]
print(students)

반복문 while

customer = "토르"
index = 5
while index >=1:
    print("{0}, 커피가 준비 되었습니다. {1} 번 남았어요".format(customer,index))
    index -= 1
    if index == 0:
        print("커피는 폐기처분되었습니다.")

customer = "아이언맨"
index = 1
while True:
    print("{0}, 커피가 준비 되었습니다. 호출 {1} 회".format(customer,index))
    index += 1       # 무한루프 종료는 "control + c"


customer = "토르"
person = "Unknown"

while person != customer :
    print("{0}, 커피가 준비 되었습니다.".format(customer))
    person = input("이름이 어떻게 되세요? ")

continue 와 break

absent = [2, 5] # 결석
no_book = [7] # 책을 깜빡했음
for student in range(1, 11): # 1~10번까지 
    if student in absent: 
        continue #해당되는 것 제외하고 다음 반복 진행
    elif student in no_book:
        print("오늘 수업 여기까지. {0}은 교무실로 따라와.".format(student))
        break # 반복문 탈출
    
    
    print("{0}, 책을 읽어봐".format(student))

Quiz.4

당신은 Cocoa 서비스를 이용하는 택시 기사님입니다.
50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.

조건1 : 승객별 운행 소요 시간은 5분~ 50분 사이로 난수입니다.
조건2 : 당신은 소요 시간 5분 ~ 15분 사이의 승객만 매칭해야 합니다.

(출력문 예제)
[0] 1번째 손님 (소요시간 : 15분)
[] 2번째 손님 (소요시간 : 50분)
[0] 3번째 손님 (소요시간 : 5분)
...
[ ] 50번째 손님 (소요시간 : 16분)

총 탑승 승객 : 2 분

#강의 답변

from random import *
cnt = 0 # 총 승객 수
for i in range(1,51):
    time=randrange(5,51)
    if 5<= time <=15: #5~15분 이내의 손님(매칭 성공), 탑승 승객 수 증가 처리.
        print("[0] {0}번째 손님 (소요시간 : {1}분)".format(i,time)) 
        cnt += 1
    else: #(매칭 실패)
        print("[ ] {0}번째 손님 (소요시간 : {1}분)".format(i,time))
print("총 탑승 승객 : {} 분".format(cnt))

함수

def open_account():
    print("새로운 계좌가 생성되었습니다.")

open_account()

#전달값과 반환값

def deposit(balance, money): #입금 함수
    print("입금이 완료되었습니다. 잔액은 {0} 원입니다".format(balance + money))
    return balance + money

def withdraw(balance, money): #출금
    if balance >= money: #잔액이 출금보다 많으면
        print("출금이 완료되었습니다. 잔액은 {0} 원입니다.".format(balance - money))
        return balance - money
    else:
        print("출금이 완료되지 않았습니다. 잔액은 {0} 원입니다.".format(balance))
        return balance

def withdraw_night(balance, money): #저녁에 출금
    commission = 100 # 수수료 100원
    return commission, balance - money - commission

balance = 0 # 잔액
balance = deposit(balance, 1000)
print(balance)
# balance = withdraw(balance, 2000)
# balance = withdraw(balance, 500)
commission, balance = withdraw_night(balance,500)
print("수수료 {0} 원이며, 잔액은 {1} 원입니다.".format(commission,balance))

기본값 설정

def profile(name, age, main_lang):
    print("이름 : {0}\t나이 : {1}\t주 사용 언어: {2}"\
          .format(name,age,main_lang ))

profile("유재석", 20, "파이썬")
profile("김태호",25, "자바")

# 같은 학교 같은 학년 같은 반 같은 수업. --> 기본값 활용

def profile(name, age=17, main_lang="파이썬"):
    print("이름 : {0}\t나이 : {1}\t주 사용 언어: {2}"\
          .format(name,age,main_lang ))
    
profile("유재석")
profile("김태호")

# 키워드를 이용한 함수 호출

def profile(name, age, main_lang):
    print(name, age, main_lang)

profile(name="유재석",main_lang="파이썬", age = 20)
profile(main_lang="자바",name="김태호", age = 25)

가변인자

def profile(name, age, lang1,lang2,lang3,lang4,lang5):
    print("이름 : {0}\t 나이 : {1}\t".format(name,age), end=" ")  #줄바꿈을 하지 않기 위해 끝에 end = " " 삽입한다.
    print(lang1,lang2,lang3,lang4,lang5)

profile("유재석", 20, "python", "Java", "C","C++","C#")
profile("김태호", 25, "Kotlin", "Swift", "","","")

#여기서 유재석에 다른 언어를 추가 하고 싶으면 위에 함수까지 건드려야 함 이를 방지하기 위해 가변인자를 사용한다.

def profile(name, age, *language):
    print("이름 : {0}\t 나이 : {1}\t".format(name,age), end=" ")
    for lang in language:
        print(lang, end=" ")
        print() #줄바꿈 하기위해 삽입.

profile("유재석", 20, "python", "Java", "C","C++","C#", "JavaScript")
profile("김태호", 25, "Kotlin", "Swift")

지역변수와 전역변수

gun = 10 

def checkpoint(soldiers): #경계근무
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))

print("전체 총 : {0}".format(gun))
checkpoint(2) # 2명이 경계 근무 나감
print("남은 총 : {0}".format(gun))

#이렇게 하면 checkpoint 내에서 만들어진 gun 함수가 할당이 되지 않아서 오류가 생김(초기화가 안돼 있어서) 그래서 gun을 지역변수로 안으로 넣어줘야함

gun = 10 

def checkpoint(soldiers): #경계근무
    global gun # 전역 공간에 있는 gun 사용
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))

print("전체 총 : {0}".format(gun))
checkpoint(2) # 2명이 경계 근무 나감
print("남은 총 : {0}".format(gun))



gun = 10 

def checkpoint(soldiers): #경계근무
    global gun # 전역 공간에 있는 gun 사용
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))

def checkpoint_ret(gun, soldiers):
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))
    return gun  #return  함수로 불러옴.

print("전체 총 : {0}".format(gun))
checkpoint(2) # 2명이 경계 근무 나감

gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}".format(gun))

Quiz.5

  • 표준 체중 : 각 개인의 키에 적당한 체중

(성별에 따른 공식)
남자 : 키 (m) x 키 (m) x 22

조건 1 : 표준 체중은 별도의 함수 내에서 계산
함수명 : std_weight
전달값 : 키(height), 성별 (gender)
조건 2 : 표준 체중은 소수점 둘째자리까지 표시

(출력 예제)
키 175cm 남자의 표준 체중은 67.38kg 입니다.

def std_weight(height, gender): # 키 m 단위 (실수), 성별 : "남자" / "여자"
    if gender == "남자":
        return height * height * 22
    else:
        return height * height * 21
    
height = 175 # cm 단위
gender = "남자"
weight = round(std_weight(height / 100, gender), 2)
print("키 {0}cm {1}의 표준 체중은 {2}kg 입니다.".format(height,gender,weight))

출처 - 나도코딩(https://www.youtube.com/watch?v=kWiCuklohdY&t=6685s)

profile
안녕하세요.

0개의 댓글

관련 채용 정보