파이썬

2024/12/11

editor9386 2024. 12. 11. 18:30

2.변수

#######프린트 구문 약간의 디테일을 첨가한
# 프린트 서식
print("안녕하세요")
print("100"+"200") #문자열 더하기 문자열은 이어쓰기
print(100+200)#정수+정수 = 300

#c언어 형식이랑 유사한
#print 문구를 풍성하게 만들어 줌


print("%d"%100)
# " %d " // 문자열 안에다가 정수를 넣을 때 사용
print("송명건의 출근시간은 %d 시간 입니다" % 2)#문자열 형식에 나중에 원하는 형식의 데이터를 넣음
print("송명건의 출근시간은",2,"시간 입니다")

#문자열 속에 숫자(정수)를 넣는다
print("송명건의 출근시간은 %d시간 입니다. 일주일엔 %d시간 입니다."%(2,10))#두개 이상의 데이터를 넣을떄는 %(, , , , )식으로 넣는다
#여기서 d는 디시멀?(십진수)의 약어


print("%d"%123)#10진수

print("%x"%123)#16진수

print("%o"%123)#8진수
# %정수 => 해당 진수로 프린트(표현) => 진수 변환

#입력데이터 변화  x = > 출력물만 위 형식에 맞게 변환된다.-> 밑에처럼 쓰고 a출력하면 456 그대로 출력
a= 456
print("%d"%a)#10진수

print("%x"%a)#16진수

print("%o"%a)#8진수

print(a)

#quiz 10진수 입력받아 #16진수 ,8진수 출력 //풍성하게
'''
a=int(input("값을 입력"))
print("입력 받은 값은 %d입니다"%a)
print("입력 받은 값은 %x입니다"%a)
print("입력 받은 값은 %o입니다"%a)
'''
#정수
##자리 확보
print("%5d"%123) #<< 출력해보면 띄워져 있음
# 5자리 미리 확보 ,  입력 받은 숫자는 오른쪽 정렬

print("%05d"%123)
# 5자리 미리 확보 , 빈칸은 0으로 채워짐, 입력 받은 숫자는 오른쪽 정렬


#실수
print("%f"%123.45)
print("7%.1f"%123.45)# 7자리 확보하고 소수점 밑 1자리 까지만 표현
print("07%.1f"%123.45)# 7자리 확보하고 소수점 밑 1자리 까지만 표현, 빈칸은 0으로 채움
#자리수 지정시 뒤에 소수점이 더있으면 반올림해서 짤림
print("07%.3f"%123.45) #소수점 밑이 0처리


#문자열
print("%s"%"python")
a= "뿅뿅"
print("동해물과 %s 백두산이 "%a)
print("동해물과 %10s 백두산이 "%a)


##문자
print("%c"%"B")
print("%c"%"벤")
print("%c"%"民")

#데이터 형 변환 format()
print("%d %5d %05d"%(123,123,123))
print("{0:d} {1:5d} {2:05d}".format(123,123,123)) #위에랑 같은출력


###이스케이프 문자(기능을 가진 문자)
print("가나다라마바사아자차카타파하")

print("가나다라마바사")
print("아자차카타파하")
#print()를 두번씀 -> 연산 2번하게되고 -> cpu 사용량 2배

print("가나다라마마마마마마마마마\n마돈돈나")#줄 바꿈(엔터)와 같은 효과
#print()를 한번씀 -> 연산 1번->cpu 사용량 1배 -> 출력물 같음 -> 효율적

print("가나다라마마마마마마마마마\t마돈돈나")#탭한것과 같은 효과

print("\\")#문자를 쓸때 \를 쓸 수도 있기 때문에 그럴때 그냥 쓰는 경우 하나만 쓰면 이스케이프 문자로 오해할 수 있으니 두개로 하는거

print("\\ \\ \\ ")#\ 세개 출력

# print("송명건은 "화성" 사람입니다.") 이렇게 하면 오류남
print("송명건은 \"화성\"사람 입니다" ) # \하나 출력과 비슷한 느낌
print('송명건은 \'화성\'사람 입니다' ) # \하나 출력과 비슷한 느낌


print("역슬래쉬는 '이스케이프' 문자 쓰기 싫어요") #쌍 따옴표로 문자열을 묶었을 경우에는 작은 따옴표로 역슬래쉬 없이 묶어서 표현가능

print('역슬래쉬는 "이스케이프" 문자 쓰기 싫어요')#작은 따옴표로 문자열을 묶었을 경우에는 쌍 따옴표로 역슬래쉬 없이 묶어서 표현가능
#교차 사용? 가능

