개발자로 가는길 :: '파이썬' 태그의 글 목록
반응형

파이썬에 해당하는 글
반응형
10

입문자를 위한 웹/소프트웨어 개발 스택 선택 가이드: 올바른 첫걸음을 위한 조언

개발/AI 관련 테스트중..|2024. 10. 27. 12:44
728x90
반응형

개발을 처음 시작하는 입문자에게 있어, 어떤 기술 스택을 선택할지는 큰 고민입니다. 수많은 옵션이 존재하고, 빠르게 변화하는 기술 환경 속에서 입문자는 어디서부터 시작해야 할지 막막할 수 있죠. 이 글에서는 입문자들이 본인에게 맞는 개발 스택을 선택하는 데 도움을 주고, 기본적으로 알아야 할 요소들을 소개하려고 합니다.

1. 웹 개발 vs 소프트웨어 개발의 차이점

  • 웹 개발은 주로 웹사이트나 웹 애플리케이션을 만드는 작업으로, 프론트엔드(사용자 인터페이스)와 백엔드(서버 및 데이터베이스 관리)로 나뉩니다.
  • 소프트웨어 개발은 데스크탑 애플리케이션, 모바일 앱, 임베디드 소프트웨어 등 웹이 아닌 다양한 환경에서 동작하는 프로그램을 만듭니다.
  • 자신의 목표와 흥미에 따라 웹 개발과 소프트웨어 개발 중 하나를 선택하는 것이 중요합니다.

2. 입문자에게 추천하는 웹 개발 스택

  • 프론트엔드: HTML, CSS, JavaScript는 웹 개발의 기초입니다. 그다음에는 React, Vue, 또는 Svelte 같은 프레임워크를 고려할 수 있습니다.
  • 백엔드: Node.js(자바스크립트), Django(파이썬), Ruby on Rails(루비) 등 다양한 선택지가 있지만, 입문자에게는 친숙한 문법의 Node.jsExpress를 추천합니다.
  • 데이터베이스: SQL 계열(MySQL, PostgreSQL)과 NoSQL 계열(MongoDB)이 있으며, 프로젝트 성격에 따라 선택합니다. 입문자에게는 학습 자료가 많은 MySQL이나 MongoDB가 좋습니다.

3. 입문자에게 추천하는 소프트웨어 개발 스택

  • 언어 선택: Python은 배우기 쉽고 다재다능하며, C#은 윈도우 환경에서 강력한 지원을 받기 때문에 입문자에게 좋은 선택입니다.
  • 프레임워크: Python에는 Tkinter나 PyQt와 같은 GUI 프레임워크가 있고, C#에는 Windows Forms나 WPF가 있어 데스크탑 애플리케이션을 쉽게 개발할 수 있습니다.
  • 개발 도구: Visual Studio는 C# 개발에, Visual Studio Code는 파이썬 등 다양한 언어 개발에 적합한 도구입니다.

4. 스택 선택 시 고려해야 할 요소

  • 프로젝트 목표: 자신이 만들고 싶은 애플리케이션이 무엇인지 명확하게 정의합니다.
  • 성장 가능성: 선택한 스택이 다른 기술로 확장되기 쉽고, 커뮤니티와 학습 자료가 많은지 확인합니다.
  • 학습 난이도: 입문자가 배우기 쉬운지, 문법이나 개발 환경이 간단한지를 고려해야 합니다.

5. 결론: 작은 프로젝트로 시작해보세요!

  • 입문자는 복잡한 스택보다는 심플한 스택으로 작은 프로젝트를 시작하는 것이 좋습니다. 예를 들어, 간단한 To-Do 웹 애플리케이션이나 데스크탑 메모 애플리케이션을 만들어 보세요.
  • 무엇보다 중요한 것은 꾸준히 코딩하며 경험을 쌓는 것입니다.
728x90
반응형

댓글()

나도코딩 Python 자율학습단2기 2주차 -2

728x90
반응형

 

8장부터 시작

 

표준 입력받기 input()

 

