본문 바로가기

programming/Gukbi

국비 교육 97일차 - python

728x90
반응형

스프링까지 자바를 끝내고 파이썬을 배우기 시작했다. 일단은 파이썬을 까는것부터 시작해서 간단한 문법 사항들부터 배웠다. 

 

'''
Created on 2021. 5. 17.

@author: user
'''
from pickle import TRUE
print("Hello Python")
#주석 (한줄 주석)
'''
여러줄 주석
데이터형이 존재하지 않는다 (자동인식)
변수
변수명=값
a=10

파이썬 
1) 특화 (주로 사용처)

2) 웹 사이트 (기본:S
'''
a=10
print(type(a))
'''
1. 변수
2. 연산자
3. 제어문
=======================
4. 함수
=======================
5. 라이브러리
6. 클래스(객체지향) => DTO, VO
=======================
7. 데이터베이스
9. 웹 (장고) : 게시판, 목록, 상세보기, 어드민페이지

=> 자료형(데이터형), 기본문법
    자료형 (자바: 정수형, 실수형, 문자형, 논리형, 참조형(배열,클래스))
    
'''
a=10
print(type(a))
b=10.5
print(type(b))
c=True;
print(type(c))
d="Python"
print(type(d))
print(float(a))
print(bool(1))

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

 주석처리 하는법 부터 자료형 확인까지

 

for문 쓰는법 역시 배웠다. print()함수는 자동으로 줄바꿈되는 것까지 확인

 

'''
Created on 2021. 5. 17.

=====       참조형      ======= (자바:배열, 클래스)
1000번지     ====>     100
=====                 =======
    a                   1000번지  
@author: user
'''
a=100
#출력
print(a)
# a는 10이다
# 옵션 (다른 데이터형 연결) %d(정수형), %f(실수형), %s(문자형)
print("a는 %d이다" %a)
b=10
c=20.0
d="홍길동"
print("b=%d, c=%f, d=%s" %(b,c,d))
print("b:{},c:{},d:{}".format(b,c,d))
print(f"b는 {b}, c는 {c} d는 {d}")
#sql=f"SELECT * FROM emp WHERE empno={empno}"
print(id(b),id(c),id(d)) #id=주소값
# 같은 값을 가지고 있는 변수는 주소값이 같다
a1=3
b1=3
print(id(a1),id(b1))
b1=5
print(a1 is b1)
c1="Hello"
print("c1:%s" %c1,end="Python\n")
#end => \t, \n
#end, sep(구분자)
print("a:%d" %a, "b:%f" %b, "c:%s" %c,sep=",")

 id를 쓰면 주소값을 확인할 수 있다. 자료형은 각각 %d, %f %s로 나타내 준다. 

 

''''
print('이름 입력:')
#사용자 입력값을 받는다
name=input()
#받은 데이터 출력 
print(name, '님 반갑습니다')
'''

num=input("정수 입력:")
print(f"num={num}")
#문자열 """는 멀티라인 """ 
data="""hello
hello
hello"""
print(data)   

 멀티라인을 나타낼때는 """ """ 안에 문자열을 입력해준다. (pre)와 같다고 생각하면 될듯 

'''
    연산자
    1) 산술연산자
    +,-,*,/,% => / (정수/정수=실수)
    // (정수//정수=정수), **(제곱) 10**2 => 10^2 => 100
    문자열+문자열(결합) 문자열+정수(X), 문자열+실수(X)
                      str(정수)        str(실수)
    2) 비교연산자
    ==, !=, <, >, <=, >=
    3) 논리연산자
        &&(X)=>and, ||(X) => or, !(X) => not(부정)
    4) 비트/쉬프트
        &(직렬), |(병렬), ^ <<, >> : 아두이노 (파이썬으로 연결)
    5) 대입연산자
     = (치환연산자)
    6) 복합대입연산자
     +=, -=, *=, /=, %=, **=, //=
'''
'''
#치환연산자(대입연산자) : =
v1=3; #int v1=3
#복수의 주소에 저장
v1=v2=v3=5 
print(v1,v2,v3,end="\t") #end는 default "\n"
a,b=10,20
print(f"a={a},b={b}")
c,d=b,a
print(f"c={c},d={d}")
'''
# 산술연산자
a=10
b=3
print(a+b)