#quiz print 구문안에 %10d , %s ,%c 이스케이프 문자
#한번에 담아봐라

print("%10d 이거 %s%c"%(123,"맞나","?"))
print("%s=%10d  %s=%s %s=%c"%("%d",123,"%s","이게맞나","%c","?"))



#변수 :값을 담아내는 그릇
#변수의 종류 (데이터 형식): 정수,실수,문자열,불(거짓, 참)

#변수 사용 할 때 주의 할 점
#1. 변수는 대소문자를 구분한다. ex) a 와 A 는 다른 변수이다
#2. 문자(한,영),숫자 ,언더바(_)를 포함 할 수 있다
#3. 변수명은 숫자로 시작할 수 없다.
#4. 예약어는 변수 이름으로 쓸수 없다 (True ,flase ,None,and,or...) 이미 프로그램에서 기능을 설정해둔 단어들


#python의 변수 특징
#변수 선언 없이 사용 가능
#한 번 선언된 변수의 데이터 형식을 바꿀 수 있다
#a= 10 => a=3.14  하면 a=3.14가됨

a= 100.123
print(type(a))
#데이터 형식 지정 없이 변수형 변환




사람 ="송명건은 사람입니다. "

print(사람)
#한글 변수명에 사용 가능

b=a
print(b)
#변수에 변수값을 넣을 수 있다.


#변수는 연산한 값을 넣을 수 있다.
c= 100+ 123456
print(c)

A=a+b+c +345
print(A)
#변수와 연산을 동시에 할 수 있다



var1=var2=var3=var4=100
print(var1)
print(var2)
print(var3)
print(var4)
#변수 여러개를 동시에 한번에 입력 할 수 있다.

#변수 자신에 값을 더해서 사용할 수 있다 (반복문 횟수 제어변수)

i=1
print(i)

i=i+2
print(i)
'''
10a = 10
print(10a)

a=10
10=a x
변수명 앞에 숫자 x 문법오류 // 순서가 변하면 안된다. 
'''


#불 대수 (단어의 첫글자 대문자!!!!)
a=True
b=False
print(type(a))
print(type(b))

print(10<9)
print(10>2)


#quiz 정수 실수 문자열 불 /// 데이터 형식 마다 2개 씩 변수 만들기
#1. 각변수 데이터 형식 출력
#2. 같은 데이터 형식 연산 결과값 출력
#3. 다른 데이터 형식 연산 결과 값 출력

a=1
b=1.1
c="안녕"
d=True

print(type(a))
print(type(b))
print(type(c))
print(type(d))

print("\na ")
print(a+a)
print(a*a)
print(a/a)
print(a-a)

print("\nb ")
print(b+b)
print(b*b)
print(b/b)
print(b-b)

print("\nc ")
print(c+c)
#print(c *c)
#print(c/c)
#print(c-c)

print("\nd ")
print(d+d)
print(d*d)
print(d/d)
print(d-d)


print("\na+n ")
print(a+b)
print(a*c)
print(a/d)
print(a-a)

print("\nb+b ")
print(b+a)
print(b*b)
#print(b/c)
#print(b-d)

print("\nc+n ")
#print(c+a)
#print(c *b)
#print(c/c)
#print(c-d)

print("\nd+n")
print(d+a)
print(d*b)
#print(d/c)
print(d-d)

#진수 표현
#컴퓨터가 진수를 저장하는 방법

#0b binary :2진수
#0x hex : 16진수
#0o oct : 8진수

print(0b110100010110)
#0b를 숫자 앞에 쓰면 숫자를 2진수로 인식해줌

print(int("110100010110",2))
#int 정수형 표현, 옵션 값을 2로 주면 2진수로 인식

print(0xAC3)
print(int("AC3",16))
#16진수 => 10진수로 변환

#bin(2진수) , hex(16진수), oct(8진수) int(10진수)
print(bin(13))
print(bin(0x13))
print(bin(0o13))
#각 진수를 2진수로 표현

print(hex(13))  # 10진수 13을 16진수로 변환
print(hex(0x13))  # 16진수 0x13을 16진수로 변환
print(hex(0o13))  # 8진수 0o13을 16진수로 변환

print(oct(13))  # 10진수 13을 8진수로 변환
print(oct(0x13))  # 16진수 0x13을 8진수로 변환
print(oct(0o13))  # 8진수 0o13을 8진수로 변환

