파이참을 사용하던 중에 

갑자기 메모리가 부족하다는 에러가 떴다..

요즘 돌려놓은 게 많아서 그런가보다...

The IDE is running low on memory and this might affect performance. Please consider increasing available heap.

찾아보니 메모리 할당량 설정을 바꾸면 된다고 한다..!

Help -> Edit Custom VM Options를 선택하고!

기본에 아래와 같았던 메모리를

-Xmx940m

이렇게 수정해주면 된다...!

-Xms2048m
-Xmx4096m

 

그 후로 저 메시지는 뜨지 않았다고 한다..

반응형

 

파이썬에서는 문자열이 문자로 이루어져 있는지, 숫자로 이루어져 있는지 판별하는 함수들이 몇개 있다!

바로~ isalpha(), isalnum(), isnumeric(), isdigit(), isdecimal() 함수!

각 함수의 특징 및 예제를 알아보자!

 

영문이나 한글인지를 확인하는 isalpha()

문자열이 영문이나 한글로 이루어져 있다면 True를 반환하고

띄어쓰기, 숫자, 특수문자가 있으면 False를 반환한다..!

문자만 있어야하는 상황에서 예외처리할 때 주로 사용한다 !

""" isalpha() 예제 """
string = ['Korean과영문', '띄어 쓰기 blank', '숫자섞임1', '특수_문자']

for n, s in enumerate(string):
    print(string[n], ": ", s.isalpha())

# Korean과영문 :  True
# 띄어 쓰기 blank :  False
# 숫자섞임1 :  False
# 특수_문자 :  False

 

영문이나 한글, 또는 숫자인지를 확인하는 isalnum()

문자열이 영문이나 한글, 또는 숫자로 이루어져 있다면 True를 반환하고 

띄어쓰기, 특수문자가 있으면 False를 반환한다..!

ID 등을 확인할 때 사용하는데 잘은 안쓰는 듯 하다..^_^

""" isalnum() 예제 """
string = ['Korean과영문', '띄어 쓰기 blank', '숫자섞임1', '특수_문자']

for n, s in enumerate(string):
    print(string[n], ": ", s.isalnum())

# Korean과영문 :  True
# 띄어 쓰기 blank :  False
# 숫자섞임1 :  True
# 특수_문자 :  False

 

숫자인지를 판별하는 isnumeric(), isdigit(), isdecimal()

숫자를 판별하는 중에는 3가지 함수들이 있는데 미묘하게 사용법이 다르다!

기본은 일반 숫자는 모두 True로 처리한다는 것 !

 

isnumeric()

제곱근, 분수 등은 True로 반환하지만,

문자열에 '특수문자'가 포함된 경우에는 False로 반환한다..!

""" isnumeric() 예제 """
number = ['95', '2²', '½', '1/2', '-12', '2.1']

for n, num in enumerate(number):
    print(number[n], ": ", num.isnumeric())

# 95 :  True
# 2² :  True
# ½ :  True
# 1/2 :  False
# -12 :  False
# 2.1 :  False

 

isnumeric()

문자열이 '숫자'처럼 생겼다면 True를 반환하고 그게 아니라면 False를 반환한다..!

""" isdigit() 예제 """
number = ['95', '2²', '½', '1/2', '-12', '2.1']

for n, num in enumerate(number):
    print(number[n], ": ", num.isdigit())

# 95 :  True
# 2² :  True
# ½ :  False
# 1/2 :  False
# -12 :  False
# 2.1 :  False

 

isdecimal()

문자열이 int로 변환 가능하다면 True를 반환하는 함수로..

(내가) 숫자 관련 처리할 때 주로 isdigit과 함께 가장 많이 사용하는 함수다..!

""" isdecimal() 예제 """
number = ['95', '2²', '½', '1/2', '-12', '2.1']


for n, num in enumerate(number):
    print(number[n], ": ", num.isdecimal())

# 95 :  True
# 2² :  False
# ½ :  False
# 1/2 :  False
# -12 :  False
# 2.1 :  False

 

 

결론

오늘은 문자열이 문자인지 숫자인지 확인하는 함수를 알아보았다...

근데 사실 난 이런 함수들로 입출력을 받는 것보다는 

