반응형
SMALL

'프로그래밍언어'에 해당되는 글 19건

반응형
LIST
반응형
SMALL

open내장함수로 조금더 심화적으로 단어장을 만들었다. 영어, 한국어를 입력하면 자동으로 vocabulary.txt에 기록되게끔 만들어봤다. 코드는 생각외로 간단하다.


out_file = open("vocabulary.txt", "w", encoding="utf-8")
q = 0

while True:
english_word = input("영어 단어를 입력하세요: ")
if english_word == "q":
break
korean_meaning = input("한국어 뜻을 입력하세요: ")
out_file.write("%s: %s\n" % (english_word, korean_meaning))
if korean_meaning == "q":
break
out_file.close()

while True문을 돌려서 변수를 만들어서 돌리면 된다. 그리고 q를 누르면 자연스럽게 종료가 된다. 주의할점은 습관처럼 사용될 수도 있는데 파일을 한번 열었으면 close 명령어로 닫아주는게 좋다. 저 위에 코드가 실행되면 결과는 다음과 같다.



영어단어들을 입력하고 q를 눌러주면 종료가 된다. 그리고 txt에 이렇게 기록되있으면 정상이다.



처음엔 어렵게 생각했었는데 코드를 짜고보니 역시 파이썬은 간단하다 라는 공식이 성립되는 것 같았다. 파이썬 말고도 C, java로도 충분히 생각하고 짤 수 있으니 다른 언어로도 짜보길 권장한다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

코딩에 빠진 닭  (0) 2017.08.15
필린드롬  (0) 2017.08.13
주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
블로그 이미지

만년필석사

,
반응형
SMALL

이름만 들어봐도 참 재밌다. 이건 txt파일을 파이참으로 가져와서 프로그램을 구성해야 했다. 나도 처음엔 encoding부분때문에 많이 헤맸는데 구글링으로 고치고 잘 실행이 되게 해놨다. 기본적으로 파이썬에서는 내가 저장한 파일을 어떻게 불러와서 쓸 것인지에 대한 개념이 잡혀야 이 문제를 해결할 수 있다. 문제의 핵심은 1~12월까지 일 매출 평균을 구하는 것이다.  일단 코드는 다음과 같다.


in_line = open("chicken.txt", "r", encoding="utf-8")
sum = 0
day = 0

for line in in_line:
data = line.strip().split(": ")
amount = int(data[1])
sum += amount # 일 매출을 더해준다.
day += 1 # 일 수 카운트

print(sum // day)
sum = sum + 1
print(line)

chickin.txt라는 파일을 저장해서 읽기전용으로 열겠다라는 명령문을 써줬다. 파이썬에선 open 내장함수를 써서 열어주면된다. 결과는 다음과 같다.



일매출합계는 위와같고 평균은 아래와 같다. 결국 이 문제 핵심은 open 내장함수를 어떻게 사용해서 txt파일을 오픈하고 그에 맞춰서 코딩해볼것인지가 관건인 것이었다. 생각보다 재밌는 문제였다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

단어장만들기  (0) 2017.08.15
필린드롬  (0) 2017.08.13
주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
블로그 이미지

만년필석사

,
반응형
SMALL

이것도 리스트, 문자열을 확실히 이해하고 있어야 풀 수 있다. 필린드롬이란 처음과 끝의 단어가 똑같다는 걸 의미한다. 예를 들자면 토마토, kayak 뭐 이런것들을 들 수 있다. 끝과 끝이 같다. 코드는 다음과 같다.


def is_palindrome(word):
list_word = list(word) //word를 리스트로 변환
for i in range(len(list_word) // 2):// 한쌍이라도 일치하지 않으면 바로 끝내버린다.
if list_word[i] == list_word[len(list_word) - i - 1]:
continue
else:
return False
return True

print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))

저 위의 코드를 실행시키면 다음과 같다.


끝과 끝이 일치하면 true가 나오고 그렇지 않은 글자는 false가 나온다. 꽤 재밌는 알고리즘이었다. 전체적으로 for문이나 return 리스트, 문자열을 이해하고 있어야 풀 수 있는 문제들이었다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

단어장만들기  (0) 2017.08.15
코딩에 빠진 닭  (0) 2017.08.15
주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
블로그 이미지

만년필석사

,
반응형
SMALL

이것또한 형변환과 길이에 대해 얼마나 잘 이해하고 있는지를 보여주는 알고리즘이다. 사실 이건 좀 힘들게 풀었다.. 뒤에자리 가리기가 내 생각만큼 잘 되지 않았다. 코드는 다음과 같다.


def mask_security_number(security_number): //비밀번호 함수 정의
num_list = list(security_number) // security번호를 list로 변환해준다.
for i in range(1, 5): // 1~5번째까지 num_list길이에서 하나씩 빼준다.
num_list[len(num_list) - i] = "*"