print(int(13))  # 10진수 13을 10진수로 변환
print(int(0x13))  # 16진수 0x13을 10진수로 변환
print(int(0o13))  # 8진수 0o13을 10진수로 변환


#1. 정수의 크기의 제한이 없다
a= 123
print(type(a))

#2. 실수
a=3.14
b=3.14e5 #정규형 표현 e=10 숫자(5)는 제곱수
print(a,b)

print(a+b,a-b,a*b,a/b)

#불대수  불린 불린함수
a=True
b=False

print(type(a))
print(type(b))
print(a,b)

a=(100==200)
b=(10<100)
print(a,b)
#참 , 거짓 표현할 때 사용
#i=i+1 ->for

#4. 문자열
#문자열 양쪽 끝에 "" ,''를 써야한다

print("정보보안  '모의해킹/침해대응' 전무가 취업캠프")
print("정보보안  '모의해킹/침해대응' 전무가 취업캠프")

a='"황상빈\n김민영"'
b="'황상빈\n김민영'"
c="""송명건은
화성사람 입니다 군포아님"""

print(a,b)
print(c)

 

 

 

 

3.연산자

#산술 연산자
# = 대입(등호아님),  a =10 == a<=10
#+,-,*,/ 사칙연산
#//(몫)  , %(나머지) ,  **(제곱)

a=5 ; b=3; c=2
# ; 한줄에 여러 명령어 쓸 때  사용