print('홍'+'길'+'동')
print('홍길동'*10)
print(bool(1),bool(-1),bool(0),bool(3)) #0이 아닌 모든 수는 True, 0일 경우만 False
print(bool(0.0),bool(0.1),bool(10.5),bool(0.3)) #0.0이 아닌 모든 실수는 True,0.0일 경우에만 False

 연산자는 이전에 배운것과 거의 동일하지만 하나 다른게 있다면 / 연산자는 정수끼리 나눴을때 실수가 나오고, 

// 연산자는 정수끼리 나왔을때 정수가 나온다는 점이다. 

 

문자열에 * 연산자도 사용이 가능하다 (자바에서는 안된다)

 

'''
    변수 설정 : 변수명=값 (일반 데이터형을 사용하지 않는다) => 값이 저장되어 있는 주소를 기억한다 (모든 변수가 참조형)
                    설정된 변수는 메모리 주소를 가지고 있다. 
    연산자 : 형변환 정수(int), 실수(float), 문자열(str)
            //, **
            &&=>and, ||=>or, !=>not
'''
import random
#조건문
rand=random.randrange(1, 101) #1~100 사이의 난수 발생
'''
print(f"난수값={rand}")

if rand%2==0:
    print(f"{rand}는(은) 짝수입니다")
print("프로그램 종료") #if문 소속문장이 아니다

print("난수값은 %d" %rand)

if rand%2==0:
    print("%d는 짝수입니다" %rand)
else:
    print("%d는 홀수입니다" %rand)
    
#다중 조건문
if rand>=90:
    print("A학점")
elif rand>=80:
    print("B학점")
elif rand>=70:
    print("C학점")
elif rand>=60:
    print("D학점")
else:
    print("F학점")
#if => 항상 수행
if True:
    print("항상 수행")
    
money=1000
age=25
if money>=500:
    item="사과"
    if(age<=30):
        msg="new"
    else:
        msg="old"
print(item,msg)    
'''   
com=random.randrange(0, 3)
print("컴퓨터 난수:%d" %com)

user=int(input("0(가위),1(바위),2(보) 가위바위보:"))

if com==0:
    print("컴퓨터:가위")
    if user==0:
        print("사용자:가위")
        print("비겼다")
    elif user==1:
        print("사용자:바위")
        print("사용자 Win!!")
    elif user==2:
        print("사용자:보")
        print("컴퓨터 Win!")
if com==1:
    print("컴퓨터:바위")
    if user==0:
        print("사용자:가위")
        print("컴퓨터 Win!")
    elif user==1:
        print("사용자:바위")
        print("비겼다")
    elif user==2:
        print("사용자:보")
        print("사용자 Win!!")
if com==2:
    print("컴퓨터:보")
    if user==0:
        print("사용자:가위")
        print("사용자 Win!!")
    elif user==1:
        print("사용자:바위")
        print("컴퓨터 Win!")
    elif user==2:
        print("사용자:보")
        print("비겼다")    

 조건문 사용 역시 자바와 비슷하다. 한가지 다른 점은 들여쓰기를 기준으로 블록안에 있는지 없는지의 효과를 내기 때문에 이를 유의해서 사용해야한다. 

 

'''
while 조건: => 조건이 True일 경우만 수행 => 반복횟수가 지정이 안된 경우
    실행문장 1
    실행문장 2
'''
# 1~10까지 출력하는 While
i=1
while i<=10:
    print("i=%d" %i)
    i=i+1
print("================")
i=1
while i<=10:
    if(i%2==0):
        print("i=%d" %i)
    i+=1
print("================")
i=1
while i<=10:
    if(i%2!=0):
        print(f"i={i}")
    i+=1
