💖 복소수형 자료구조

  • complex 함수를 사용하여 직접 생성하기:
 a = complex(2, 3)  # 2 + 3j
 b = complex(0, -1) # -j
  • 수식으로 생성하기:
c = 1 + 2j
d = 4j - 3

복소수형 자료는 실수부허수부로 이루어져 있으며, 허수부 뒤에 " j " 를 붙여서 나타냅니다. 예를 들어, 2 + 3j는 실수부가 2이고 허수부가 3인 복소수형 자료입니다. 복소수형 자료는 산술 연산도 가능합니다.

realimag은 파이썬 복소수형 자료의 속성(attribute)으로, 각각 해당 복소수형 자료의 실수부(real part)와 허수부(imaginary part)를 반환합니다.

예를 들어, z = 2 + 3j라는 복소수형 자료가 있을 때, z.real은 2를 반환하고, z.imag은 3을 반환합니다.

z = 2 + 3j
print(z.real) # 출력 결과: 2.0
print(z.imag) # 출력 결과: 3.0

🙄💭 true and false


a=True
b=False
print(a==1)  # 출력 결과: True
print(a!=1)  # 출력 결과: False
print(b==0)  # 출력 결과: True
print(b!=0)  # 출력 결과: False
  • true and false:코드에 무한루프 로직 구현할때 🙄💭

while True:
    (무한반복 실행코드)
    ...
    if 조건==True:
        break
    

💘 문자열 관계연산자

str1='chips';str2='orange'
print(str1<str2)        # 출력 결과: True


if len("apple") < len("banana"):
    print("apple is shorter than banana")
else:
    print("banana is shorter than apple")

print("chips"<"apple")  # 출력 결과: False
print('Age'<'age')      # 출력 결과: True
print('age'<'Bag')      # 출력 결과: False
print('alle'<='alla')   # 출력 결과: False
print('한글'>'english')  # 출력 결과: True

Python에서 문자열 크기 비교 연산자는 일반적으로 문자열의 사전 순서를 기반으로 :알파벳 순서(사전에서 단어가 정렬되는 순서) 비교를 수행합니다. 즉, 두 문자열이 사전에서 어떻게 정렬되는지를 비교하여 크기를 결정합니다. 예를 들어, "apple"은 "banana"보다 작지만 "ant"는 "apple"보다 크다는 것입니다.
ant < apple < banana

사전순서는 알파벳의 순서에 따라 단어를 정렬합니다. 알파벳 순서는 A, B, C, ..., Z의 순서로 구성되어 있으며, 대문자와 소문자를 구분합니다. 따라서, 대문자 A는 소문자 a보다 앞서며, Z는 a보다 앞서게 됩니다. 예를 들어, "Apple"은 "apple"보다 앞서게 됩니당.

문자열의 길이만을 기준으로 비교하는 것은 아닙니다. 문자열 길이를 비교하려면 Python의 len() 함수를 사용하여 각 문자열의 길이를 비교할 수 있습니다. 예를 들어, "apple"과 "banana"의 길이를 비교하려면 다음과 같이 하면 됩니다:

if len("apple") < len("banana"):
    print("apple is shorter than banana")
else:
    print("banana is shorter than apple")

💖 비트 연산자 (&,|,~,^,>>,<<)

#(&,|,~,^,>>,<<)
bit1=0x61  
bit2=0x62
print(hex(bit1&bit2))  # 출력 결과: 0x60
print(hex(bit1|bit2))  # 출력 결과: 0x63
print(hex(~bit1))      # 출력 결과: -0x62
print(hex(bit1^bit2))  # 출력 결과: 0x3
print(hex(bit1>>1))    # 출력 결과: 0x30
print(hex(bit1<<2))    # 출력 결과: 0x184