정규표현식 regular expressions를 사용하는 걸 선호한다..

상황에 잘 맞게 쓰면 될듯 하고 다음에는 정규식 포스팅을 해보겠다..^_^

반응형

문제 설명은 다 보고 왔으니 생략... 꽤 헷갈렸던 문제...ㅎㅎ

d = []
for i in range(19):
    d.append([])
    for j in range(19):
        d[i].append(0)

for i in range(19):
    d[i] = list(map(int, input().split()))

n = int(input())
for i in range(n):
    x, y = map(int, input().split())
    for j in range(19):
        d[x-1][j] = 1 if d[x-1][j] == 0 else 0
        d[j][y-1] = 1 if d[j][y-1] == 0 else 0

for i in range(19):
    for j in range(19):
        print(d[i][j], end=' ')
    print()

 

반응형

List를 평탄화하는 방법에는 flatten함수를 사용하는 방법이 있다~

근데 그냥 함수를 쓰는 것보다 재귀함수를 사용하여 직접 구현해보는 것도 재밌는 것 같다~!

성능이 어떻게 나오는지는 확인해보지 않았으나,

재귀함수 특성상 메모리 사용도 많고 느린 경우도 많으니..

실사용할 때는 그냥 flatten() 쓰는게 좋을 것 같다..^^

example = [[1,2,3],[4,[5,6]],7,[8,9]]

def flatten_recursion(list):
    flatten_list = []

    for i in list:
        if isinstance(i, __builtins__.list):
            flatten_list.extend(flatten_recursion(i))
        else:
            flatten_list.extend([i])

    return flatten_list

print(flatten_recursion(example))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

반응형

 

 

https://codeup.kr/problem.php?id=6082 

 

[기초-종합] 3 6 9 게임의 왕이 되자(설명)(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

아마 문제는 다 보았을테니, 문제에 대한 설명은 생략합니다!

 

간단하지만, 푸는 방법이 조금 달라서 글을 씀다! 힌트는 count

 

문제의  조건은 Input 값이 27 이하로 설정되어 있어서

대부분 아래의 소스처럼 i를 10으로 나눈 나머지값을 구하는 방식으로 해결했더라..

n = int(input())

for i in range(1, n+1) :
  if i%10==3 or i%10==6 or i%10==9 :
    print("X", end=' ')
  else :
    print(i, end=' ')

# 결과값
# 1 2 X 4 5 X 7 8 X 10 11 12 X 14 15 X 17 18 X 20 21 22 X 24 25 X 27 28 X 30 31 32 X 34 35 X 37 38 X 40 

물론, 조건을 생각하면 이게 맞지만.... ㅎㅎ

근데 369게임이 27으로 끝나는 법은 없지... ^_^

30이상 input값을 받아버리면 제대로 출력이 되지 않는 오류가 발생하니~

이왕 짤거 제대로 짜보는 게 좋을 것 같아서

a = int(input())

for i in range(1, a+1):
    sum_x = str(i).count('3') + str(i).count('6') + str(i).count('9')
    rs = "X"*sum_x if sum_x > 0 else i
    print(rs, end=' ')

# a = 43 일 때,
# 결과값
# 1 2 X 4 5 X 7 8 X 10 11 12 X 14 15 X 17 18 X 20 21 22 X 24 25 X 27 28 X X X X XX X X XX X X XX 40 41 42 X

 

이렇게 짜봤다..^^

 

반응형

'[ 개발 ] > Algorithm' 카테고리의 다른 글

[CodeUp] 코드업 기초 100제 6096번 풀이 (py)  (0) 2022.11.13

Python으로 프로그램을 만들 일이 생겨서 알아보던 중 찾게 된 NSIS와 HM NIS Edit !!

가장 유명한 인스톨 프로그램 중 하나이자 오픈소스라서 많이 사용된다고 한다.

설치방법과 사용법이 간단한 것은 덤 ^_^

이번 포스팅에서는 설치방법만 간단하게 정리해보도록 하자!

 

두개 프로그램 모두 설치해야 우리가 원하는 설치파일 만들기 작업을 할 수 있으니 꼭 둘 다 받아주자!

아래는 내가 사용했던 NSIS와 HM NIS Edit 파일이다~! 

NSIS & HM NIS Edit.zip
0.00MB

직접 다운받으려면 아래 프로세스 참고하기!

 

NSIS 다운로드

>> nsis.sourceforge.io/Download

위와 같은 화면에서 다운로드받아주시고~

별다른 설정 없이 모두 Next 후 Install까지 진행하고 나서

위와 같은 Main창이 나타나면 NSIS 설치 완료!

 

HM NIS Edit 다운로드

>> http://hmne.sourceforge.net/

 

HM NIS Edit: A Free NSIS Editor/IDE

HM NIS EDIT: A Free NSIS Editor/IDE  |   |   |   |   |   |   |     HM NIS Edit is the best Editor/IDE for Nullsoft Scriptable Install System (NSIS). Its useful for experts and beginners in the creation of Setup programs with the NSIS. Its S

hmne.sourceforge.net

 

위와 같은 홈페이지 화면 하단부에 있는 nisedit2.0.3.exe을 다운로드해준다

계속 다음> 을 눌러 진행하다가 다음과 같은 화면이 나오면 무시(I) 해주고 진행한다

실행하여 위와 같은 Main창이 나오면 HM NIS Edit 설치 완료!!

 

 

반응형

 

''.join(iterable) 함수는 리스트를 문자열로 합춰주는 기능을 한다.

문자열을 리스트로 쪼개주는 .split() 함수와 정반대의 기능을 한다고 보면 된다.

iterable에는 List, Tuple, Dictionary, Set 등이 들어갈 수 있다.

시간복잡도가 O(n) 밖에 되지 않아 일반적으로 for문을 사용하여 문자열을 합치는 것보다 성능면에서 우월하다.

 

"".join(iterable) 함수 예제

 

"".join(iterable) 실행 결과

 

 

반응형

 

*args

arguments의 줄임말로 args가 아닌 다른 문자열이 들어와도 된다.
ex) *enterprise, *hi, * hello_world

