점프투파이썬 연습문제

ㅎㅎ·2021년 5월 17일
0

Python

목록 보기
2/27



점프투파이썬 연습문제



📌 내 풀이 모음


2장 연습문제

1.

#딕트로 풀기

dic = {"국어":80, "영어":75, "수학":55}
  
#리스트로 바꾸기
a = list(dic.values()) 
print(sum(a) / 3)

2.

n = int(input())

if n % 2 == 0:
    print("짝수")
else:
    print("홀수")

3.

number = "881120-1068234"

yyyymmdd = number[:6]
num = number[7:]
print(yyyymmdd)  # 881120 출력
print(num)       # 1068234 출력

4.

pin = "881120-1068234"
print(pin[7:8])

5.

a = "a:b:c:d"
b = a.replace(":","#")
print(b)

6.

a = [1,3,5,4,2]

a.sort(reverse=True) # 내림차순
print(a)

7.

arr = ['Life', 'is', 'too', 'short']

#내 코드 
for i in arr:
    print(i, end=" ")

#join함수 사용하기
# 단어 사이사이에 공백 넣어주기 
res =  " ".join(arr)
print(res)

8.

a = (1,2,3)

b = (4,)

print(a+b)

10.

a = {'A':90, 'B':80, 'C':70}

b =a.pop("B")
print(b)
print(a) #"B"값은 삭제된 상태

11.

a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]

b =set(a)
print(b)

12.

>>> a = b =[1,2,3]
>>> a[1]=4
>>> b
[1, 4, 3]

➡️ b도 변함. a와 b 변수는 모두 동일한 [1, 2, 3]이라는 리스트 객체를 가리키고 있기 때문



3장 연습문제

2.

#1부터 1000까지의 자연수 중 3의 배수의 합 구하기
sum = 0
n = 0
while (n < 1000):
    n = n+1
    if n % 3 == 0: # 3의 배수
        sum = sum + n
print(sum) 

3.

#while사용하기 
n = 0 
while 1:
    n = n+1
    print("*" * n)
    if n == 5:
        break

4.

for i in range(1,101):
    print(i)

5.

a = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]

#풀이1
sum=sum(a) # 총 합

n = 0
for i in a:
    n = n+1
print(sum/n)

#풀이2,,
total = 0
for i in a:
    total = total + i 

avg = total / len(a)
print(avg)

6.

numbers = [1, 2, 3, 4, 5]
result = []
for n in numbers:
    if n % 2 == 1:
        result.append(n*2)
# 위 코드를 리스트 내포 사용해 만들기

number=[1,2,3,4,5]
res = [n*2 for n in number if n % 2 == 1]
print(res)

4장 연습문제

1.

#홀수인가? is odd?
def is_odd(n):
    if n % 2 == 0:
        return False
    else:
        return True
        
#람다사용
is_odd = lambda n : True if n % 2 == 1 else False

2.

#입력으로 들어노는 모든 수의 평균 값
def sum_all(*args): #모아서 튜플로 만들어줌
    res = 0
    for i in args:
       res = res + i
    return res / len(args)    

a = sum_all(20,30,30)
print(a)

3.

input1 = int(input("첫번째 숫자를 입력하세요:"))
input2 = int(input("두번째 숫자를 입력하세요:"))

total = input1 + input2
print("두 수의 합은 %s 입니다" % total)

4.

print("you" "need" "python")
print("you"+"need"+"python")
print("you", "need", "python")
# 얘만 다름 -> ,는 띄어쓰기를 해줌.
print("".join(["you", "need", "python"]))

5.

f1 = open("test.txt", 'w') #읽기모드
f1.write("Life is too short")
f1.close() # 닫아줘야함

f2 = open("test.txt", 'r')
print(f2.read())
f2.close() #닫아줘여함.

6.

user_input = input("입력:")

f = open('test.txt', 'a') # 내용을 후에 추가하기 위해 'a'를 사용
f.write(user_input)
f.write("\n")# 입력된 내용을 줄 단위로 구분하기 위해 줄 바꿈 문자 삽입
f.close()


7.

f = open('test.txt', 'r')
body = f.read() #문자열로 가져오기
f.close() # 닫기