abc  = input("입력해주세요") 
#입력값 abc 변수로 이동
#기본적으로 string 으로 저장
#형 변환시 
#예시)
abc = int(input("입력해주세요"))
#int 형태로 변수에 저장
 

 

표준 출력시 유용한 기능

print("파이썬","자바") #파이썬 자바
print("파이썬"+"자바") #파이썬자바
print("파이썬","자바",sep=" , ") #파이썬, 자바
print("파이썬","자바",sep=" , " , end=" ? ") #파이썬, 자바 ? / end 따로 지정하지 않으면 기본적으로 줄바꿈

import sys
print("파이썬","자바",file=sys.stdout) #표준출력 ( 로그남김 )
print("파이썬","자바",file=sys.stderr) #오류발생시 관련 내용 출력

#좌우 정렬
.ljust()  #좌정렬.   .rjust() #우정렬
ljust(8)  #8칸 확보 좌정렬
just(3)   #3칸 확보 우정렬

#빈칸 0으로 채우기 .zfill( )
zfill(3) #3자리수중 빈칸은 0으로 채움 
 

 

format()함수

#.format()함수
print("{0}".format(500)) #{0}위치에 500출력
print("{0: >10}".format(500)) #빈칸으로두기 , 오른쪽정렬 , 10칸확보
print("{0: >+10}".format(500)) #빈칸으로두기,오른쪽정렬,+기호붙이기,10칸확보 / 음수도 적용가능
print("{0:_<10}".format(500)) #빈칸을 _ 로 채우기 , 왼쪽정렬 , 공간 10칸 확보
print("{0:,}".format(5000)) #3자리마다 쉼표찍기
print("{0:,+}".format(500)) #+기호 붙이고 3자리마다 쉼표찍기 / 음수도 적용가능
print("{0: < +20,}".format(5000)) #좌로정렬 , 20칸확보 , + 기호 붙이기 , 3자리마다 쉼표찍기
print("{0.f}".format(5/3)) # 5/3 float형으로 표시
print("{0.f2}".format(5/3)) # 5/3 을 소수 2자리까지 표시
 

파일 입출력

#파일 열기
open("파일명" , "모드" , encoding="인코딩 형식")
#모드
r -> 읽기 / 파일내용 읽기
w ->쓰기 / 파일내용쓰기 / 같은이름의 파일이 있으면 해당 파일을 덮어써서 기존내용삭제
a ->이어쓰기 / 파일내용쓰기 / 같은이름의 파일이 있으면 기존 내용 끝에 이어씀

#예제
score_file = open("score.txt" , "w" , encoding="utf8" )
print('수학 : 0 ' , file=score_file) #score.txt 파일에 내용 쓰기
print('영어 : 50 ', file=score_file)  
score_file.close() #score.txt 파일 닫기

# write 모드는 자동줄바꿈이 없음 \n 추가
# read()  #파일 통째로 불러와 읽음
# readline() #한줄씩 읽어옴
#readlines() #줄단위로 나뉜 리스트 형태로 한꺼번에 읽어오기
 

 

8.7 실습문제 : 보고서 파일만들기

 

 

728x90
반응형

댓글()

나도코딩 Python 자율학습단 2기 2주차-1

728x90
반응형

 

본 내용은 네이버카페 코딩자율학습단 에도 동일한 내용이 업로드 됨을 알려드립니다.

 

7장 함수

 

-사용자 정의 함수

def 함수명():
    실행한 문장1
    실행할 문장2
    실행할 문장3
    . . . 
 

직접 함수를 정의하여 호출 할 수 있다.

 

함수명을 지을때는 이름을 보고 어떤 동작을 하는지 유추할 수 있게 해야 한다.

 

 

-전달값과 반환값

def 함수명(전달값1,전달값2....)
    실행할 문장1
    실행할 문장2
    . . .
    return 반환값1
 

7.5 실습문제 : 표준체중 구하기

 

#7.5 표준 체중 구하기

#표준 체중 구하는 프로그램 작성
#남자 : 키(m) x 키(m) x 22  , 여자 : 키(m) x 키(m) x 21
#1. 함수명 std_weight / 전달값 키(height) 성별(gender)
#2. 실행결과 소수점 이하 둘째 자리까지

