TIL-no.26 Python advanced 4

sanghun Lee·2020년 7월 11일
0

Today I Learned

목록 보기
24/66

평균과 평균보다 큰 수

입력: 첫째줄에 비교할 정수의 개수 입력, 둘째줄에 공백으로 구분하여 정수하나씩 입력
출력: 평균(소수점첫째)출력하고 공백으로 구분하여 평균보다 큰 수의 개수를 출력

이 문제를 보고 처음 든생각이 분명 더 간단한 방법이 있을 것 같은데 생각이 나지 않아서 ..
그냥 새 리스트를 만들어서 넣고 반복문으로 갯수를 뽑아내자 였다.
count기능이나 이런것들이 존재할 것 같은데 .. 찾아보아야할 것 같다.
다른문제를 찾아보니 빈 list를 만드는 것이 아닌
count 변수를 새로만들어 여기에 +=1 을시키는 방법도 있다
나는 왜 리스트로 했을까 :),,,,

n = int(input())
a = list(map(int, input().split()))
b = []
average = sum(a)/n
print("{0:.1f}".format(average), end = " ")
for i in a:
	if i > average:
		b.append(i)

print(len(b))

등차 등비수열

일단 문제 자체가 등차일지 등비일지 input 된것을 통해서 판단하라는 조건
네개의 수만들어갈 것이라는 제한된 조건이 있었다.
출력은 5번째 숫자를 요청했다.
처음에 두번째 조건만 아니더라도 List로 만들어 조건식을 통해 조건을 건 뒤에 뽑아내면 될 것 같았는데
변수를 네개로 하자니 하나씩 조건을 다 적어줘야했다.
근데 답이 아니란다 ㅇㅅㅇ..
이렇게하면 10개의 테스트 케이스중 하나가 걸려버린다.

a,b,c,d = map(int, input().split())
if b-a == c-b and c-b == d-c and d-c == b-a:
	print(int((c-b)+d))
elif b//a == c//b and c//b == d//c and d//c == b//a:
	print(int(c//b*d))

피라미드 별 출력하기

피라미드 별을 출력하는 문제이다. 예전에도 풀어본적이 있어 가르쳐준데로 2중반복문을 쓰지 않고
그냥 반복문하나에 꾸겨넣어서 풀면 될줄 알았다
나의 오만이었다..

n = int(input())

for i in range(1,n+1):
    print(' '*(n-i), '*'*(2*i-1)) 
입력이 5일때  출력되는 별의 갯수

    *
   ***
  *****
 *******
*********

내가 시도한 식으로 나온 갯수는 이렇다
아니 뭐가 다르지 여튼 이렇게 오답이되어 문제풀이를 봤다.

     *
    ***
   *****
  *******
 *********

문제에서 요구하는것은 이중반복문에 조건을 걸어 풀어내는 것이었는데
아래와 같이 각각의 조건을 걸었다.
일단 Reversed를 이용하여 Range 를 n-1 부터 받아왔고 피라미드의 반을 받아왔다.

n = int(input())

for i in range(n):
    for j in reversed(range(n)):
        if j > i:
            print(' ', end = "")
        else:
            print('*', end = "")
    for j in range(n):
        if j < i:
            print('*', end ="")
    print()

Turtle 사용해보기

먼저 시작을 위해 아래의 코드를 import해와야한다.

import turtle as t
t.shape('turtle')

아래와 같은명령어로 명령을 실행할 수 있다.

명령어를 이용하여 n 각형 만들기(반복문사용)

import turtle as t

n = int(input())

t.shape('turtle')
for i in range(n):
	t.forward(100)
    t.right(360/n)
t.mainloop()# idle에서는 사용하지 않아도 화면창이 유지되나 vscode에서는 미작성시 금방 화면창 사라짐

이렇게 공통된 부분을 일반화 하여 원하는 결과를 얻어내는 과정이 프로그래밍이며
컴퓨테이셔널 씽킹이라고 한다
그렇단다..

Turtle로 만든 다각형에 색 채우기

여기도 html canvas에 쓰이던 방식의 코드가 있다.
예제를 보자
위에 작성하였던 다각형 만들기에 begin_fill과 end_fill그리고 t.color('color')를 추가한것이다.

import turtle as t

n = int(input())
t.shape('turtle')
t.color('blue')
t.begin_fill() # 색칠시작
for i in range(n):
	t.forward(100)
    t.right(360/n)
t.end_fill() #색칠 끝
t.mainloop()

아래는 작성된 예제의 출력물이다.

터틀의 shape에는 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic' 등을 지정하여 여러 가지 터틀 모양을 사용할 수 있습니다. 특히, t.shape()와 같이 shape를 그대로 호출하면 현재 모양을 알아낼 수 있습니다.

라고 한다.

turtle로 다각형 만들기 2

길이와 갯수를 입력하여 n각 별을 만들어 주는 코드이다.
별로 특별한것이 없으니 자세한 이야기는 pass

import turtle as t

n, line = map(int,input().split())
t.shape('turtle')
t.speed('fastest')

for i in range(n):
    t.forward(line)
    t.right((360/n)*2)
    t.forward(line)
    t.left(360/n)
t.mainloop()
profile
알고리즘 풀이를 담은 블로그입니다.

0개의 댓글