body = body.replace('java', 'python') #바꾸기

f = open('test.txt', 'w') # 쓰기모드로 열었기 때문에 이미 존재하던 파일이 모두 사라진다
f.write(body) #쓰기 
f.close()
#문자열로 replace사용해보기
str = """Life is too short
you need java"""

a = str.replace("java","python")
print(a)

5장 연습문제

1.

# 기존 클래스 써보기
class Calculator:
    def __init__(self):  # 생성자 , self에 cal
        self.value = 0 # cal.value?

    def add(self, val): #cal, 20
        #self.value += val
        self.value = self.value + val # 0 = 0+20?
        # cal.value = cal.value  + 20

cal = Calculator() # cal이라는 객체 생성
cal.add(20) # val = 20

#출력하기
print(cal.value) # 객체 변수
# 문제 풀이
class Calculator:
    def __init__(self):
        self.value = 0

    def add(self, val):
        self.value += val

class UpgrageCalculator(Calculator): # 상속
    def minus(self, val):
        #self.value -= val
        self.value = self.value - val

cal = UpgrageCalculator() # 객체만들기
cal.add(10) #  상속을 받아서 Calulator() 클래스 사용가능 , 10이 들어가서 0 + 10 = 10(self.value)인 상태
cal.minus(7) # 10 - 7 = 3 

print(cal.value) # 3

2.


# 객체변수 value가 100 이상의 값을 가질 수 없도록 제한하는 클래스 만들기
class Calculator:
    def __init__(self):
        self.value = 0

    def add(self, val):
        self.value += val

class MaxLimitCalculator(Calculator): # 상속
    def add(self,val): #오버라이딩 : 부모 클래스 메서드를 동일한 이름으로 다시 만드는 것
        self.value += val # 50 
        if self.value > 100:
            self.value = 100

#실행 
cal = MaxLimitCalculator()
cal.add(50) # 50 더하기 # 오버라이딩하면 오버라이딩한 메서드 호출!
cal.add(60) # 60 더하기

print(cal.value) # 100 출력
 #왜 50, 60 이 따로 출력되지 않는것이지,,??

3.

a = all([1, 2, abs(-3)-3])
print(a)

➡️ abs(-3)은 -3의 절댓값이므로 3이 되어 all([1, 2, 0])이 되고, 리스트의 요솟값중 0이 있기 때문에 all 내장 함수의 결과는 False가 된다.

a = chr(ord('a')) == 'a'
print(a)

➡️ a의 유니코드를 구하고 다시 chr로 문자로 바껴서 a가 된다.

4.

# filter,lamda 이용하기 

a = list(filter(lambda x: x > 0, [1, -2, 3, -5, 8, -3]))
print(a)

5.

a =int("0xea",16) # 16진수로 표현된 "0xea"를 10진수로 돌려줌
print(a)

6.

#map,lambda 이용

a = list(map(lambda x: x * 3, [1,2,3,4]))
print(a)

7.

arr = [-8, 2, 7, 5, -3, 5, 0, 1]

a = max(arr)
b = min(arr)

print(a+b)

8.

a = 17/3
print(round(a,4))

9.

import sys

num = sys.argv[1:] # 파일 이름 제외
res = 0
for i in num:
    res = res + int(i) # 하나씩 더하기
print(res)
>>> import os
>>> os.chdir("/Users/princesong/Desktop/Algorithm/python/mymod") # 원하는 경로로 이동하기
>>> os.getcwd() # 잘 이동했는지 확인
'/Users/princesong/Desktop/Algorithm/python/mymod'
>>> res = os.popen("ls") # ls 명령어써서 디렉토리에 있는 파일들(결괏값) 보여주기
>>> print(res.read())
argv_test.py
dst.txt
pp.py
src.txt
test.txt

11.

>>> from glob import glob
>>> glob("*.txt")

12.

>>> time.strftime("%Y/%m/%d %H:%M:%S")
'2021/05/26 00:55:43'
# 년, 월, 일, 시, 분, 초

13.

import random

arr = []
for i in range(6):
    a = random.randint(1,45)
    arr.append(a)
print(arr)

0개의 댓글