def std_weight(height,gender):
    if gender == "남자" :
        result_man = height*height*22
        print(f"키 {height*100}cm {gender}의 표준 체중은{round(result_man,2)}kg 입니다.")
    else:
        result_female = height*height*21
        print(f"키 {height*100}cm {gender}의 표준 체중은{round(result_female,2)}kg 입니다.")
        

std_weight(1.72,"여자")
 

 

.

 

7장 셀프체크

#7장 셀프체크
#미세먼지 수치를 입력받아 대기질 상태를 출력
#1. get_air_quality 라는 이름의 함수
#2. 이 함수는 전달값으로 미세먼지 수치를 입력받는다.
#4. 0~30 좋음 , 31~80 보통 , 81~150 나쁨 , 151이상 매우나쁨

def get_air_quality(figure):
    if figure<=30 :
        return "좋음"
    elif figure <= 80:
        return "보통"
    elif figure <=150:
        return "나쁨"
    else:
        return "매우나쁨"
    

print(get_air_quality(15))
print(get_air_quality(85))

 
 

오히려 앞에 장들보다 이해하기 쉽고 재밌는 단원이었습니다.

 

728x90
반응형

댓글()

나도코딩 Python 자율학습단 2기 1주차 - 4

728x90
반응형

 

어제 4.6 실습문제 하나 남겨놓고 잠들었네요.

일단 만들긴 했고 결과값은 나오는데 제대로 만든건진 모르겠어요

아직 솔루션은 보지 못했습니다 ㅠ

본 자율학습 내용은 네이버카페 코딩 자율학습단에도 동일한 내용이 업로드 됨을 알려드립니다.

 

5장 자료구조

-리스트 : 리스트명=[값1,값2,값3...... ] 인덱스 위치니 0부터 시작

 

특정 요소 인덱스 위치 출력 : print(리스트명.index() )

인덱스 위치로 특정요소 출력 : print(리스트명[인덱스] )

 

리스트 추가 : append(추가할 값) -> 리스트의 가장 마지막에 추가

insert(인덱스,삽입할 값) -> 익덱스 위치에 값을 넣음

 

리스트 삭제 : 리스트명.pop() -> 리스트 가장 마지막부터 삭제

리스트명.clear() -> 리스트 전체를 삭제

 

리스트 정렬하기 : sort() , sorted() - > 기본적으로 오름차순 , 내림차순은 sort(reverse=True) 로 표현

다시 뒤집으려면 sort(reverse)

sort() 같은 리스트 내의 값을 변경 < > sorted() 정렬된 새로운 리스트를 만듦

 

리스트에는 각종 자료형을 섞어서 넣을수 있다.

 

리스트 합치기: 리스트1.extend(리스트2) < 리스트1 뒤에 리스트2를 확장

 

- 딕셔너리 : key와 value 가 한쌍 / 딕셔너리명 = {key: value , key2:value2.......}

key는 문자열로도 사용 가능하다.

 

print(딕셔너리명[key]) -> value 값 출력 / print(딕셔너리명.get(key) ) -> value 값 출력

대괄호 출력문은 잘못된 key 가 들어가면 오류->종료 / get() 사용시 잘못된 키값 들어가면 다시 시도가능

get(key, default=None) 값이 없으면 None 으로 나옴 ( 사용자 문자열로 변경 가능 )

 

print(key in 딕셔너리명) -> 해당 키에 value 가 있는지 검사 ( True or False)

print(딕셔너리명.keys() ) -> value 가 있는 key를 출력해줌

 

값 추가 및 변경: 딕셔너리명[key] = value (key에 값이 없으면 추가 , 값이 있으면 변경)

 

- 튜플 : 리스트와 유사하지만 값의 수정 , 추가 , 삭제드이 불가능 , 순서 못바꿈 / 리스트보다 속도가 빠름

튜플명 = ( 값1 , 값2 .... ) 으로 표현

똑같이 인덱스로 값을 확인 할 수 있다.

 