파이썬에서 비트 연산자는 다양한 상황에서 사용될 수 있습니다. 주로 아래와 같은 경우에 사용합니다.

  • 비트 단위로 데이터를 처리해야 하는 경우:

    이진수로 표현된 데이터를 비트 연산자를 사용하여 처리할 수 있습니다. 예를 들어, 비트 AND(&) 연산자를 사용하여 두 이진수의 각 자릿수에서 1이 모두 있는 경우에만 1을 반환하고, 그 외에는 0을 반환할 수 있습니다.

  • 암호화와 보안 분야에서 사용:
    암호화와 보안 분야에서 비트 연산자는 데이터를 암호화하고, 보안을 강화하는 데 사용됩니다. 예를 들어, 데이터를 XOR 연산자로 암호화하거나, 암호화된 데이터를 다시 복호화할 때 비트 연산자를 사용할 수 있습니다.

  • 하드웨어 제어:
    하드웨어를 제어할 때 비트 연산자를 사용하는 경우가 있습니다. 예를 들어, 특정 비트를 ON 또는 OFF 상태로 설정하여 하드웨어를 제어할 수 있습니다.

  • 게임 프로그래밍:
    게임 프로그래밍에서는 비트 연산자를 사용하여 게임 오브젝트의 위치와 상태 등을 처리할 수 있습니다. 예를 들어, 게임 오브젝트의 이동 방향을 비트 연산자를 사용하여 결정할 수 있습니다.

파이썬에서 사용하는 비트 연산자의 종류와 사용 방법은 다음과 같습니다.

(1) 비트 AND(&) 연산자: 두 비트가 모두 1인 경우에만 1을 반환합니다.

a = 0b1101
b = 0b1011
c = a & b
print(bin(c))  # 출력값: 0b1001

(2) 비트 OR(|) 연산자: 두 비트 중에 하나 이상이 1인 경우에 1을 반환합니다.

a = 0b1101
b = 0b1011
c = a | b
print(bin(c))  # 출력값: 0b1111

(3) 비트 XOR(^) 연산자: 두 비트가 서로 다른 경우에만 1을 반환합니다.

a = 0b1101
b = 0b1011
c = a ^ b
print(bin(c))  # 출력값: 0b0110

(4) 비트 NOT(~) 연산자: 모든 비트를 반전합니다. 0은 1로, 1은 0으로 변환됩니다.

a = 0b1101
b = ~a
print(bin(b))  # 출력값: -0b1110

(5) 왼쪽 시프트(<<) 연산자: 모든 비트를 왼쪽으로 이동시킵니다. 이동한 빈 자리는 0으로 채워집니다.

a = 0b1101
b = a << 2
print(bin(b))  # 출력값: 0b110100

(6) 오른쪽 시프트(>>) 연산자: 모든 비트를 오른쪽으로 이동시킵니다. 이동한 빈 자리는 원래 비트 값과 동일한 값으로 채워집니다.

a = 0b1101
b = a >> 2
print(bin(b))  # 출력값: 0b0011

비트 연산자는 주로 이진수로 표현된 데이터를 다룰 때 사용됩니다. 이진수를 다룰 때는 0b 접두어를 사용하여 이진수임을 나타냅니다. 예를 들어, 0b1101은 이진수로 13을 나타냅니다.

🙄💭 비트 연산자 <<와 >>

<<는 왼쪽 시프트(Left Shift) 연산자이며, 모든 비트를 왼쪽으로 이동시킵니다. 이동한 빈 자리는 0으로 채워집니다. 예를 들어, 0b0010 << 1 연산을 수행하면 0b0100이 됩니다.

>>는 오른쪽 시프트(Right Shift) 연산자이며, 모든 비트를 오른쪽으로 이동시킵니다. 이동한 빈 자리는 원래 비트 값과 동일한 값으로 채워집니다. 예를 들어, 0b0100 >> 1 연산을 수행하면 0b0010이 됩니다.

즉, <<와 >>의 차이점은 이동 방향이동한 빈 자리를 채우는 값입니다 ❗❗


💖 시퀀스 자료형