print(a+b,a-b,a*b,a/b)
print(a//b,a%b,a**b)
print(a+b+c, a*b/c)

s1,s2,s3 = "100","100.12","9999999"
#""큰따 문자열 숫자는 문자열로 취급당하고 있음

print(int(s1)+1,float(s2)+1,int(s3)+1)
print(s1,s2,s3)

#문자열 암호화 -> 문자 -> 숫자 -> 알고리즘연산 -> 문자열


##대입 연산자
# +=  i = i+1 => i +=1
# -=    i = i-1 => i -=1
# *=    i = i*1 => i *=1
# /=    i = i/1 => i /=1


a=10
a+=5;print(a)
a-=5;print(a)
a*=5;print(a)
a/=5;print(a)

a//=5;print(a)
a%=5;print(a)
a**=5;print(a)



#quiz 동전  교환 프로그램
#money = int(input("동전으로 바꾸실 금액"))
#오백원 ?개
#백원 ?개
#오십원 ?
#십원 ?개
#못바꾼 돈 ? 개
'''
money = int(input("동전으로 바꾸실 금액"))
print("오백원 %d개"%int(money/500))
money%=500
print("백원 %d개"%int(money/100))
money%=100
print("오십원 %d개"%int(money/50))
money%=50
print("십원 %d개"%int(money/10))
money%=10
print("못바꾼돈%d원 "%int(money))
'''
#관계 연산자
#== (두 값이 같다)!=(두 값이 다르다)
# >,< <=,>=
#관계 연산자의 출력물은 True False (불 대수)
a=100; b=200
print(a==b,a!=b,a<b,a>b,a<=b,a>=b)


#논리 연산자
#and(둘다 만족) or(둘중 하나만 만족 ) not(결과 불대수의 반대)

a=99
print((a>100)and(a>100))
print((a>50)or(a>100))
print(not(a==100))

print(not(a==99))

 

4.조건문

 

#조건문 /선택문
#if로 명령어가 실행 될 조건을 적는다
#조건이 참일경우에 다음줄에 실행어를 입력한다
#들여쓰기!!! 조심하기!! 실행문은 들여쓰기로 인식한다

'''
if 알람시간<일어난 시간:=>조건문
    print("택시타라")->실행문
else :
    print("버스타라")

'''

a=120
if a< 100:
    print("참값!! 100보다 작네요")
    print("실행문 여러개 사용가능")
    print("갯수 제한 없음")
else :
    print("거짓값!! 100보다 큼")

print("조건문 끝")


#입력값 받아 홀수인지 짝수 인지 확인

a=int(input("숫자를 입력허시오:"))

if a%2==0 :
    print("짞수입니다")
else :
    print("홀수입니다.")


#quiz 숫자 입력 받아 -> 50 업&다운출력

a=int(input("숫자를 입력허시오:"))

if a>50 :
    print("업")
else :
    print("다운")










#학점 계산기 (조건이 여러개 일때)

학점=int(input("학점을 입력하시오"))

if 학점>=90 :
    print("A입니다")
else :
    if 학점>=80:
        print("B입니다")
    else:
        if 학점 >= 70:
            print("C입니다")
        else:
            if 학점 >= 60:
                print("D입니다")
            else :
                print("F입니다.")


#elif


학점=int(input("학점을 입력하시오"))

if 학점>=90 :
    print("A입니다")
elif 학점 >= 80 :
    print("B")
elif 학점 >= 70 :
    print("c")
elif 학점 >= 60:
    print("d")
elif 학점 >= 50 :
    print("f")



#quiz 숫자 3개 입력 받아서 가장 큰숫자 출력

a=int(input("첫번째"))
b=int(input("두번째"))
c=int(input("세번째"))

if a>b :
    if a>c :
        print("제일큰숫자는%d입니다"%a)
elif b>c :
    if b>a :
        print("제일 큰 숫자는 %d입니다"%b)
else :
    print("제일 큰 숫자는 %d입니다" % c)

###############################

#사칙연산 계산기
#연산기도 입력받아 계산
num1,num2=0,0

op=""

num1    =int(input("첫번쨰"))
op=input("연산자를 입력하시오(+-*/)")
num2    =int(input("두번째"))

if op=="+":
    print("%d + %d = %d 입니다."%(num1,num2,num1+num2))
elif op=="-":
    print("%d - %d = %d 입니다."%(num1,num2,num1-num2))
elif op=="*":
    print("%d * %d = %d 입니다."%(num1,num2,num1*num2))
elif op=="/":
    print("%d / %d = %d 입니다." % (num1, num2, num1 / num2))


#반복문 for
#수십번 , 수백번 반복되는 작업을 간단하게 반복문으로 구현 for(횟수),while(조건)

'''
형식
for 변수(i) in range(시작값, 끝값+1(몇번 반복할지) ,증가값):
    실행문 작성(들여쓰기!!

'''
#반복문 사용전
print("for문 구현 : 1번째")
print("for문 구현 : 2번째")
print("for문 구현 : 3번째")
print("for문 구현 : 4번째")
print("for문 구현 : 5번째")
print("for문 구현 : 6번째")
print("for문 구현 : 7번째")



#반복문
#0~9출력
for i in range(0,10,1):
    print(i)
print("끝")
#1~10출력
for i in range(1,11,1):
    print(i)
print("끝")
#1~10출력
for i in range(0,10,1):
    print(i+1)
print("끝")

#5~0출력
for i in range(5,-1,-1):
    print(i)

#값 연산에 활용
i=0
sum=0

for i in range(1,11,1):
    sum=sum+i
print("1부터 10 까지의 합 %d"%sum)

#quiz 123부터 543까지의 합을 짝수만 더하기

i=0
sum=0

for i in range(124,544,2):
    sum=sum+i
print("123부터 543 까지의 합 %d"%sum)

#quiz 시작값 ,끝값 입력받아서 합구하기 // 시작값이 더크면 탈락

num1=int(input("시작값"))
num2=int(input("끝값"))
sum=0
i=0
if num1>num2 :
    print("탈락")
else :
    for num1 in range(num1,num2+1,1):
        sum=sum+num1
    print("시작값+끝값=%d"%(sum))


#구구단 출력
i , dan = 0,0
dan = int(input("출력할 단은"))
for i in range(i,10,) :
    print("%d*%d=%d"%(dan,i,dan*i))

#for문 안에 for문
#주사위 2개 던질 때 경우의 수
i,k = 0,0

for i in range(1,7) :
    print("##################################")
    print("첫번째 주사위 눈 : %d"%i)
    for k in range(1,7) :
        print("두번째 주사위 눈 ; %d"%k)

#구구단 전체 출력
#첫번째 숫자 2~9
#두번째 숫자 1~9


i,k=0,0
for i in range(2,10) :
    print("#############%d단###########"%i)
    for k in range(1,10):
        print("%d*%d=%d"%(i,k,k*i))

#quiz 구구단 구단부터 반대로

i,k=0,0
for i in range(9,1,-1) :
    print("#############%d단###########"%i)
    for k in range(1,10) :
        print("%d*%d=%d" % (i, k, k * i))


#quiz 다이아몬드 그리기


i=0
k=0
high = int(input("높이값을입력하시오"))
high = int((high) / 3);
for i in range(1,high) :
    print(" "*(high-i),"*"*(2*i-1))
for k in range(high,0,-1) :
    print(" " * (high - k), "*" * (2*k-1))


'파이썬' 카테고리의 다른 글

2024/12/10 설치  (0) 2024.12.10