- 세트 : 집합을 표시 / 세트명 = {값1 , 값2 ......} // set()으로도 정의 가능 set( [값1,값2........] )

값에 중복값을 허용하지 않음 (중복값 있을시 한개만 저장)

 

add() 함수로 값 추가 가능 -> 세트명. add(값)

remove() 함수로 값 제거 가능 -> 세트명.remove(값)

 

집합이므로

세트명1 & 세트명2 <두개 세트의 교집합 ( 세트명1. intersection(세트명2) 로 표현가능 )

세트명1 | 세트명2 <두개 세트의 합집합 ( 세트명1.union(세트명2) 로 표현 가능 )

세트명1 - 세트명2 <두개 세트의 차집합 (세트명1.difference(세트명2) 로 표현 가능 )

 

세트는 출력 순서를 보장하지 않는다.

 

자료구조들 간 type 변환이 가능하다.

- 예) 세트명 = list(세트명) - 세트를 리스트로 변환 ,

튜플명 = set(튜플명) - 튜플을 세트로 변환

리스트명 = set(리스트명) -리스트를 세트로 변환

 

5.6 실습문제

 

당첨자에서 치킨을 제외시킬 방법을 한참 고민해서 풀었는데

솔루션은 4명을 뽑고 인덱스 0부터 차례대로 순서 매기는거 였네요 ㅠ

 

 

 
#5.6 실습문제 : 당첨자 뽑기
#당첨자 총 4명 / 1명은 치킨 쿠폰 , 3명은 커피쿠폰
from random import *

#1. 아이디 1~20
user = range(1,21)
#리스트로 변환
user = list(user)

print(f"{user}\n 무작위로 섞습니다") # 유저 1~20 확인 성공

#2. 무작위로 추첨하되 중복은 허용하지 않는다.

#3. random module 의 shuffle() , sample() 활용

shuffle(user)
print(f"{user}\n섞었습니다.")
chicken = sample(user,1)

print(f"-- 당첨자 발표 -- \n치킨 당첨자 : {chicken}")
chicken = set(chicken)
user = set(user)
# 두리스트를 세트로 변환해 User 에서 Chicken 제외
user = list(user-chicken)

coffee = sample(user,3)
print(f"커피 당첨자 : {coffee} \n-- 축하합니다! --")
728x90
반응형

댓글()

나도코딩 자율학습단2기 1주차 -3

728x90
반응형

 

,제주에서 지낸지 몇년 되다보니 친구들이 내려와 호출하는 경우가 많습니다.

소주를 조금 먹었는데 오늘 공부를 덜 했다는 죄책감에 술기운이 있어도 한번이라도 더 책을 보는게

개발자 전향을 희망하는 저에겐 조금더 나을것 같다는 생각이 들었습니다.

 

본 학습 내용은 네이버카페 코딩 자율학습단에도 같이 올라감을 알려드려요

 

4장 문자열 부터 시작합니다.

 

앞선 학습내용에서도 밝혔지만. 자바공부 , 이전에 파이썬 공부 초반을 좀 했던 경험이 있어.

아는 부분은 빠르게 훑고 지나가는 방식으로 공부 합니다.

 

- 문자열 출력도 동일하게 print ( " 문자열 " ) / 파이썬의 출력문은 다른언어에 비해 압도적으로 편한것 같습니다

 

- 슬라이싱 / 따로 함수를 사용할 필요없이 문자열이 들어있는 / 변수명[시작인덱스 : 종료인덱스] 시작인덱스 이상 종료인덱스 미만

 

-변수명[:종료인덱스] 처음부터 종료인덱스 미만 / 변수명[시작인덱스:] 시작인덱스부터 끝까지 / 변수명[:] 처음부터 끝까지 슬라이싱

 

- 함수로 문자열 처리 

lower() 문자열 소문자로 변환 / upper() 문자열 대문자로 변환 / 

isLower() 문자열이 소문자인지 확인 / isUpper 문자열이 대문자인지 확인

replace() 문자열 바꾸기 / index() 찾는 문자열의 인덱스 ( 없으면 err 발생)