파이썬에서 시퀀스(Sequence) 자료형은 데이터 요소들을 일렬로 나열한 형태의 자료형입니다. 시퀀스 자료형은 다음과 같은 특징을 가집니다.

  • 인덱싱(Indexing): 각 요소에 대해 인덱스를 통해 접근할 수 있습니다. 인덱스는 0부터 시작하며, 음수 인덱스를 사용하여 끝에서부터 요소에 접근할 수 있습니다.
  • 슬라이싱(Slicing): 일부 요소들을 잘라서 가져올 수 있습니다. 슬라이싱은 시작 인덱스, 끝 인덱스, 그리고 스텝(step) 값으로 구성됩니다.
  • 연결(Concatenation): 두 개 이상의 시퀀스 자료형을 연결할 수 있습니다.+연산자 이용
    반복(Repetition): 시퀀스 자료형의 요소들을 여러 번 반복할 수 있습니다. *연산자 사용
  • 멤버체크 : in 키워드 사용 ->특정값이 시퀀스자료의 요소로 속해 있는지 확인 할수있다.
  • 길이 확인: 시퀀스 자료형의 길이(요소의 개수)를 확인할 수 있습니다.
    [ len()이용 시퀀스자료형 크기는 문자열의 경우 문자의 개수, 리스트와 튜플의 경우에는 멤버의 개수 ]

< 파이썬에서의 시퀀스 자료형>

문자열(String): 문자들의 시퀀스입니다.
리스트(List): 임의의 객체들의 시퀀스입니다.
튜플(Tuple): 리스트와 유사하지만 변경이 불가능한(immutable) 시퀀스입니다.
range: 정수들의 시퀀스입니다. range() 함수를 사용하여 생성할 수 있습니다.
바이트(Byte): 0부터 255까지의 정수들의 시퀀스입니다. 바이트 리터럴(b'hello')이나 bytes() 함수를 사용하여 생성할 수 있습니다.
바이트 배열(Bytearray): 바이트와 유사하지만 변경이 가능한(mutable) 시퀀스입니다. bytearray() 함수를 사용하여 생성할 수 있습니다.
문자열 포맷팅(String Formatting)은 문자열 안에 변수나 값의 정보를 삽입하기 위해 사용되는 기술입니다. 문자열 포맷팅은 파이썬에서 간편하게 사용할 수 있습니다.

strdata='abcde'  # 문자열 
listdata=[1,[2,3],"hi"] # 리슽
tupledata=(100,200,300) # 튶플

(1) 기호를 사용하는 방법

가장 간단한 문자열 포맷팅 방법은 % 기호를 사용하는 것입니다. 이 방법은 C 언어에서 사용되는 방법과 유사합니다.

  • 정수 값 포맷팅
x = 10
print("x 값은 %d 입니다." % x)
  • 문자열 포맷팅
name = "Alice"
print("내 이름은 %s 입니다." % name)
  • 믹수 포맷팅
age = 25
print("%s의 나이는 %d살입니다." % (name, age))
txt1="java";txt2='Python'
num1=5;num2=10
print("나는%s보다%s이 더 좋!"%(txt1,txt2))
print("내 기준 : %s가 %s보다 %d배 어려운거같엉 ㅠㅠ.."%(txt1,txt2,num1))
print('%d + %d = %d'%(num1,num2,num1+num2))
print("작년 세계 경재 성장률은 전년에 비해 %d%%포인트 증가했다"%num1)

(2) format() 함수를 사용하는 방법

format() 함수를 사용하여 문자열 포맷팅을 할 수도 있습니다. 이 방법은 % 기호를 사용하는 방법보다 더 유연하고 가독성이 좋습니다.

  • 정수 값 포맷팅
x = 10
print("x 값은 {} 입니다.".format(x))
  • 문자열 포맷팅
name = "Alice"
print("내 이름은 {} 입니다.".format(name))
  • 여러 값 포맷팅
age = 25
print("{}의 나이는 {}살입니다.".format(name, age))

(3) f-string을 사용하는 방법

f-string을 사용하여 문자열 포맷팅을 할 수도 있습니다.

  • 정수 값 포맷팅
x = 10
print(f"x 값은 {x} 입니다.")
  • 문자열 포맷팅
name = "Alice"
print(f"내 이름은 {name} 입니다.")
  • 여러 값 포맷팅
age = 25
print(f"{name}의 나이는 {age}살입니다.")

