파이썬 입출력
- 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))
연산자
- 비교 연산자: >,<,>=,<=,==,!= ...
- 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)