본문 바로가기

프로그래밍/Python

(96)
Bithumb API, status 5100, Bad Request Request Time reqTime nowTime 에러 결론 : 코드를 실행하는 컴퓨터의 시간이 빗썸 서버와 많이 차이가 나는 경우 발생함. 컴퓨터의 시간을 다시 동기화하거나, 수동으로 잘 맞추어야 한다. 문제상황: python 으로 bithumb api 를 간단히 테스트하는 코드를 작성하였는데, 에러 메시지가 발생하며, 원하는 결과를 보여주지 못했다. pybithumb 패키지를 사용하는 테스트코드였고, 코드는 이미 다른 컴퓨터에서 동작하는 것을 확인했던 코드였다. 코드 : from pybithumb import Bithumb # CONKEY, SECKEY 를 읽어오는 부분 생략 bithumb = Bithumb(CONKEY, SECKEY) for coin in ["BTC", "ETH"]: ret = bithumb.get_trading_fee("BTC") if..
Sqrt(n) 의 연분수 표현 구하기 Sqrt(n) 의 연분수를 정확하게 구하기. sqrt(n) 의 연분수는 [ a_0;a_1, a_2, ... ] 이고 유리수 소수표현처럼 순환마디가 있을거다. a_n = [ b_n ] 으로 정의되고, b_{n+1} = 1 / ( b_n - a_n ) 이고, b_0 = sqrt(n) b_n 은 어떻게든 분모를 유리화할수 있고, b_n = x_n sqrt(n) + y_n (x_n, y_n 은 유리수) 로 표현이 가능하다. 그래서, x_n, y_n 은 언젠가는 동일한 것이 나와서 순환할 것. sqrt(2) = [ 1; 2, 2, 2, ... ] 이다. sqrt(3) = [ 1; 1, 2, 1, 2, ... ] 이 과정을 프로그래밍해 본다. #!/usr/bin/env python # ----------------..
tksheet 으로 csv 파일 내용을 tkinter 창에서 보여주기 tksheet 이라는 패키지가 있다. tkinter 기반의 GUI 프로그래밍을 할 때에, table 형식의 데이터, 즉, pandas dataframe 형식의 데이터를 보여주는 위젯을 사용할 수 있다. tksheet github 에 있는 예제를 거의 그대로 가져와서 csv 파일을 읽어 보여주는 코드를 만들어 봤다. from tksheet import Sheet import tkinter as tk import pandas as pd class demo(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(0, weight=1) self.frame = tk.Fra..
python 3d plotting matplotlib SymPy plot plot_parametric plot_implicit plot3d plot3d_parametric_line plot3d_parametric_surface mayavi : 3d scientific visualization and plotting
파이썬 지수 수치계산방식에 따른 차이 """ calculate 50000 / n \ | 10 - 1 | | ------------ | | n | \ 10 / """ import math def f(n): return ((10 ** n - 1) / (10 ** n)) ** 50000 def f2(n): return (1 - 10 ** (-n)) ** 50000 def f_exp10_log10(n): exponent = 50000 * (math.log10(10 ** n - 1) - n) return 10 ** exponent def f_exp2_log2(n): exponent = 50000 * (math.log2(10 ** n - 1) - n * math.log2(10)) return 2 ** exponent def f_exp_ln(n): ex..
Q-Pochhammer def q_pochhammer(a, q, n): """ calculate q-pochhammer defined as n-1 k (a;q) = prod (1 - a q ) n k=0 """ product = 1 for k in range(n): term = 1 - a * (q ** k) product *= term return product for a, q, n in [ (2, 2, 1), (2, 2, 4), (5, 5, 4), (1 / 3, 1 / 3, 100), (1 / 2, 1 / 2, 1), (1 / 2, 1 / 2, 2), (1 / 2, 1 / 2, 3), (1 / 2, 1 / 2, 4), (1 / 2, 1 / 2, 10), (1 / 2, 1 / 2, 50), (1 / 2, 1 / 2, 100),..
0과 1 사이에서 랜덤하게 뽑은 숫자를 평균적으로 몇 번 더해야 1보다 커질까요? # 0과 1 사이에서 랜덤하게 뽑은 숫자를 평균적으로 몇 번 더해야 1보다 커질까요? import numpy as np import math import random def test(): s = 0 cnt = 0 while s < 1: r = random.random() s += r cnt += 1 return cnt def n_tests(N): tests = [test() for _ in range(N)] # print(tests) m = np.mean(tests) s = np.std(tests) print(m, s, N) def main(): for n in [100, 10000, 1000000, 10000000]: for _ in range(3): n_tests(n) print(math.e) if ..
[파이썬초보] AttributeError: 'NoneType' object has no attribute 이런 에러에 대해 질문을 하는 걸 자주 봐서 포스팅을 하나 만들어 놓습니다. 에러메시지를 해석해 보면, "'NoneType' 객체는 ~~ 애트리뷰트가 없습니다."라는 뜻입니다. NoneType 객체는 사실 None 입니다. 파이썬의 None 은 자바나 C의 Null 같은 것입니다. 그래서 결국 None.someattr 이런식의 코드가 유효하지 않기 때문에 발생하는 에러입니다. 제가 만든 예제를 보고 이해해 보도록 합시다. >>> class dummy: def bark(self): print("dum dum") >>> def get_dummy(n): if n > 10: return dummy() return >>> d = get_dummy(21) >>> d.bark() dum dum >>> d2 = get..