코딩테스트/Python 개념

[Python] 파이썬 기초 개념

박소민 2022. 2. 4. 15:54
파이썬 입출력
  • sep=seperator(분리기, 분류기호)
  • print(?,?,sep=':') 를 사용하면 : 기호를 사이에 두고 값 출력
  • 입력받을 때 .split("기호") : 기호를 사이에 두고 입력 받음 ex)시:분
  • 공백없이 두 문자 붙여쓸 때 print(a,b,sep='')로 함
a,b=input().split(":") 
print(a,b,sep=':')

 

진수 표현
  • 10진수: 변수 그대로
  • 16진수: %x
  • 8진수: %o
  • 문자(a)를 16진수로 표현: a=int(a,16)
#변수 그대로 쓰면 10진수
#10진수를 16진수로 출력
a=input()
a=int(a)
print('%x'%a)

#대문자 16진수로 출력
print('%X'%a)

#여러개 출력
c=int(input(),16)
for i in range(1,16):
  print('%X'%c,'*%X'%i,'=%X'%(c*i),sep='')
'''
print("%X*%X=%X"%(c,i,c*i)) 로 한번에 가능
'''
#16진수를 8진수로 출력
a=input()
a=int(a,16) #a(문자)를 16진수로 인식 -> 정수로
print('%o'%a)
'''
입력값 문자이면
a=int(input(),16) 으로 한번에 가능 
'''

 

문자 ↔ 숫자 변환
  • 아스키코드 or 유니코드를 10진수로 변환할 때 → ord(): 어떤 문자순서위치
    • ord(c): 문자 c를 10진수로 변환한 값
    • 어떤 문자의 다음 문자를 구할 때: 문자를 10진수로 변환(ord) 후 +1 → 다시 문자로 변환(chr)
  •  10진수를 아스키코드 or 유니코드 변환할 때 → chr()
    • chr(c): c에 저장된 정수 값을 유니코드로 변경
#문자 입력받음 -> 숫자로 변환
n=ord(input()) 
print(n)

#숫자 입력받음(int처리) -> 문자로 변환
n=input()
n=int(n)
print(chr(n))

#어떤 문자의 다음문자를 구할 때 순서(정수)+1 
#입력받은 문자를 10진수로 변환한 후 +1한 값을 다시 문자로 변경
c=input()
c=ord(c)
print(chr(c+1))

 

소수점
  • format( 실수 , '.nf' ) 함수
    • 소수점 n번째 자리까지의 정확도(0도 다 씀)로 반올림
    • .0으로 끝나더라도 .00으로 출력
    • 반드시 소수점지켜서 출력하려면 format함수 쓰기 
  • round( 실수, n ) 함수 
    • 소수점 n번째 자리에서 반올림
    • 단, 소수점이 .0 인경우 자릿수 지키지 못함
#format함수
f=input()
f=float(f)
print(format(f,'.2f'))

f1,f2=input().split()
f1=float(f1)
f2=float(f2)
print(format(f1/f2,'.3f'))

#round함수
f=float(input())
print(round(f,2))

 

비트시프트(bit-shift) 연산
  • n<<a 하면 n을 2**a로 곱한 값
  • n>>a 하면 n을 2**a로 나눈 값
n=int(input())
print(n<<2) 
#결과 값= n에 2**2(=4) 곱한 값

 

비트 단위 논리 연산
  • 정수를 비트단위로 참/거짓 바꿔서 출력: ~a
  • n & m: 비트단위로 한칸씩 비교해서 같을땐 1 / 다르면 0 계산해서 새로운 값 출력 (=and)
  • n | m: 비트단위로 한칸씩 비교해서 1이 하나라도 있으면 1  (=or)
  • n ^ m: 비트단위로 한칸씩 비교해서 하나라도 0이면 1 (둘다 1일때만 0)  (=xor)
a=int(input())
print(~a)

a,b= input().split()
print(int(a)&int(b))
print(int(a)|int(b))
print(int(a)^int(b))

 

연산자
  • 비교 연산자: >,<,>=,<=,==,!= ...
    • 바로 출력하면 True/ False로 출력
  • bool 연산자
    • bool()을 이용해서 입력된 식/값을 평가
    • 숫자일 경우 0은 False, 나머지는 다 True
    • bool() 결과 값을 반대로 출력 → bool(not a) 
    • 입력받을때 바로 bool() 함수 적용 가능  → n=bool(int(input()))
    • 둘다 참일 경우만 참 : and
    • 하나라도 참이면 참 : or
a,b=input().split()
print(int(a)<int(b))
print(int(a)==int(b))
print(int(a)<=int(b))
print(int(a)!=int(b))

#a=3 b=5
#결과
True
False
True
True
#bool 연산자
n=int(input())
print(bool(n))
print(bool(not n))

#입력받을때 바로 bool() 함수 적용 가능
n=bool(int(input()))
print(not n)

#둘다 참일 경우만 참 : and
a,b=input().split()
print(bool(int(a)) and bool(int(b)))

#하나라도 참이면 참 : or
a,b=input().split()
print(bool(int(a)) or bool(int(b)))

a,b=input().split()
print(bool(int(a)) != bool(int(b)))

#둘다 False 일때만 True
a,b=input().split()
print(bool(not(bool(int(a)) or bool(int(b)))))

#또 다른 풀이
a=bool(int(a))
b=bool(int(b))
print(a==False and b==False)

 

3항 연산
  • x if (조건식) else y
  • 조건식이 True 면 x 출력, False면 y출력
a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
A=(a if(a<=b) else b)
B=(A if(A<=c) else c)
print(B)