2017년 4월 30일 일요일

Project Euler - 001

Project Euler - 001

사이트

문제

영문
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
한글
10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다.
1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요?

내가 푼 답안1

lst = []    # 배수를 저장하기 위한 리스트 생성 
for x in range(11000):
    if x % 3 == 0 or x % 5 == 0:
        lst.append(x) # 리스트에 하나씩 추가 
#print(lst) 
#s = sum(lst) 
print("1부터 1,000까지의 3과 5의 배수의 합 : "sum(lst))

내가 푼 답안2

# 방법2 
s = 0
for x in range(11000):
    if x % 3 == 0 or x % 5 == 0:
        s += x
print("1부터 1,000까지의 3과 5의 배수의 합 : "s)
#Project_Euler #프로젝트_오일러 #python3 #question1

2017년 4월 29일 토요일

python - multiplication table

python - multiplication table

# Multiplication table - Multiplication table output according to user input 
def gugu(dan) :
    # print("입력하신 %d 단의 구구단 입니다." % dan) 
    print("Output Multiplication table : %d" % dan)
    for x in range(110) :
        gugu = dan * x
        print("%d * %d = %d" %(danxgugu))
# dan = int(input("출력하고자 하는 구구단의 단수를 숫자로 입력해 주세요. : ")) 
dan = int(input("Enter the number of input multiplication tables you want to output. : "))
gugu(dan)
#python3 #multiplication_table

2017년 4월 28일 금요일

싱크대가 막혔어요~

얼마전 있언던 일을 요약함.

발단

싱크대가 막혔다.
잘 사용하다 요 근래 물이 안내려가는 일이 종종 발생했다.
그러다 결국 물이 아예 내려갈 생각을 안한다.
뚫어 뻥이 있긴 했지만 화장실용을 싱크대에 사용할 수 없었다.
머리를 쥐어 뜯기 시작했다.
설거지는 해야하고 물은 내려가질 않으니 빠른 조치가 필요했다.

전개

처음엔 1회용 비닐팩을 뚫어 뻥 대신 사용할 생각을 했다.
비닐에 입으로 바람을 불어 넣고, 뒤집어 배수구에 대고 비닐을 꾹 눌러 배수대 구멍으로 바람을 집어 넣었다.
몇 번 하니 물이 잘 내려갔다.
임시 방편으로 괜찮은 방법이었다.
그리고 나서 싱크대 뚫어 뻥을 검색하니 그런 제품이 있긴 하더라.
참 사람들 머리 좋단 말야..ㅎㅎ
그리고 하루도 채 걸리지 않아 또 물이 막히기 시작했다.
비닐로 하려니 너무 힘들어 다른 방안을 모색하기 시작했다.
그냥 인터넷으로 뚫어 뻥을 주문 할 수도 있지만, 다음 날이나 되어야 도착하니 너무 오래 걸리기에 일단 대책을 다시금 강구했다.

해결

집안 이리저리 둘러보다보니 다 먹고 버릴려고 둔 1.8L 짜리 음료수 병이 보였다.
오..잘하면 되겠다 싶어 그걸 이용해 보았다.
생각보다 이게 효과가 좋았다.
비닐보다 이게 효과가 짱임~
뚫어 뻥 대신 급하게 사용하기엔 비닐보다 음료수 병이 쵝오임~

추가

계속 물이 막히니 결국 원인을 밝히기로 했음.(왜 이전엔 안그랬냐 하면...귀찮아서..ㅎㅎㅎㅎㅎㅎㅎ.ㅠㅠ)
싱크대 위에서 부터 싱크대 바닥까지...(하수구 입구까지)
빙 둘러서 보다보니, 싱크대 연결부위가 예전에 공사하면서 길이가 맞지않아 잘라낸 부위에 테이프를 이용해 연결해 놨었는데, 그 부분에서 문제가 발생했었던 거였다.
결국 싱크대 호스를 따로 사와서 이전에 있던 호스를 떼어 버리고, 새 호스로 갈아넣었더니 만사 OK 였다.

결론

