for문 테스트
counter = 10
total = 0
for x in range(0, counter):
total += 1 # total = total + 1
# print(x, end=' ')
print(x)
print('프로그램 종료')
random 모듈 테스트
>>> from random import randint
>>> randint(1, 10)
7
>>> randint(1, 10)
7
>>> randint(1, 10)
1
>>> randint(1, 10)
6
>>> randint(1000, 9000)
3470
>>> randint(1000, 9000)
7583
>>> randint(1000, 9000)
2512
for + random 테스트
randint(정수1, 정수2) : 정수1 ~ 정수2 까지 무작위 수를 뽑아주는 함수
-- testRandom.py --
# import random
# def randInt():
# # import로 모듈을 불러들이면 모듈명.함수명()으로 호출한다.
# x = random.randint(1000, 9000)
# return x
from random import randint
def randInt():
# from 으로 모듈을 불러들이면 함수명()으로 호출한다.
x = randint(1000, 9000)
return x
#for x in range(10):
for x in range(0, 10):
# s_port = randInt()
# print(s_port)
print(f'{x}: {randInt()}')
print('프로그램 종료')
-- testRandom.py --
IP주소를 만들어주는 함수
-- testIPv4.py --
"""
파일명 : testIPv4.py
프로그램 설명 : 랜덤 IP주소 생성을 위한 지식들
"""
# 1. join()
# a = ['1', '2', '3', '4', '5']
# print(a, type(a)) # ['1', '2', '3', '4', '5'] <class 'list'>
# ip = ".".join(a); print(ip, type(ip)) # 1.2.3.4.5 <class 'str'>
# print(".".join(a)) # 1.2.3.4.5
# 2. for문
# 반복문
# 형식 :
# 이터러블 : 반복 가능한 객체(문자열,리스트,튜플,딕셔너리,셋,range())
# for 변수 in 이터러블:
# 실행문1
# else:
# 실행문2
# for x in [1,2,3,4,5]:
# print(x)
# else:
# print('for문 종료')
# 3. range()
# https://docs.python.org/ko/3/tutorial/index.html
# https://docs.python.org/ko/3/tutorial/controlflow.html#the-range-function
# range() 함수(클래스)를 이용한 숫자 증가하기
# 형식 :
# range(숫자) : 숫자가 1개가 인수로 올 경우
# range(시작숫자,끝숫자) : 숫자가 2개가 인수로 올 경우
# range(시작숫자,끝숫자,증가할개수) : 숫자가 3개가 인수로 올 경우
# range(시작숫자,끝숫자,감소할개수) : 숫자가 3개가 인수로 올 경우
# range() 함수는 0부터 시작한다. 끝숫자는 포함이 안된다.
# range(3) : 0,1,2
# range(5) : 0,1,2,3,4
# range(1,11) : 1,2,3,4,5,6,7,8,9,10
# range(5,11) : 5,6,7,8,9,10
# range(1,6) : 1,2,3,4,5
# range(1,6,1) : 1,2,3,4,5
# range(1,11,2) : 1,3,5,7,9
# range(5,0,-1) : 5,4,3,2,1
# range(10,0,-2) : 10, 8, 6, 4, 2
# for x in range(5): # 0 ~ 4
# for x in range(1,11): # 1 ~ 10
# print(x)
# else:
# print('for문 종료')
# 4. 리스트 컴프리헨션 (list comprehension)
# 리스트 컴프리헨션이란 리스트를 간략하게 표현한 것으로
# 리스트 안에 for문을 사용할 수 있도록 한 것이다.
# 형식 : 변수명 = [실행문 for문]
# 형식 : 변수명 = [실행문 for문 if문]
# 형식 : 변수명 = [실행문 if 조건식 else 실행문 for문 ]
# 실행문 for 변수명 in 리스트:
# >>> for i in range(1,6): i
# >>> [i for i in range(1,6)]
#
# >>> i = []
# >>> for a in range(1,6):
# ... i.append(a)
#
# >>> b = [i for i in range(1,6)]
# 4. 리스트 컴프리핸션으로 변경하는 방법
# for문을 한 줄로 줄인다.
# 콜론(:)을 삭제한다.
# 실행문을 왼쪽으로 이동시킨다.
# b.append()를 삭제한다.
# 대괄호([]) 안으로 이동시킨다.
# 리스트 컴프리핸션을 사용하지 않은 경우
# b = []
# for a in range(1,6):
# b.append(a)
# 리스트 컴프리핸션을 사용한 경우
# b = [a for a in range(1,6)]
# print(b)
# 5. 시간측정
# import time
# start = time.time() # 시작 시간을 기록한다.
# # 1. 리스트 컴프리핸션을 사용하지 않은 경우
# # append로 1억번 반복하는 시간 : 10.58 초
# listData = []
# for a in range(100000000): # 1억번 반복
# listData.append(a)
# end = time.time() # 끝 시간을 기록한다.
# endtime = end - start
# print(format(endtime, '.2f'), '초')
# print(listData[0], listData[-1]) # 0 999999999
# # 2. 리스트 컴프리핸션을 사용한 경우
# # 리스트컴프리핸션으로 1억번 반복하는 시간 : 4.50 초
# listData = [a for a in range(100000000)]
# end = time.time() # 끝 시간을 기록한다.
# endtime = end - start
# print(format(endtime, '.2f'), '초')
# print(listData[0], listData[-1]) # 0 999999999
# 6. randint()
# 난수를 발생시키는 함수
# 형식 : randint(시작숫자, 끝숫자)
# 시작숫자 ~ 끝숫자까지 랜덤하게 숫자를 생성하고 정수형으로 리턴한다.
# import random
# print(random.randint(1,10)) # 1 ~ 10까지 무작위 수를 생성해서 리턴한다.
# print(type(random.randint(1,10))) # <class 'int'>
# from random import randint
# print(randint(1,10)) # 1 ~ 10까지 무작위 수를 생성해서 리턴한다.
# print(type(randint(1,10))) # <class 'int'>
# from random import randint
# for _ in range(4):
# print(randint(0,255)) # IP주소에 들어가는 숫자
# 리스트 컴프리핸션으로 변경하는 방법
# for문을 한 줄로 줄인다.
# 콜론(:)을 삭제한다.
# 실행문을 왼쪽으로 이동시킨다.
# print()를 삭제한다.
# 대괄호([]) 를 붙인다.
# 변수에 할당한다.
# from random import randint
# ip = [randint(0,255) for _ in range(4)]
# print(ip, type(ip[0])) # [158, 237, 120, 185] <class 'int'>
# 7. str()
# 정수를 인수로 넘겨주면 문자열로 리턴한다.
# >>> a = 100
# >>> a
# 100
# >>> type(a)
# <class 'int'>
# >>> a = str(a)
# >>> a
# '100'
# >>> type(a)
# <class 'str'>
# a = 100
# print(a, type(a)) # 100 <class 'int'>
# a = str(a)
# print(a, type(a)) # 100 <class 'str'>
# 아래처럼 변환하면 안된다.
# a = [1,2,3,4]
# a = str(a)
# print(a, type(a))
# >>> a = [1,2,3,4]
# >>> a
# [1, 2, 3, 4]
# >>> a = str(a)
# >>> a
# '[1, 2, 3, 4]'
# 8. int()
# 문자열을 인수로 넘겨주면 정수로 리턴한다.
# 형식 : int('문자열로된숫자')
# listData = ['1','2','3','4']
# print(listData) # ['1', '2', '3', '4']
# print(listData[0], type(listData[0])) # 1 <class 'str'>
# # listData[0]에 저장된 값을 정수로 변환해서 다시 listData[0] 에 저장한다.
# i = 0
# length = len(listData) # 4
# while i < length: # 0 < 4
# listData[i] = int(listData[i])
# print(listData[i], type(listData[i])) # 1 <class 'int'>
# i += 1
# 9. list(이터러블)
# 인수로 넘겨진 값을 리스트로 변환해서 리턴하는 함수.
# 형식 : list((1,2,3,4,5)) list({1,2,3,4,5})
# a = (1,2,3,4,5)
# print(a, type(a)) # (1, 2, 3, 4, 5) <class 'tuple'>
# b = list(a)
# print(b, type(b)) # [1, 2, 3, 4, 5] <class 'list'>
# 10. map(함수, 이터러블)
# 형식 : map(int, iterable)
# 첫 번째 인수로 함수, 두 번째 인수로 이터러블(반복 가능한 자료형)이 온다.
# a = ['1','2','3','4']
# print(a)
# ip = list(map(int, a)) # [1, 2, 3, 4]
# print(ip)
# b = [1,2,3,4]
# print(b) # [1, 2, 3, 4, 5]
# ip = list(map(str, b)) # ['1', '2', '3', '4']
# print(ip)
# a = (randint(0, 255)for _ in range(4))
# b = map(str, a)
# ip = ".".join(b)
# print(ip)
# 11. 최종 IP주소 생성
# 실행 순서
# 1. (randint(0, 255)for _ in range(4))
# - 랜덤 정수(0 ~ 255 사이의 값) 4개를 generator(iterator를 생성하는 함수)로 생성시킨다.
# - 결과 : 1 2 3 4
# 1.2 [randint(1, 254)for _ in range(4)]
# - 랜덤 정수(1 ~ 254 사이의 값) 4개를 리스트컴프리핸션으로 생성시킨다.
# - 결과 : [1,2,3,4]
# 2. map(str, (randint(0, 255)for _ in range(4)))
# - 생성된 정수(0 ~ 255 사이의 값)을 str 함수가 실행해서 문자열로 변환해서 map 객체로 리턴한다.
# - '1' '2' '3' '4'
# 2-2. map(str, [randint(1, 254)for _ in range(4)])
# - 생성된 정수(1 ~ 254 사이의 값)을 str 함수가 실행해서 문자열로 변환해서 map 객체로 리턴한다.
#
# 3. ".".join(map(str, (randint(0, 255)for _ in range(4))))
# - 각각의 문자열을 . 붙여서 하나의 문자열로 돌려준다.
# - '1.2.3.4'
# 3-2. ".".join(map(str, [randint(0, 255)for _ in range(4)]))
# - 각각의 문자열을 . 붙여서 하나의 문자열로 돌려준다.
# - '1.2.3.4'
#
# a = ['1','2','3','4']
# b = ".".join(a)
# print(b, type(b))
from random import randint
ip = ".".join(map(str, (randint(0, 255)for _ in range(4))))
print(ip, type(ip)) # 최종적으로 랜덤으로 생성된 IP주소가 나온다.
print('프로그램 종료')
-- testIPv4.py --
>>> type([i for i in range(4)])
<class 'list'>
>>> type((i for i in range(4)))
<class 'generator'>
>>> map(str, (randint(0, 255)for _ in range(4)))
<map object at 0x00000152021FDF30>
>>> from random import randint
>>> for i in map(str, (randint(0, 255)for _ in range(4))):
... i
...
'143'
'58'
'94'
'93'
실제 0, 255는 가용IP주소가 아니므로 randint(1, 254)로 적는게 맞는 것이다.
>>> ".".join(map(str, (randint(0, 255)for _ in range(4))))
'92.35.227.0'
>>> ".".join(map(str, [randint(0, 255)for _ in range(4)]))
'82.42.242.109'
'Programming Language > Python' 카테고리의 다른 글
| scapy (0) | 2022.01.13 |
|---|---|
| Python : 모듈 (0) | 2022.01.13 |
| Python : 함수 (0) | 2022.01.13 |
| [기초] 6-2. 전달값과 반환값 (0) | 2021.11.09 |
| [기초] 6-1. 함수 (0) | 2021.11.09 |