4/05 수업 정리 (python)
자료형
숫자, 문자열 등 자료 형태로 사용하는 모든 것을 지칭.
타입(Type)이라고도 하며, 변수나 값의 자료형을 알아보려면 type() 메서드를 사용
자료형 실습 코드
num1 = 1234
num2 = 3.14
num3 = 5.5 + 3.1j
string1 = 'test'
tuple1 = (1, 2, 3, 4)
list1 = [1, 2, 3, 4]
dict1 = {1: "One", 2: "Two", 3: "Three", 4: "Four"}
bool1 = True
print(f"{num1} =", type(num1))
print(f"{num2} =", type(num2))
print(f"{num3} =", type(num3))
print(f"{string1} =", type(string1))
print(f"{tuple1} =", type(tuple1))
print(f"{list1} =", type(list1))
print(f"{dict1} =", type(dict1))
print(f"{bool1} =", type(bool1))
숫자형
숫자로 이루어진 자료형. 2진수는 0b, 8진수는 0o, 16진수는 0x로 표현
문자열 연산 실습 코드
My = "My"
Program = "Program"
Line = "=" * 10
print(Line)
print(f"{My} "+f"{Program}")
print(Line)
문자열 슬라이싱 실습 코드
a = '2022040514:09'
year = a[:4]
month = a[4:6]
day = a[6:8]
time = a[8:]
print(f"{year}년 {month}월 {day}일 시각: {time}")
replace, split, join 함수 실습 코드
# 문자열 바꾸기 replace()
apple = "Apple is delicious"
banana = apple.replace("Apple", "Banana")
print(banana)
# 문자열 나누기 split()
string1 = "Apple is delicious"
string2 = "a:b:c:d"
result1 = string1.split()
result2 = string2.split(":")
print(result1)
print(result2)
print("".join(result2))
list 실습 코드
list1 = list()
print(type(list1), list1)
list2 = []
print(type(list2), list2)
list3 = [1, 2, 3, 4, 5]
print(type(list3), list3)
list4 = [1]
print(type(list4), list4)
list5 = [1, 2, 3, 1.1, 2.2, 'A', True, (1,2,3)]
print(type(list5), list5)
딕셔너리의 키 값을 변경할 때는 update 메서드를 사용한다.
집합(Set)
순서에 상관없이 중복을 제거하는 자료형 따라서 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용한다.
제어문
제어문의 맨 끝에 콜론(:) 반드시 기재
조건문
특정 조건의 참, 거짓 여부를 판단해서 코드 실행 여부 결정
if 실습 코드
a = 1
if a == 1:
print("조건이 참이므로 실행합니다.")
if a == 2:
print("조건이 거짓이므로 실행되지 않습니다.")
if 실습 코드2
a = 50
if a < 60:
print(f"{a}점이므로 불합격입니다.")
else:
print(f"{a}점이므로 합격입니다.")
a = 80
if a < 60:
print(f"{a}점이므로 불합격입니다.")
else:
print(f"{a}점이므로 합격입니다.")
if 실습 코드3
num = 2
if num < 0:
print(f'{num}은 음수입니다.')
elif num > 0:
print(f'{num}은 양수입니다.')
else:
print(f'{num}은 0입니다.')
과제 :
/etc/passwd|-rw-r--r--|644|root|0|root|0 해당 문자열을 "|"를 기준으로 나누어 아래와 같은 포맷으로 kisec.txt 파일에 쓰시오.
kisec.txt 파일 안에 /etc/passwd|-rw-r--r--|644|root|0|root|0 이 문자열을 가공 후 추가 삽입
파일명 : /etc/passwd [ 권한 = -rw-r--r--(644), 소유자 = root(0), 소유그룹 = root(0) ]
1. kisec.txt 파일을 만들기
2. 파일이 잘 열리는 지 with 함수와 readlines 함수로 테스트
with open("./kisec.txt", "r") as f:
print(f.readlines())
결과:
3. readlines 함수를 f_text라는 변수에 적용하여 기존에 작성된 문자들을 문자열 형태로 만들기
f_text = str(f.readlines())
4. f_input 변수를 만들어 a 옵션으로 open함수 실행하기
f_input = open("./kisec.txt", "a", encoding="UTF-8")
5. data라는 변수에 f_text 변수에 담긴 문자열을 “|” 기준으로 나눠주기
data = f_text.split("|")
6. 나뉜 문자열들을 조건에 맞게 각각 replace 함수를 이용해서 작성해주고 str_data라는 변수에 한꺼번에 합치기
first_data = data[0].replace("[\'", "파일명 : ") + " "
second_data = "[ 권한 = " + data[1] + "(" + data[2] + "), "
third_data = "소유자 = " + data[3] + "(" + data[4] + "), "
forth_data = "소유그룹 = " + data[5] + "(" + data[6].replace("\']", ") ]")
str_data = "\n" + first_data + second_data + third_data + forth_data
7. write 함수를 이용해 str_data 변수를 텍스트 파일에 추가해주고, 마지막으로 close 함수로 open 함수의 실행을 종료시킨다.
f_input.write(str_data)
f_input.close()
전체코드
with open("./kisec.txt", "r") as f:
f_text = str(f.readlines())
f_input = open("./kisec.txt", "a", encoding="UTF-8")
data = f_text.split("|")
first_data = data[0].replace("[\'", "파일명 : ") + " "
second_data = "[ 권한 = " + data[1] + "(" + data[2] + "), "
third_data = "소유자 = " + data[3] + "(" + data[4] + "), "
forth_data = "소유그룹 = " + data[5] + "(" + data[6].replace("\']", ") ]")
str_data = "\n" + first_data + second_data + third_data + forth_data
f_input.write(str_data)
f_input.close()
결과:
하지만 위의 방식은 매우 그리디한 방식으로 효율적으로 보이지 않는다. 따라서 다음과 같이 코드를 수정해보았다.
with open("./kisec.txt", "r", encoding="UTF-8") as f:
f_text = f.readlines()[0].split("|")
f_input = open("./kisec.txt", "a", encoding="UTF-8")
f_input.write(f"\n파일명 : {f_text[0]} [ 권한 = {f_text[1]}({f_text[2]}), 소유자 = {f_text[3]}({f_text[4]}), 소유그룹 = {f_text[5]}({f_text[6]}) ]")
f_input.close()
결과:
'Challenge > SK 뉴스쿨 정보보안과 3기' 카테고리의 다른 글
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.08) (1) | 2022.04.09 |
---|---|
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.07) (0) | 2022.04.08 |
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.04) (1) | 2022.04.08 |
SK 뉴스쿨 프로그래밍 기초 C언어 (2022.03.25 ~ 04.01) (0) | 2022.04.06 |
SK 뉴스쿨 네트워크 기초 & 인프라 기초 (2022.03.14 ~ 03.24) (0) | 2022.04.06 |