여러개의 argument가 들어올 때 사용한다.

tuple 형태로 들어오며 매개변수 지정시 일반 변수가 존재한다면, 반드시 그보다 뒤에 들어와야 한다.

 

**kwargs

keyword arugments의 줄임말로 kwargs가 아닌 다른 문자열이 들어와도 된다.
ex) **countries, **LikePython, **coffee

여러개의 argument가 key,value값으로 들어올 때 사용한다.

dictionary 형태로 들어오며 매개변수 지정시, 일반 변수 또는 args변수가 존재한다면, 반드시 그보다 뒤에 들어와야 한다.

 

*args, **kwargs test 함수

 

*args, **kwargs test 실행 결과

반응형

자바에 dcm2che 이런 라이브러리들이 많았는데 

파이썬에서는 괜찮은 라이브러리들이 별로 없는 줄 알았다가 찾게 된

mritopng !!

써보니 정말 간단하고 편리했다!

 

https://github.com/danishm/mritopng

 

GitHub - danishm/mritopng: A simple python module to make it easy to batch convert DICOM files to PNG images.

A simple python module to make it easy to batch convert DICOM files to PNG images. - GitHub - danishm/mritopng: A simple python module to make it easy to batch convert DICOM files to PNG images.

github.com

 

여기에 들어가서 다운받은 후, 아래 명령어로 설치하기!

python setup.py install

 

또는 아래 명령어로 설치!

pip install mritopng

 

convert_file이란 함수로 파일 이름 하나하나 짚어가면서 바꿀 수 있고,

convert_folder 함수로 폴더 안에있는 모든 dicom 파일을 (DCM) png로 바꿀 수 있다.

 

import mritopng

# Convert a since file
mritopng.convert_file('/home/user/DICOM/SCAN1', '/home/user/output.png')

# Convert a whole folder recursively
mritopng.convert_folder('/home/user/DICOM/', '/home/user/PNG/')

 

 

 

 

출처 : https://sosal.kr/

반응형

 

 

1. cmd창 들어가기

 

2. pyuic5 -x ui 파일경로\ui 파일이름.ui -o 저장할 경로\원하는 파일명.py 입력

3. 생성된 것 확인하기

 

 

반응형

+ Recent posts