안녕하세요. 군대에서 정말 잘 듣고있습니다. 아무래도 싸지방이다보니 codespace로 동작시켰는데요. 다름이 아니라 셀레니움 부분을 공부하던 중 어찌저찌해서 driver를 연결까진 했으나, 화면이 뜨지 않아서 질문드립니다. 에러가 나는 것은 아니지만, 아마 GUI가 설정이 안되어있어서 그런 것 같습니다. 어떻게 해야할까요? 아래는 driver = webdriver.Chrome()를 codespace에 맞게 변경한 코드이고 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # ChromeDriver 경로 명시 chromedriver_path = "/usr/local/bin/chromedriver" # ChromeDriver 경로 chrome_path = "/usr/bin/google-chrome" # Chrome 브라우저 경로 (시스템에 따라 다를 수 있음) # Chrome 옵션 설정 options = Options() options.add_argument("--headless") # GUI 없이 실행 options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.binary_location = chrome_path # Chrome 브라우저 경로 설정 # ChromeDriver 서비스 설정 service = Service(chromedriver_path) # WebDriver 생성 driver = webdriver.Chrome(service=service, options=options) 아래는 이로인해 나타나는 화면입니다. driver.get() 등등의 메소드를 이용하면 title, current_url의 결과로 잘 작동되는 것을 알 수 있습니다. 하지만, 화면이 바뀌지 않아서 문제입니다. 앞에서도 언급했지만, GUI를 codespace에서 설정하는 방법을 알아야할 거 같은데 쉽지 않습니다.. GUI가 없다보니 headless를 설정할 수밖에 없었구요..
import sys import copy #sys.stdin=open("input.txt","rt") ''' #3번이 틀림 n =int(input()) li1 = [list(map(int, input().split())) for _ in range(n)] cpy =copy.deepcopy(li1) #깊은 카피를 사용 m=int(input()) tot=s=0 e = n #print(cpy) #li1 회전 for i in range(m): li2 = list(map(int, input().split())) print(li2) if li2[1] == 0: #왼쪽으로 회전 for j in range(n): if j-li2[2] < 0: li1[li2[0]-1][j-li2[2]+n] = cpy[li2[0]-1][j] else: li1[li2[0]-1][j-li2[2]] = cpy[li2[0]-1][j] if li2[1] == 1: #오른쪽으로 회전 for j in range(n): if j+li2[2] < n: li1[li2[0]-1][j+li2[2]] = cpy[li2[0]-1][j] else: li1[li2[0]-1][(j+li2[2])%n] = cpy[li2[0]-1][j] #print(li1) for i in range(n): for j in range(s,e): tot += li1[i][j] if i < n//2: s+=1 e-=1 else: s-=1 e+=1 print(tot) 다음과 같이 풀때, 1245번은 정답이 뜨는데 3번만 틀린ㄴ값으로 뜹니다.. 뭐가 틀린지 모르겠습니다..알려주세요..
안녕하세요. 저는 login.ui.py 파일이 생성되지 않아 문의 드립니다. 아래 캡켜화면은 저의 VScode입니다. 강의에서 06.GUI프로그래밍을 프로젝트폴더로 선택한 상태에서 아래의 터미널에 입력(pyside6-uic login.ui -o login_ ui.py)을 하였으나 에러문구가 뜹니다. 제가 무엇을 잘못했는지 궁금합니다. 감사합니다. ================================================================ 강의 노트에 아래의 문구가 있어 다시 문의드립니다. (문의사항) 확장프로그램(Qt for Python)은 이제 설치하지 않아도 되는가요? 터미널에서 명령이 실행을 제가 올바르게 한건지 확인 부탁드립니다.
5번만 틀렸는데, 어느부분에서 틀렸는지 모르겠습니다.. 알려주세요 .. 아래는 제가 짠 코드입니다 n = int(input()) max = -1 tot,tto = 0,0 li = [[0]*n for _ in range(n)] # n의 크기를 가지고 0으로초기화된 리스트를 n번 반복 for i in range(n): li[i]= list(map(int, input().split())) for i in range(n): if sum(li[i]) > max: max = sum(li[i]) for j in range(n): for i in range(n): tot += li[i][j] tot = 0 if tot > max: max = tot for i in range(n): tot += li[i][i] tto += li[i][n-i-1] if tot > max: max = tot if tto > max: max = tto print(max)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. RISS의 주제저를 추출하는 부분에서 파이썬을 이용한 크롤링은 잘 되었습니다. 하지만 크롤링한 데이터를 보니 웹에는 표시되지 않는 문자들이 같이 출력되었습니다. 저만 이런 문자가 추가로 붙었는지 궁금해서 강사님의 강의도 보니 강사님의 강의에서도 똑같이 추출한 데이터에서 문자가 추가된 것을 확인할 수 있었습니다. 마지막 줄에 AI하고 \u3000 이라는 문자가 추가되었는데 외주를 할 때 이런 오류는 문제가 되지 않는지 궁금합니다.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요?: 1-5 알고리즘과 친해지기 (2) 어떤 알고리즘을 학습하고 계신가요?: 최빈값 찾기(알파벳) 여기까지 이해하신 내용은 무엇인가요?: 'a' -> ord('a') -> 97 -> chr(97) -> 'a' 이고, 'A' -> ord('A') -> 65 -> chr(65) -> 'A' 이다. 아스키 코드를 활용하고, 가장 기본이 되는 원리는 이렇다. 0이 26개인 배열(a_o_a)을 만들고, 주어진 문자열(string)을 반복문으로 순회한다. (for char in string: ... ) ord('a') - ord('a') = 0 이고, ord('b') - ord('a') = 1 이고, ... 이 원리에 따라 ord(char) - ord('a') 를 하면, char가 몇 번째 순서의 알파벳인지 구할 수 있다. 이를 0이 26개인 배열(a_o_a)의 인덱스(i)로 활용한다. string을 반복문으로 순회하면서, (만약 숫자나 띄어쓰기가 아니고 알파벳이라면) a_o_a[i] += 1 을 한다. a_o_a 에 각 알파벳의 빈도수가 저장이 된다. a_o_a를 반복문으로 순회하면서, max_alphabet_index를 구한다. chr(max_alphabet_index + ord('a')) 을 하면 최종적으로 최다 빈도수인 알파벳이 구해진다. 2. 어려움을 겪는 부분 저는 string.count(char)를 이용하여 풀었습니다. 그런데 이 아스키 코드 원리를 활용한 알고리즘이 많이 출제되나요? 코테 출제하시는 분들께서 아스키 코드를 활용한 로직을 더 선호하시는지 궁금합니다!
파이썬 decimal() 함수를 모르는 상태에서 if i == '0' or i == '1' or i == '2' or i == '3' or i == '4' or i == '5' or i == '6' or i == '7' or i == '8' or i == '9': tmp+=i int(tmp) 이렇게 코드를 짰다고 했을때 ValueError: invalid literal for int() with base 10: 오류가 뜹니다.. 숫자만 골라서 int 형변환 했는데 왜 오류가 뜰까요..?
안녕하세요 강사님 강의 잘 보고 있습니다 다름이 아니라 특정 조건에서 task가 실행되지 않아 해결방법을 묻고자 글을 남깁니다. task가 실행되지 않고 발생하는 log *** Could not read served logs: Invalid URL 'http://:8793/log/dag_id=dags_get_data_python_operator/run_id=manual__2024-12-20T09:11:57.447383+00:00/task_id=refine_data_/attempt=1.log': No host supplied branch에 따른 dag에 작성한 taskflow는 다음과 같습니다 get_data_ >> check_dir_ >> get_yesterday_data_ >> refine_data_ >> delete_data get_data_ >> check_dir_ >> refine_data_ >> delete_data batch 당일 데이터와 전날 데이터를 이용해서 spark를 이용해 정제하는 작업인데, 전날 데이터가 수집되어있지 않다면 수집하고나서 sparksubmit을 하도록 task를 구성했습니다. 전날 데이터가 없는 상태로 dag를 실행하면 전체task가 잘 실행이되고 전날데이터가 존재한다면 원하는 task 까지 skipped이 되고 해당 log가 나오네요 ㅠㅠ task 플로우를 잘못 작성한 이유일까요 ? 추가) BranchPython task에 찍힌 log 입니다.
04 : 08 안녕하세요. C언어로 입력받고 출력하기 문제 - 1 에서 교재의 문제 하단 답에 왜 printf("두 숫자를 입력하세요: ") 이후의 출력이 두 숫자를 입력하세요: 5 10 5 + 10 = 15 (이하 생략) 로 출력되는지 궁금합니다. printf("두 숫자를 입력하세요: ") 의 경우 개행 문자가 없기 때문에 두 숫자를 입력하세요: 5 105 + 10 = 15 이런식으로 붙어서 출력되어야 하는게 아닌가요? 기초적인 질문입니다만, 답변 부탁드립니다. 감사합니다.
안녕하세요. FastAPI로 개발을 하는 중, 로그 저장에 대해서 생각하는 시간을 좀 가져봤습니다. 저는 요청, 응답, 쿼리 이렇게 3가지로 나누어서 일자별로 각각의 파일에 저장을 하려고 하는데요. 혹시 FastAPI에서 자체적으로 지원하는 기능중에 이렇게 로그를 나누어 저장하는 기능이 있을까요? 감사합니다.
학습 중에 fastapi는 get과 post만 지원하기 때문에 별도로 미들웨어를 이용해 put, patch, delete를 구현해야 한다고 이해를 하게 되었습니다. 헌데 다른 학습 웹 문서나, gpt에게 여러 요청을 통해 확인을 하는 과정에서 app. 혹은 @router. 을 사용해 이미 지원되는 put, patch, delete를 사용할 수 있다고 설명을 하는 것을 확인할 수 있었습니다. 제가 학습 영상에 대해 이해를 잘못하고 있는 것인지 혹 놓친게 있는지 알고 싶어 질문을 드립니다.
일코 강사님께서 일전에 "끼워넣기를 통해 아래아한글의 여러파일을 병합하는 코드"를 짜주셨는데요. 해당 코드가 작동은 하지만, 일부 기능은 원하는 대로 되지 않는 부분이 있어서 개선방법을 문의 드립니다. 현재의 파이썬 코드는 아래와 같습니다. from pyhwpx import Hwp # 임포트 hwp = Hwp() # 한/글 실행 import os # 작업할 디렉토리를 명시적으로 설정 (예: "C:/Users/Username/Documents") target_dir = "D:\magicfolder" # 작업 디렉토리로 변경 os.chdir(target_dir) # 끼워넣기 file_list = [i for i in os.listdir() if i.endswith(".hwp")] hwp.open(file_list[0]) # 첫 번째(0) 파일 열기 for i in file_list[1:]: # 첫 번째(0) 파일은 제외하고 두 번째(1)파일부터 아래 들여쓰기한 코드 반복 hwp.MoveDocEnd() # 한/글의 문서 끝으로 이동해서 hwp.BreakPage() # <----------------------- 페이지나누기(Ctrl-Enter) hwp.insert_file(i) # 문서끼워넣기(기본값은 섹션, 글자, 문단, 스타일 모두 유지??) hwp.save_as("취합본.hwp") # 반복이 끝났으면 "취합본.hwp"로 다른이름으로저장 hwp.Quit() # 한/글 프로그램 종료 "D:\magicfolder"에 n개의 파일을 넣어두고 위 코드를 실행하면, 첫 번째(0) 파일을 먼저 열고, 문서 끼워 넣기(ctrl+o)를 이용해 두 번째(1), 세 번째(2), ... n번째(n-1) 파일을 차례로 끼워넣기 합니다. 문서 끼워 넣기(ctrl+o) 팝업에서 아래아한글에서 체크할 수 있는 옵션은 아래의 4개 입니다. 제가 의도하는 것은 문서 끼워 넣기(ctrl+o) 시 매번 위 4개 항목(글자 모양 유지, 스타일 유지, 문단 모양 유지, 쪽 모양 유지)에 체크된 상태로 끼워넣는 것입니다. 여기서, 원하는 것은 끼워 넣는 다양한 파일들이 구역설정이나 스타일이 다를 때 각각의 원본을 그래로 유지한 채 병합하는 것입니다. 현재 코드에 일코님께서 메모해 주시기로는 hwp.insert_file(i) # 문서끼워넣기(기본값은 섹션, 글자, 문단, 스타일 모두 유지) 라고 하셨으나, 실제 코드를 실행한 결과는 첫 번째(0) 파일의 편집 용지(F7) 상 구역설정 1가지만 취합본에 적용된 것이 확인됩니다. 이게 불편한 이유는, 예를 들면 첫 번째(0) 파일, 두 번째(0) 파일, ..., n번째(n-1) 파일의 구역설정(상하좌우 용지여백 등)이 다를 때 첫 번째(0) 파일의 구역설정 1가지에 맞추어서 취합되면, 작성내용이 다 틀어지기 때문입니다. hwp.insert_file( ) 이라는 기능을 아래아한글 API문서에서 찾기 시도했으나 발견하지 못했습니다. hwp.insert_file( )이라는 기능은 일코님이 제작하신 pyhwpx 패키지에만 포함된 기능일까요? 코드를 실행해 문서 끼워 넣기(ctrl+o) 시, 글자 모양 유지, 스타일 유지, 문단 모양 유지, 쪽 모양 유지를 강제로 체크하도록 하는 방법이 있을까요? 도움 부탁드립니다. 감사합니다.
안녕하세요. 날짜 뒤에 요일 붙이기 코드가 작동이 되지 않아서 문의 드립니다. 제가 손코딩 한게 뭔가 오류가 있나 싶어서 강의에 있는 코드를 복붙해서 실행해봐도 아무런 변화가 없네요. 한글 파일은 자료다운에서 받은 실작업공정표를 사용했고 한글 2022, 한글 2024 두가지 버전 모두 아무런 변화가 없습니다ㅠㅠ import os import datetime as dt import win32com.client as win32 def init_hwp(): hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FileCheckerModule") return hwp hwp = init_hwp() hwp.Open(os.path.join(os.getcwd(),r"C:\Users\cctom\Desktop\python\hwp2python\실작업공정표.hwpx")) # date().weekday() : 월화수목금토일 # 0 1 2 3 4 5 6 def get_value(): hwp.InitScan(Range=0xff) # 추출범위를 "선택영역"으로 지정 text = hwp.GetText()[1] # 선택범위 문자열값 추출 hwp.ReleaseScan() # 검색종료 return text # 추출값 리턴 def get_weekday(text): week_list = ["월", "화", "수", "목", "금", "토", "일"] month, day = [int(i) for i in text.split(".")[:2]] week_num = dt.date(2022, month, day).weekday() week_day = week_list[week_num] return f"({week_day})" def insert_text(text): act = hwp.CreateAction("InsertText") pset = act.CreateSet() pset.SetItem("Text", text) act.Execute(pset) if __name__ == '__main__': hwp.FindCtrl() # 표 선택 hwp.Run("ShapeObjTableSelCell") # 첫 번째 셀로 진입(셀선택상태) while True: # 무한반복 text = get_value() # 셀의 텍스트 추출 if text.endswith("."): # 셀 안의 텍스트가 "."으로 끝나면(날짜셀을 구분하는 임의의 방법) weekday = get_weekday(text) # 요일 파악 hwp.Run("Cancel") # 셀선택 취소 hwp.Run("MoveLineEnd") # 문자열 끝으로 이동 insert_text(weekday) # 요일 삽입 hwp.Run("TableCellBlock") # 다시 셀선택 if not hwp.HAction.Run("TableRightCell"): # 우측으로 이동하다 break # 끝에 도달하면 while문 종료