total = ""
for i in range(len(num_list)):
total += num_list[i]
return (total) //리스트를 문자열로 복구시켜줘서 결과값을 낸다.



print(mask_security_number("880720-1234567"))
print(mask_security_number("8807201234567"))
print(mask_security_number("930124-7654321"))
print(mask_security_number("9301247654321"))
print(mask_security_number("761214-2357111"))
print(mask_security_number("7612142357111"))



위의 코드의 결과는 다음과 같다.



결과값에서 뒤에 4자리수만 잘 가려짐을 볼 수 있다. 좀 더 가리고 싶으면 for문을 수정해줘서 가려주면 된다. list

와 문자열의 이해도가 있어야 풀 수 있는 문제였다.



반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

코딩에 빠진 닭  (0) 2017.08.15
필린드롬  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
블로그 이미지

만년필석사

,
반응형
SMALL

말그대로 자리수의 합 구하기 알고리즘이다. 생각보다 엄청 간단하다. 필자는 1~1000까지 자리수 합을 구해봤다. 코드는 다음과 같다. 


def sum_digit(num):
num = str(num) //num의 형변환
sum = 0
for i in range(len(num)): //각자리수의 합을 구하는 for문
sum = sum + int(num[i])
return sum

total = 0
for digit in range(1, 1001): //1~1000까지의 합을 정의해주는 for문이다.
total = total + sum_digit(digit)

print(total)

일단 num의 형변환을 먼저 시켜주고 for문을 넣어서 각 자리수의 합을 구해준다. 정답은 13501이다. 형변환의 개념에대해 얼마나 잘 이해하고 있는지, for문의 특성을 얼마나 잘 이해하고 있는지를 보여주는 알고리즘인 것 같다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

필린드롬  (0) 2017.08.13
주민등록번호 가리기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
환전 프로그램  (0) 2017.07.23
블로그 이미지

만년필석사

,
반응형
SMALL

피타고라스의 정리는 중학교때부터 참 많이 들어봤던 정리이다. 3^2+4^2 = 5^5 이러한 정리를 피타고라스 정리라고 했다. 이것을 파이썬으론 for문으로 간단히 짤 수 있다. 코드는 다음과 같다.


for a in range(1, 333):// 1~333까지 반복한다.
for b in range(a + 1, 500): // 마지막 333에 1을 더해 500까지 반복해준다.
c = 1000 - a - b // 1000에다가 a,b구한값을 빼준다.
if a * a + b * b == c * c: //그리고 앞서말한 피타고라스 정리를 정의해주고
print(a * b * c) // 출력해준다.


처음에 어떻게 짤까 좀 고민을 많이 했었다. for문으로 어떻게 돌릴것인지 출력은 어떤식으로 할것인지 생각을 좀 해봤었던 거 같다.

저 코드를 실행시키면 다음과 같이 결과값이 잘 출력됨을 볼 수 있다.




그리고 저 위 코드 말고 또 하나의 코드를 제시해주자면 다음과 같다.


for a in range(1, 333):
for b in range(a + 1, 500):
c = 1000 - a - b
a < b < c and c < 500 // a<b<c 이 순으로 되어야 하며 c는 500이하여야 한다.
if c ** 2 == a ** 2 + b ** 2:
print(a * b * c)

저렇게도 짜봤지만 결과는 똑같았다. 피타고라스 정의는 여러가지 형태로도 짤 수 있다.(단지 코드가 좀 효율적인지 아닌지

를 잘 판단해야 한다. 간혹 비효율적으로 짠 코드들이 있는데 보면 무슨말인지 모를때가 있다.) 저 두 제시한 코드 이외에도

또 다른 코드로도 짤 수 있으니 그건 본인이 생각해보면 될 것 같다.


반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
환전 프로그램  (0) 2017.07.23
온도변환프로그램  (0) 2017.07.23
블로그 이미지

만년필석사

,
반응형
SMALL

이 프로그램 만들려고 이틀은 고민을 해봤던거 같다. 총 62스텝정도 나왔는데 자바나 C로 짤라고 하면 100스텝은 족히 넘어간다;; 앞서 공부했던거 전부 응용해야 하는 꽤 난이도 있는 프로그램이었다.(좀 똑똑한 교수님들은 코딩의 기초를 다진다고 이거 한 번 짜보라고 분명 과제 내줬을 것이다.) 난수, 반복문, 변수들의 적절한 조화가 이루어져야 나오는 프로그램이라고 볼 수 있다. 컴퓨터가 생각한 숫자를 맞추는 건데 숫자가 맞으면 스트라이크, 숫자가 맞긴한데 위치가 틀린거면 볼이라고 판정되어 나온다. 그래서 짤 때 숫자가 저장될 공간등을 잘 생각해서 코딩해줘야 한다. 코드는 아래와 같다.


from random import randint

def generate_numbers():
# 숫자 3개를 보관할 리스트 생성
numbers = []