그냥 물이 잘 안내려가면 싱크대 연결호스나 배수구부터 보세요.
싱크대 뚫어 뻥은 다 먹고 남은 음료수 병이 최고임.
돈 많이 들여 뚫어 뻥 구입 말고 맛있는 음료수도 마시고 일회용 뚫어 뻥으로 사용하세요~~
#싱크대_막힘 #뚫어_뻥 #음료수_병 #생활의_지혜

2017년 4월 24일 월요일

python art - turtle(20170424)


python source

import turtle as t
angle = 66
color = ['yellow', 'white', 'green']
c_len = len(color)
t.bgcolor("black")
t.speed(0)
for x in range(200):
    c = x % c_len
    t.forward(x)
    t.color(color[c])
    t.left(angle)

2017년 4월 22일 토요일

python - sum

python - sum() funtion

일단 기본 문법

sum(iterable[start])
#구글 번역
Return the sum of a start value (default: 0) plus an iterable of numbers
(start값 (기본값 : 0)과 반복 가능한 숫자의 합을 반환합니다.)

일단 사용법

a = [1,2,3]
sum(a)
6 # = 1 + 2 + 3 
이렇게 연속적으로 나타나는 숫자들(list, tuple, dict)의 각 요소들의 합을 구해 주는 함수이다.
거기에 start parameters(default = 0)이 추가된다면 start 항목을 더해주고 시작한다고 한다.
a = [1,2,3]
sum(a10)
16 # = 10 + 1 + 2 + 3 

문제 발생

그런데 여기서 리스트안의 리스트가 들어가면서 문제가 발생했다.
하...이게 어려운게...죄다 영어라 어디 물어볼데가 마땅찮았다.
a = [[1,2,3],[4,5,6]]
sum(a)
 
Traceback (most recent call last):
  File ""line 1in <module>
    sum(a)
TypeErrorunsupported operand type(s) for +'int' and 'list'
이렇게 리스트 안에 리스트가 들어가는 경우 list 와 'int' 의 타입이 맞지 않는다고 오류를 뿜어낸다.
타입문제를 해결하기위해 오늘의 유머에 질문글을 올리고 많은 답변을 받았다.

해결 과정

답변을 보면
a = [[1,2,3],[4,5,6]]
sum(a[])
[1, 2, 3, 4, 5, 6]
이렇게 하라고 나오는데 왜 start 부분에 빈 리스트를 넣어주는지 이해가 가지 않았다.
친절한 답변으로 stackoverflow 글을 보고 대충 이해를 하게 되었다.
python 에 기본적으로 들어있는 sum() 함수를 아래처럼 생각하면 된다.
def sum(values, start = 0):
    total = start
    for value in values:
        total = total + value
    return total
여기서 보면, start 는 더해줄 숫자가 올수도 있고, list, tuple, dict 의 type이 올 수도 있다는 것이다.
즉 start라는 인수를 데이터가 현재 가진 type 으로, 반환값을 담을 type 정도로 생각하고, 그 type에 하나씩 채워 나간다 라고 생각하는 것이다.(start 값은 반환값과 합계되는 항목에 대한 type 정의)

간단한 예

import random as r
from collections import Counter
 
num = []
num = [r.sample(range(113),5) for i in range(10)]
 
print("랜덤수 : "num)
랜덤수 :  [[2, 4, 5, 8, 10], [1, 7, 3, 5, 12], [11, 9, 4, 10, 6], [9, 3, 2, 1, 8], [10, 8, 2, 9, 7], [5, 1, 2, 4, 6], [10, 9, 7, 4, 11], [10, 1, 3, 8, 5], [2, 12, 10, 6, 7], [4, 5, 2, 6, 7]]
 
print("랜덤수의 묶음 : "sum(num[]))
랜덤수의 합 :  [2, 4, 5, 8, 10, 1, 7, 3, 5, 12, 11, 9, 4, 10, 6, 9, 3, 2, 1, 8, 10, 8, 2, 9, 7, 5, 1, 2, 4, 6, 10, 9, 7, 4, 11, 10, 1, 3, 8, 5, 2, 12, 10, 6, 7, 4, 5, 2, 6, 7]
참고사이트
#python3 #sum #함수 #iterable #start #stackoverflow #오늘의유머 #오유 #collections # Counter