print("======누적합=======")

sum=0
i=1
while i<=100:
    sum+=i
    i+=1
print(f"1~100까지 누적합:{sum}")

#1~100 짝수의 합, 홀수의 합, 전체 합
i=1
sum=odd=even=0
while i<=100:
    if i%2==0:
        even+=i
    else: 
        odd+=i    
    sum+=i
    i+=1
print(f"1~100까지 짝수 합:{even}")
print(f"1~100까지 홀수 합:{odd}")
print(f"1~100까지 총합:{sum}")

 while문 사용도 간단하다

 

 

'''
    1. 문자열 형
    1) 문자들을 표현할 수 있는 자료형
    2) ' ', " " 사이에 들어가 있는 문자들
        "Hello Python", 'Hello Python'
        123456789101112
    3) index번호 0부터 시작
    4) 중간의 일부를 수정할 수 없다

msg='Hello Python'
msg1="안녕 파이썬"
print(msg)
print(msg1)
print(msg[0]) #H

# 슬라이싱
for s in msg:
    print(s,end="")
print('',end="\n")
ss="홍길동입니다"
print(ss)

for i in range(1,10):
    for j in range(2,10):
        print(f"{j}*{i}={j*i}",end="\t")
    print('')
'''
ss='ABCDEFGHIJ'
# 문자열 중에 원하는 데이터만 추출
# 문자열 자체는 for으로 출력할 수 있다
print(f"ss={ss}") #전체 출력
print(f"ss[0]={ss[0]}") #처음 문자를 가져올때
print(f"ss[-1]={ss[-1]}") #마지막 문자를 가져올때
print(f"ss[0:3]={ss[0:3]}") #처음부터 3글자를 가지고 온다
print(f"ss[1:]={ss[1:]}") #두번째 문자부터 나머지 전체를 출력
print(f"ss[0:3]={ss[0:3:2]}") #0,1,2 (2번은 건너 뛰어라)
print(f"ss[:]={ss[:]}") #전체

# 문자열의 주요 함수
# 파이썬을 이용한 웹에 필요한 기능 (장고) ==> (장고 <==>스프링) 연결 융합 ===> Vue.js, Ajax
# 챗봇(미정)
'''
    변환
    = upper : 대문자 변환
    = lower : 소문자 변환
'''
data="Hello Python"
print(data.upper())
print(data.lower())
data=data.upper()
print(data.rstrip()) #trim과 같음
print(data.swapcase()) #소문자 => 대문자, 대문자 => 소문자 hELLO

 문자열을 다루는 문법. 사실 정처기에서 나온 것들인데 이제서야 배우다니 좀 아쉬웠다. 먼저 배웠으면 실기를 확실하게 붙었을지 모르겠다

 

# list=>ArrayList => 기본은 배열
# [] => 중복된 데이터 허용, index번호를 가지고 있다 (순서)
# 예) nums=[1,2,3,4,5,6...]
#    names=["","","","",""] => for
#    오라클 데이터 연습 => 함수
from ctypes.test.test_pickling import name
names=["jeno","renjun","chenle","js25","fullsun"]
# print
print(names)
''''
print(names[0])
print(names[1])
print(names[2])
print(names[3])
print(names[4])


for name in names:
    print(name)
'''
print(f"인원:{len(names)}")
# 추가
names.append("mark") # 마지막에 추가
names.insert(1, "dream") # 지정된 위치에 추가
print(names)
# 삭제
names.remove("mark")
print(names)
# 수정
names.extend(["curry", "arrioe"]) #여러개를 동시에 등록
print(names)
names.reverse()
print(names)
num=[3,5,1,2,4]
print(num)
num.sort(reverse=True)
print(num)

 문자열 배열 사용법

append, insert로 추가가 가능하며, sort도 사용이 가능하다 

 

일단 여기까지 정리하고 다음시간에는 더 심화된 문법을 배우지 않을까 싶다

728x90
반응형