💚 시퀀스 자료형 : indexing

strdata="I want money!"
listdata=[1,[2,3],4,5]
print(strdata[5])
print(strdata[-2])
print(listdata[0])
print(listdata[-3])
print(listdata[1][-1])

💚 시퀀스 자료형 : 슬라이싱

strdata="우리집_고양이_이감자"
print(strdata[1:5])
print(strdata[:7])
print(strdata[9:])
print(strdata[:-3])
print(strdata[-3:])
print(strdata[:])
print(strdata[::2])

💚 시퀀스 자료형 : 연결

strdata1='diamond';strdata2="ruby"
strdata3='gold'
listdata1=[1,2,3];listdata2=[2,3,4,5]
print(strdata1+strdata2)
print(strdata1+strdata3)
print(listdata1+listdata2)
print(listdata2+listdata1)

💚 시퀀스 자료형 : 반복

a='감자'
b="차오츄르"
data=a+"가 외칩니다:"+b*3
print(data)

💚 시퀀스 자료형 : 크기

strdata1="I Love You~"
strdata2="You Love Me!"
listdata=["choco",'vanilla',"peanut",strdata1,strdata2]
print(len(strdata1))
print(len(strdata2))
print(len(listdata))
print(len(listdata[3]))

💚 멤버체크 in

listdata=[1,2,3,4]
ret1=5 in listdata;ret2=4 in listdata
print(ret1);print(ret2)
strdata='abcde'
ret3="c" in strdata
ret4="f" in strdata
print(ret3);print(ret4)

🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭

from time import sleep은 time 모듈에서 sleep 함수를 import하는 구문입니다. sleep 함수는 프로그램을 일정 시간 동안 멈추게 해주는 함수입니다.

sleep 함수는 float 또는 int 형태의 인자를 받아 프로그램을 해당 시간 동안 멈춥니다. 예를 들어, sleep(2)를 실행하면 프로그램이 2초 동안 멈추게 됩니다. 이 함수는 주로 프로그램이나 스크립트를 실행하는 도중 특정한 시간 간격을 두고 작업을 수행하도록 할 때 사용됩니다.

아래는 sleep 함수를 사용한 간단한 예시 코드입니다.

from time import sleep

print("작업 시작")
sleep(5) # 5초 동안 멈춤
print("5초 후에 이 문장이 출력됩니다.")

위 코드에서 sleep(5) 구문이 실행되면 프로그램이 5초 동안 멈추고, 이후 다음 문장이 출력됩니다.

from time import sleep
for i in range(100):
    msg="\r 진행률 %d%%"%(i+1)
    print(" "*len(msg),end="")
    print(msg,end='')
    sleep(0.1)

해당 코드는 0부터 99까지 반복하는 for 루프 안에서 진행률을 출력하는 코드입니다.

"\r"은 커서를 해당 줄의 맨 앞으로 이동시키는 이스케이프 시퀀스입니다. 따라서 매 반복마다 진행률을 출력하기 위해 커서를 맨 앞으로 이동시키고, 진행률 정보를 출력합니다. end=""는 print 함수가 출력한 내용의 끝에 아무것도 출력하지 않도록 하는 인자입니다.

" "*len(msg) 구문은 진행률 정보를 출력하기 전에 해당 줄을 지우기 위해 진행률 정보 출력 문자열의 길이만큼 공백을 출력합니다. 이를 통해 이전에 출력한 진행률 정보가 지워지고, 새로운 진행률 정보가 출력됩니다.

sleep(0.1) 구문은 0.1초 동안 대기하는 함수입니다. 이를 통해 각각의 진행률 정보가 출력된 후 0.1초 동안 대기하고, 다음 진행률 정보를 출력합니다.

따라서 위 코드를 실행하면 총 100개의 진행률 정보가 출력되며, 각각의 정보는 0.1초 간격으로 출력됩니다. 모든 진행률 정보는 한 줄에 출력되며, 이전에 출력한 진행률 정보는 공백을 출력하여 지워지고, 새로운 진행률 정보가 출력됩니다.

0개의 댓글