# 3개의 요소가 있을때까지 반복
while len(numbers) < 3:
# 새로 뽑은 수가 numbers에 없을 경우에만 추가
new_number = randint(0,9)
if new_number not in numbers:
numbers.append(new_number)


# 리스트 리턴
return numbers

# 정답 뽑기
ANSWER = generate_numbers()

# 변수 초기값 설정
tries = 0 # 시도 횟수
strike_count = 0 # 스트라이크 개수
ball_count = 0 # 볼 개수

# 번호를 모두 맞출때까지 반복
while strike_count < 3:
# 번호 3개 입력 받기
guess = []
while len(guess) < 3:
# 새로 입력한 수가 guess에 없을 경우에만 추가
new_number = int(input("%d번째 수를 입력하세요: " % (len(guess) + 1)))

# 범위를 벗어나면 설명메시지 출력
if new_number < 0 or new_number > 9:
print("0에서 9까지의 수를 입력해주세요!")
# 중복된 수를 입력하면 설명 메시지 출력
elif new_number in guess:
print("새로운 수를 입력해주세요!")
# 타당한 값이면 guess에 추가!
else:
guess.append(new_number)

# 스트라이크 볼 개수 세기
strike_count = 0 # 스트라이크 개수
ball_count = 0 # 볼 개수
i = 0 # 인덱싱 변수

while i < 3:
if guess[i] == ANSWER[i]:
strike_count = strike_count + 1
elif guess[i] in ANSWER:
ball_count = ball_count + 1
i = i + 1

print("%dS %dB" % (strike_count, ball_count))

# 시도 횟수 추가
tries = tries + 1

# 축하 메시지
print("축하합니다 %d번 만에 세 숫자의 값과 위치를 모두 맞추셨습니다." % (tries))

ㅋㅋ 친절하게 주석까지 달아놨다. 저거 짜다 종이 2장은 썼던 것 같다.(코딩의 기본은 설계) 저 코드를 실행시키면 다음과 같은 화면이 나온다.


나는 운좋게 3번만에 맞춰서 저렇게 나왔지만 안나오면 계속 입력해봐야한다-_-;; 20번만에 맞추면 20번만에 맞췄다고 아래 메시지가 뜨게 된다. 그리고 중복된 값을 입력하게 되면 중복된값이라고 다시 입력하라는 메시지가 뜰 것이다. 애초에 설계할때 그렇게 해놨다. 파이참에 저 코드 그대로 입력하면 저대로 잘 나올것이다. 난수의 활용, while문, elif문 사용법에 대해 많이 익히게 될 프로그램 일 것이다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
환전 프로그램  (0) 2017.07.23
온도변환프로그램  (0) 2017.07.23
구구단 프로그램  (0) 2017.07.12
블로그 이미지

만년필석사

,
반응형
SMALL

앞서 짜봤던 온도변환프로그램이랑 구조가 거의 비슷했기 때문에 쉽게 짤 수 있었다. return, while문을 연습해보려고 했던 거였는데 벌써 비슷한 프로그램이 2개나 나왔다..ㅋㅋ 환전 프로그램 코드는 다음과 같다.


# 원(₩)에서 달러($)로 바꿔주는 함수
def krw_to_usd(won):
return won / 1000


# 달러($)에서 엔(¥)로 바꿔주는 함수
def usd_to_jpy(dollars):
return dollars / 8


# 원(₩)으로 각각 얼마인가요?
amounts = [1000, 2000, 3000, 5000, 8000, 13000, 21000, 34000]
print("한국 화폐: " + str(amounts))

# amounts를 원(₩)에서 달러($)로 바꿔주기
i = 0
while i < 8:
amounts[i] = round(krw_to_usd(amounts[i]), 1)
i = i + 1
print("미국 화폐: " + str(amounts))

# amounts를 달러($)에서 엔(¥)으로 바꿔주기
amounts = [1000, 2000, 3000, 5000, 8000, 13000, 21000, 34000]
i = 0
while i < 8:
amounts[i] = round(usd_to_jpy(amounts[i]), 1)
i = i + 1
print("일본 화폐: " + str(amounts))

어떤가? 프로그램 구조는 거의 비슷하다. 단지 조금 더 응용해 추가했을뿐 구조자체가 바뀌고 말고 한게 한개도 없을 정도이다.

결과는 다음과 같이 나온다.



환전이 아주 잘됐음을 보여준다. 굳이 네이버 검색쳐서 환전시스템 안돌려도 내 프로그램으로 이렇게 정확하게 환산이 됨을 알 수 있다.

물론 환율이 얼만지는 그때그때 반영해 줘야겠지..ㅋㅋ


반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

피타고라스 수  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
온도변환프로그램  (0) 2017.07.23
구구단 프로그램  (0) 2017.07.12
숫자맞추기 프로그램  (0) 2017.07.12
블로그 이미지

만년필석사

,