find() 찾는 문자열의 인덱스(없으면 -1 return) / count() 문자열이 나온 횟수

- 문자열 포멧팅

서로 다른 타입을 함께 출력하려면 형변환을 거쳐 "문자열" + 변수명 + "문자열" 식으로 출력을 해야하는데

포멧팅으로 출력하게 되면 

age = 37

print("나는 %d 살 입니다" %age) 

이런식으로 표시할 수 있다 (변수명 대신 %입력값 가능)

%d 정수 / %f 실수 / %c 문자 / %s 문자열

 

- format() 함수 사용하기

print("나는{}입니다}.format("이름"') // 나는이름입니다

print("나는{0}이고 너는{1}입니다").format("이름" , "성함") // 나는 이름이고 너는 성함입니다.

// 인덱스는 0부터 첫번째!

 

- 앗 드디어 내가 좋아하는 f-string 이 나왔다.

printt(f"내나이는{변수명}입니다") 

 

f-string 은 만능인데 다른 print문을 사용하는 이유가 뭘까..? 궁금함 질문게시판에 올려봐야겠다.

 

오늘은 너무 피곤해서 여기까지 하겠습니다

익일 4.6실습문제부터 시작.

 

 

728x90
반응형

댓글()

3/5 Python 공부 day 3 / day 100

개발/파이썬|2023. 3. 5. 23:19
728x90
반응형

오늘 느낀점

코드를 간결하게 쓸수있게 알고리즘을 그려보자

 

참고 : 아스키코드 아트 https://ascii.co.uk/art

 

ASCII ART

 

ascii.co.uk

여기서 korea 를 선택해서 진행했는데 동해가 sea of japan 으로 표기되어있어 수정했다. 관리자 이메일 찾아서 수정 요청을 해봐야겠다.

#Day3 Exam1
#입력받은 값이 홀수인지 , 짝수인지 판별
num = int(input("숫자를 입력해주세요 >"))
if num%2==0:
    print("짝수입니다!")
else:
    print("홀수입니다!")

#Day3 Exam2
#Bmi calculatpr v2.0
height = float(input("키를 입력해주세요(m 단위) >"))
weight = float(input("몸무게를 입력해주세요(kg단위) >"))
bmi = round(weight / height ** 2)

if bmi < 18.5 :
    print("저체중 입니다")
elif bmi <25 :
    print("정상체중 입니다")
elif bmi <30:
    print("과체중 입니다")
elif bmi <35:
    print("비만 입니다")
else:
    print("고도비만 입니다")

#Day3 Exam3
#윤년 계산하기
#윤년 조건 /년도%4 =0 , 년도%400=0 윤년 / 년도%4=0 ,년도%100=0,년도%400 = 0 윤년/
#평년 조건 /년도%4 =0 , 년도%100=0 년도%400!=0 /년도%4 !=0

years = int(input("년도를 입력해주세요 > "))

# 본인 작성 코드
# if years%4==0:
#     if years%100==0:
#         if years%400==0:
#             print("윤년입니다")
# elif years%4==0:
#     if years%100!=0:
#         if years%400==0:
#             print("윤년입니다")
# elif years%4!=0:
#     print("평년입니다")
# elif years%4==0:
#     if years%100==0:
#         if years%400!=0:
#             print("평년입니다")
# else:
#     print("평년입니다")

#정답코드

if years % 4 == 0:
    if years % 100== 0:
        if years % 400 == 0:
            print("윤년입니다")
        else:
            print("평년입니다")
    else:
        print("윤년입니다")            
else:
    print("평년입니다")
        
        
# #Day3 Exam4
# #피자가격 계산하기 feat.토핑추가
# #S:$15 , M:$20, L:$25 / 페퍼로니 추가 S:+$2 M,L:+$3  / 치즈추가 +$1

# 내가 쓴 코드
# size_info = str(input("사이즈를 입력해주세요 S , M , L >> "))
# add_pepperoni = str(input("페퍼로니를 추가하시겠습니까? Y,N >> "))
# add_cheese = str(input("치즈를 추가하시겠습니까? Y,N >>"))

# bill = 0

# if size_info == "S":
#     bill +=15
#     if add_pepperoni == "Y":
#         bill += 2
#     else:
#         bill += 0
#     if add_cheese == "Y":
#         bill += 1
#     else:
#         bill += 0
#     print(f"최종가격은 ${bill} 입니다")
    
# elif size_info =="M":
#     bill +=20
#     if add_pepperoni == "Y":
#         bill += 3
#     else:
#         bill += 0
#     if add_cheese == "Y":
#         bill += 1
#     else:
#         bill += 0
#     print(f"최종가격은 ${bill} 입니다")
    
# elif size_info =="L":
#     bill +=25
#     if add_pepperoni == "Y":
#         bill += 3
#     else:
#         bill += 0
#     if add_cheese == "Y":
#         bill += 1
#     else:
#         bill += 0
#     print(f"최종가격은 ${bill} 입니다")

# 정답코드

size_info = str(input("사이즈를 입력해주세요 S , M , L >> "))
add_pepperoni = str(input("페퍼로니를 추가하시겠습니까? Y,N >> "))
add_cheese = str(input("치즈를 추가하시겠습니까? Y,N >>"))

bill = 0

if size_info == "S":
    bill += 15
elif size_info == "M":
    bill += 20
elif size_info == "L":
    bill += 25

if add_pepperoni =="Y":
    if size_info =="S":
        bill += 2
    else:
        bill += 3       
if add_cheese =="Y":
    bill+=1

print(f"최종가격은 ${bill} 입니다!")


#Day3 Exam5 번역문제로 패스함. 대충 이름을 2개 입력받고 나오는 알파벳중 특정글자가 몇개 들어있나 세어서 사랑점수를 확인한다는 내용
#Agella.lower() / 대문자를 소문자로 바꿔줌  , Agella.count("l") 알파벳중 l 이 몇개 들어가있다 세어줌 이런걸로 계산


#Day3 final project 보물섬 게임 만들기

print('''                                         {'{러시아
                                         /   '.
                                       _/     _}
    중국                           __ __}      /
                                (  `        (
                          /'\____\          /
                         :                  |
                         /                  |
                        /                 _/
                  __.-='     DPRK        /
              .-='                   .-='
          .-='                 _.--='
         (                   .'
          \=._               }
              '-._          (
                 (           '=-.
                 / 평양           \
                (_ *              \
             _.='\\                \
            ;                       }         SEA OF
YELLOW      \__         _  _      .'\         ROK
 SEA         " \_ _ . -      - . -   \
                \                     \
              ,=.\ * 서울               \
             {_.                        }
              :`{                       |
                /                       /
                }                      .
                \           ROK        |
               _]                     <_.
               ',                       /
               /                       /
               \                _.____/
                }  _____.-.--=\{ /}
                \/" ,_}   \,      `


               __,=-.
dew           {__.--'   < *보물섬*                            \n\n''')

print("보물섬 게임을 시작합니다 , 선택은 한번 뿐 이니 신중하게 결정해주세요.")
lorr = str(input("보물섬에 도착했습니다. 양갈래 길이 나오네요. 왼쪽 또는 오른쪽 선택해주세요 >> "))
if lorr == "오른쪽":
    sorw = str(input("왼쪽엔 함정이 있었네요. 잘 선택하셨습니다. 앞에 바다가 있는데 수영 또는 대기 선택해주세요 >> "))
    if sorw == "대기":
        door = str(input("파도가 거새 수영을 했다면 위험했을껍니다. 둘러보니 문이 세개가 있습니다. 빨강,노랑,파랑 문중 어떤문을 들어가시겠습니까? >>"))
        if door =="노랑":
            print("축하합니다! 보물을 발견했습니다! 당신은 부자에요!")
        else:
            print("문을 열자마자 괴물 수백마리가 튀어나와서 공격당해 사망했습니다.")
    else:
        print("바다에 뛰어들었지만 크라켄을 만나 공격당해 사망했습니다.")
else:
    print("왼쪽 길에 들어서는 순간 함정에 빠져 사망했습니다.")
728x90
반응형

댓글()