goo blog サービス終了のお知らせ 

CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

GBP/JPY5分足チャートをフーリエ変換するPythonプログラム

2023-03-13 20:52:28 | python

FXのGBP/JPYの5分足のチャートをフーリエ変換してチャートと一緒に表示するプログラムをPythonで書いて。

PythonでGBP/JPYの5分足のチャートを取得し、フーリエ変換を行い、元のチャートとフーリエ変換後のグラフを表示するプログラムを以下に示します。

まず、必要なライブラリをインストールします。

pip install mpl_finance yfinance numpy matplotlib

次に、以下のプログラムを実行します。

import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
from scipy.fftpack import fft, ifft

# GBP/JPYの5分足のチャートを取得する
symbol = " GBPJPY=X"
data = yf.download(symbol, interval="5m", period="1d")

# チャートを表示する
fig, ax = plt.subplots()
candlestick_ohlc(ax, data[['Open', 'High', 'Low', 'Close']].values, width=0.0005, colorup='g', colordown='r')
plt.show()

# 終値データを取得する
prices = data['Close'].values

# フーリエ変換を実行する
fft_values = fft(prices)

# フーリエ変換後のグラフを作成する
fig, ax = plt.subplots()
ax.plot(np.abs(fft_values))
plt.show()

このプログラムでは、yfinanceライブラリを使用して、GBP/JPYの5分足のチャートを取得し、matplotlibライブラリを使用してチャートを表示します。次に、フーリエ変換を実行し、np.abs関数を使用して結果の振幅スペクトルをプロットします。

また、candlestick_ohlc関数を使用して、ローソク足チャートを作成するためにmpl_financeライブラリをインポートしています。ただし、このライブラリは非推奨となっているため、代わりにmplfinanceライブラリを使用することが推奨されます。


任意の曲面を三次元フーリエ変換するPythonプログラムを書いて

2023-03-13 03:45:54 | python
任意の曲面を三次元フーリエ変換するPythonプログラムを書いて

3次元フーリエ変換を実行するPythonプログラムは以下のようになります。ここではnumpyとscipyのライブラリを使用します。

import numpy as np from scipy.fftpack import fftn, ifftn import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 3次元フーリエ変換 def fft3d(surface): return fftn(surface) # 3次元逆フーリエ変換 def ifft3d(fourier_surface): return ifftn(fourier_surface).real # メイン関数 def main(): # 3次元曲面を生成する x = np.linspace(-10, 10, 64) y = np.linspace(-10, 10, 64) z = np.linspace(-10, 10, 64) xv, yv, zv = np.meshgrid(x, y, z) surface = np.sin(np.sqrt(xv ** 2 + yv ** 2 + zv ** 2)) / np.sqrt(xv ** 2 + yv ** 2 + zv ** 2) # フーリエ変換する fourier_surface = fft3d(surface) # フーリエ逆変換して元の曲面を復元する restored_surface = ifft3d(fourier_surface) # 結果をプロットする fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.set_title("Restored Surface") ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") ax.plot_surface(xv, yv, restored_surface, cmap="gray") plt.show() if __name__ == "__main__": main()

このプログラムは、-10から10までの範囲のx、y、zの値を持つ64x64x64のメッシュグリッドを作成し、それに対してsin(sqrt(x^2 + y^2 + z^2))/sqrt(x^2 + y^2 + z^2)を適用して、3次元曲面を生成します。その後、生成された3次元曲面に対して3次元フーリエ変換を実行し、フーリエ逆変換によって復元された曲面を計算します。最後に、復元された曲面を3Dプロットして表示します。


PythonでMACD線を描画・リアルタイム分析

2023-03-12 20:18:28 | python
 
【FX×Python】MACDによるシストレ実践|外国為替相場のリアルタイムテクニカル分析・自動売買支援

【FX×Python】MACDによるシストレ実践|外国為替相場のリアルタイムテクニカル分析・自動売買支援

「PythonでMACDを用いたFXのテクニカル分析を実践したい」「システムトレードにテクニカル分析を適用しFX買い・売りシグナルを自動取得したい」このような要望にお応えします

DXCEL WAVE | AI・機械学習・データサイエンス・アナリティクス・RPA自動化・デジタルマーケティング・フィンテック等の最新デジタル技術を幅広く配信

PythonでMACD線を描画、さらにリアルタイムでテクニカル分析をしている。
そのソースコードも載ってる。
勉強になった!
これでSpectrometr separateインジケータをインポートできれば目標としているフーリエ解析逆指値トラリピEA開発にぐいっと近づく!
 
このサイトに載っているソースコードに
redのdata['macd']がblueのdata['macd_signal']を上回った時に現在の相場の20pips上に買いの逆指値を0.01ロット、
20pips下に売りの逆指値を0.01ロット入れるpythonのソースコードを付加して書いてください。
とChatGPTに質問してみたら・・・
 
YahooFinanceから取得したUSD/JPYの為替相場データを取得し、MACDテクニカル分析を行うPythonのソースコードは以下のようになります。
import numpy as np
import pandas as pd
import yfinance as yf
import talib data = yf.download(tickers = ' USDJPY=X', # 通貨ペア
period = '6mo', # データ取得期間
interval = '1d', # データ表示間隔 )
# 引数情報
fast_period = 10
# 短期指数移動平均線(EMA)の期間
slow_period = 25
# 長期指数移動平均線(EMA)の期間
signal_period = 8
# シグナル (MACDの指数平滑移動平均線)の期間
macd, macd_signal, macd_hist = talib.MACD(data['Close'],
# データ取得元
fast_period,
# 短期EMAの期間
slow_period,
# 長期EMAの期間
signal_period)
# シグナルの期間
# データ追加
data['macd'] = macd data['macd_signal'] = macd_signal import mplfinance as mpf
# データ分析範囲(直近6ヶ月分を指定)
period = 30 * 6 data = data.tail(period)
# グラフ可視化
graph = [ mpf.make_addplot(data['macd'], panel=2, color='red'), mpf.make_addplot(data['macd_signal'], panel=2, color='blue'), ] mpf.plot(data,
# データ
type='candle',
# グラフの種類('candle', 'line'等が指定可能)
volume=True,
# 出来高の表示有無
mav=(5,15), # 移動平均線(短期移動平均線の日数、長期移動平均線の日数)
style='yahoo', # グラフスタイル addplot=graph,
# 連結するグラフ情報
figratio=(12,9), # グラフ縦横の比率 )
 
redのdata['macd']がblueのdata['macd_signal']を上回った時に現在の相場の20pips上に買いの逆指値を0.01ロット、
20pips下に売りの逆指値を0.01ロット入れるpythonのソースコードを付加して書いてください。
 
# redのdata['macd']がblueのdata['macd_signal']を上回った場合
if data['macd'][-1] > data['macd_signal'][-1]:
    # 現在の相場の20pips上に買いの逆指値を0.01ロット入れる
    buy_stop_price = data['Close'][-1] + 0.0020
    print('Buy stop order:', buy_stop_price, '0.01 lots')
else:
    # 現在の相場の20pips下に売りの逆指値を0.01ロット入れる
    sell_stop_price = data['Close'][-1] - 0.0020
    print('Sell stop order:', sell_stop_price, '0.01 lots')
 
このコードは、MACDのラインとシグナルラインを比較して、MACDがシグナルラインを上回った場合に買いの逆指値を、下回った場合に売りの逆指値を設定します。現在の相場の20pipsを逆指値に加えるには、単純にdata['Close'][-1]に0.0020を足すことで実現できます。また、ロット数は0.01固定で設定しています。
 
と返答があった。マジか?

ZOZOTOWNお宝キーワードマイニングツール開発企画

2023-03-12 18:44:36 | python
ZOZOTOWNで高値で売れている商品に関するキーワードをデータマイニングするプログラムをpythonで書いてください

以下は、Pythonを使ってZOZOTOWNの高値で売れている商品に関するキーワードをデータマイニングするための基本的なスクリプトです。ただし、データを取得するためのWebスクレイピングや、データの解析方法によっては、ZOZOTOWNの利用規約に違反することがあるため、注意が必要です。

import requests from bs4 import BeautifulSoup # 商品ページのURLを指定する url = "https://zozo.jp/search/?p_cd=&t_p=1&prl=&cate=&brand=&size=&color=&price_min=&price_max=&order=2&cntr=&tag_id=&tag_ids=&sale=&key=&c_id=&p_ptype=&s_id=&ev_id=&s_mode=&block_no=&p_kind=&p_kind_s=&p_kind_n=&block_cd=&sex=&sale=&rl=&brand_id=&year=&season=&searchmode=category&category=0300&pageno=1" # WebページのHTMLを取得する response = requests.get(url) html = response.content # BeautifulSoupを使ってHTMLを解析する soup = BeautifulSoup(html, "html.parser") # 商品名を含む要素を取得する item_elements = soup.select("div[data-product-name]") # 商品名を取得する item_names = [e.get("data-product-name") for e in item_elements] # 商品価格を含む要素を取得する price_elements = soup.select("div[data-product-price]") # 商品価格を取得する item_prices = [e.get("data-product-price") for e in price_elements] # 商品名と価格を表示する for name, price in zip(item_names, item_prices): print(f"{name}: {price}")

このスクリプトは、ZOZOTOWNの「レディースファッション」カテゴリーの商品ページの1ページ目から、商品名と価格を取得して表示します。商品名や価格以外にも、カテゴリーやブランド、色などの情報を取得することができます。また、同じようなスクリプトを複数のページに対して実行することで、より多くのデータを取得することができます。ただし、ZOZOTOWNの利用規約に違反しないように注意してください。




楽天お宝キーワードマイニングツール開発企画

2023-03-12 18:40:16 | python
楽天で高値で売れている商品に関するキーワードをデータマイニングするプログラムをpythonで書いてください

楽天で高値で売れている商品に関するキーワードをデータマイニングするプログラムをPythonで書くためには、楽天APIを使用する必要があります。以下は、楽天APIを使用して、楽天市場の商品情報を取得し、売れ筋ランキングの上位商品からキーワードを抽出するPythonコードの例です。

import requests import json # APIのURLとパラメーターを設定する url = "https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628" params = { "applicationId": "YourApplicationID", # 楽天APIのアプリケーションIDを設定する "affiliateId": "YourAffiliateID", # 楽天APIのアフィリエイトIDを設定する "format": "json", "genreId": "0", # ジャンルIDを指定する。0はすべてのジャンルを指定することを意味する "page": "1", # 取得するページ番号を指定する。1ページあたり30件の商品情報を取得する } # APIにリクエストを送信する response = requests.get(url, params=params) # レスポンスのJSONデータをパースする data = json.loads(response.text) # 売れ筋ランキングの上位商品からキーワードを抽出する for item in data["Items"]: if int(item["rank"]) <= 10: # 上位10位までの商品について print(item["itemName"]) # 商品名を表示する print(item["itemPrice"]) # 商品価格を表示する print(item["itemCaption"]) # 商品説明を表示する # 商品説明からキーワードを抽出する処理を記述する

この例では、楽天APIのIchibaItem/Ranking APIを使用して、売れ筋ランキングの上位商品を取得しています。売れ筋ランキングの上位10位までの商品について、商品名、商品価格、商品説明を表示しています。また、商品説明からキーワードを抽出する処理を記述することで、楽天で高値で売れている商品に関するキーワードを取得することができます。具体的なキーワード抽出の方法は、自然言語処理の技術を使用することが一般的です。







Amazonお宝キーワードマイニングツール開発企画

2023-03-12 18:36:28 | python
amazonで高値で売れている商品に関するキーワードをデータマイニングするプログラムをpythonで書いてください

ご質問いただきありがとうございます。以下は、Amazonのトップセラー商品からキーワードを取得するPythonスクリプトの例です。プログラムは、AmazonのAPIを使用してトップセラー商品を取得し、商品の説明からキーワードを抽出します。

import requests from bs4 import BeautifulSoup import pandas as pd # AmazonのAPIからトップセラー商品を取得 url = "https://www.amazon.com/gp/bestsellers/?ref_=nav_cs_bestsellers" html = requests.get(url).text soup = BeautifulSoup(html, "html.parser") top_seller_items = soup.find_all("div", {"class": "a-section a-spacing-none aok-relative"}) # 各商品からキーワードを抽出してリストに追加 keywords = [] for item in top_seller_items: product_url = "https://www.amazon.com" + item.find("a", {"class": "a-link-normal"})["href"] product_html = requests.get(product_url).text product_soup = BeautifulSoup(product_html, "html.parser") description = product_soup.find("div", {"id": "productDescription"}).get_text().strip() words = description.split() for word in words: if len(word) > 3 and word not in keywords: keywords.append(word) # 抽出されたキーワードをデータフレームに格納して表示 df = pd.DataFrame(keywords, columns=["Keyword"]) print(df.head())

このスクリプトは、Amazonのトップセラー商品ページから商品のURLを取得し、商品の説明からキーワードを抽出して、データフレームに格納して表示します。このスクリプトを実行するには、requests、BeautifulSoup、pandasのライブラリが必要です。また、AmazonのAPIを使用するためには、APIキーが必要になります。


Python 3 エンジニア認定基礎試験

2023-03-12 18:21:00 | python
Python 3 エンジニア認定基礎試験
基礎試験

基礎試験

Python 3 エンジニア認定基礎試験 【キャンペーン】受験宣言をしてPython書籍・データ分析書籍をもら…

Python試験・資格、データ分析試験・資格を運営する一般社団法人Pythonエンジニア育成推進協会のページです。

試験対策は今のところ、この2冊のみ。

出題範囲:主教材であるオライリー・ジャパン「Pythonチュートリアル(2021年9月1日より第四版に対応します)」

徹底攻略Python 3 エンジニア認定[基礎試験]問題集 https://amzn.asia/d/cJwTqid


2023年3月13日発売予定とのことだったが、3月12日の今日ジュンク堂書店に行ってきたらすでに売りに出されていた。
薄すぎて頼りにならないと感じたので買わなかった。
この資格自体があまり価値がないみたいなので、どうせ資格を取るならRuby技術者認定試験かOracleJAVASilverの勉強をした方がマシだと思った。

ちなみにさらに上級の試験としてPython 3 エンジニア認定実践試験がある。

ヤフオクお宝キーワードマイニングツール開発企画

2023-03-12 17:54:33 | python
ヤフオクで高値で売れている商品に関するキーワードをヤフオクからデータマイニングして取得し、他所で安く仕入れて転売して稼げるのではないか?と思ったのがアイデアの原点。

ヤフーオークションで高値で売れている商品に関するキーワードをデータマイニングするプログラムをpythonで書いてください

ヤフーオークションにはWeb APIが提供されていないため、Pythonを使用してヤフーオークションから情報を収集するためには、Webスクレイピングを行う必要があります。以下は、PythonのBeautifulSoupとrequestsを使用して、ヤフーオークションから最も高値で売れている商品に関するキーワードを収集するプログラムの例です。

import requests
from bs4 import BeautifulSoup
from collections import Counter

# キーワードを収集するための関数
def get_top_keywords(url):
# 商品ページを取得する
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# キーワードを収集する
keywords = []
for keyword_elem in soup.find_all('a', {'class': 'ProductTag__tagLink___3JZW8'}):
keywords.append(keyword_elem.get_text().strip())

# キーワードの出現頻度をカウントする
top_keywords = Counter(keywords).most_common(5)
return [keyword[0] for keyword in top_keywords]

# 最も高値で売れた商品のURLを取得する
response = requests.get('https://auctions.yahoo.co.jp/closedsearch/closedsearch?select=7&p=%E6%9C%80%E9%AB%98%E5%80%A4%E3%81%A7%E5%A3%B2%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B')
soup = BeautifulSoup(response.content, 'html.parser')
top_item_url = soup.find('ul', {'class': 'SearchResult__list___2um0X'}).find('a')['href']

# キーワードを収集する
top_keywords = get_top_keywords(top_item_url)

# 結果を表示する
print('最も高値で売れている商品のURL:', top_item_url)
print('関連するキーワード:')
for keyword in top_keywords:
print('-', keyword)
このプログラムでは、以下の手順に従って処理を行います。

requestsモジュールを使用して、ヤフーオークションの「最も高値で売れている商品」ページを取得します。
BeautifulSoupを使用して、最も高値で売れている商品のURLを取得します。
取得したURLから商品ページを取得し、BeautifulSoupを使用して、商品ページから関連するキーワードを取得します。
取得したキーワードの出現頻度をカウントし、上位5つのキーワードを表示します。
このプログラムは、ヤフーオークションのWebサイトの構造が変更された場合には正しく動作しない可能性があります。また、WebスクレイピングはWebサイトの利用規約に違反する場合があります

Python 3 エンジニア認定基礎試験の4択問題を正解・解説付きで3問出題

2023-03-11 22:30:59 | python

Python 3 エンジニア認定基礎試験の4択問題を正解・解説付きで出題お願いします

はい、Python 3 エンジニア認定基礎試験の4択問題を出題いたします。以下の3問をお楽しみください。

  1. 以下のコードを実行した場合、どのような結果が返されるでしょうか?
css<button class="flex ml-auto gap-2">Copy code</button>
a = [1, 2, 3]
b = a
a.append(4)
print(b)

a) [1, 2, 3]

b) [1, 2, 3, 4]

c) [1, 2, 4]

d) エラーが発生する。

 

【正解】 b) [1, 2, 3, 4]

【解説】 リストaをリストbに代入すると、abは同じオブジェクトを参照します。そのため、aに要素を追加すると、bにも要素が追加されます。

 

  1. 以下のコードを実行した場合、どのような結果が返されるでしょうか?
css<button class="flex ml-auto gap-2">Copy code</button>
a = [1, 2, 3]
b = a.copy()
a.append(4)
print(b)

a) [1, 2, 3]

b) [1, 2, 3, 4]

c) [1, 2, 4]

d) エラーが発生する。

 

【正解】 a) [1, 2, 3]

【解説】 copy()メソッドを使用してリストabにコピーした場合、abは異なるオブジェクトを参照するため、aに要素を追加してもbには影響を与えません。

 

  1. 以下のコードを実行した場合、どのような結果が返されるでしょうか?
python<button class="flex ml-auto gap-2">Copy code</button>
for i in range(3):
    print(i)
else:
    print("done")

a) 0, 1, 2

b) 0, 1, 2, done

c) done

d) エラーが発生する。

 

【正解】 b) 0, 1, 2, done

【解説】 forループが正常に終了した場合、elseブロックが実行されます。そのため、ループの最後に"done"が出力されます。


PythonでGBP/JPY5分足のリアルタイムFFTプログラムを書くには?

2023-03-09 16:50:08 | python
Python言語を使って次のプログラムを書いてください。
yahoofinanceからリアルタイムでGBP/JPYのヒストリカルデータを取得してローソク足の5分足で表示する。
このヒストリカルデータを利用してリアルタイムでFFTを行い、ローソク足の5分足表示の下に波形を表示する。

申し訳ありませんが、私はAPIキーなどの機密情報を保持していないため、yahoofinanceからデータを取得することはできません。しかし、プログラムのフレームワークを提供し、取得されたデータをFFTを使用して処理する方法を説明します。

まず、必要なライブラリをインストールします。次のコマンドを使用して、pyplotとyfinanceをインストールします。

pip install matplotlib yfinance

それから、以下のようなPythonスクリプトを作成します。

import yfinance as yf import numpy as np from scipy.fft import fft import matplotlib.pyplot as plt import mpl_finance as mpf import datetime as dt # yahoofinanceからGBP/JPYの過去5日間の1分足のデータを取得する ticker = yf.Ticker(" GBPJPY=X") df = ticker.history(period="5d", interval="1m") # データを5分足に変換する df_resampled = df.resample("5T").agg({ "Open": "first", "High": "max", "Low": "min", "Close": "last", "Volume": "sum" }).dropna() # ローソク足チャートを描画する fig, ax = plt.subplots() mpf.candlestick2_ohlc(ax, df_resampled['Open'], df_resampled['High'], df_resampled['Low'], df_resampled['Close'], width=0.5, colorup='g', colordown='r') ax.set_title('GBP/JPY 5-minute chart') # データをFFTにかける data = df_resampled['Close'].values data_fft = fft(data) # FFTの結果を描画する fig, ax = plt.subplots() n = len(data_fft) freq = np.fft.fftfreq(n) freq_in_hz = abs(freq * 1 / (5 * 60)) ax.plot(freq_in_hz, abs(data_fft)) ax.set_xlabel('Frequency [Hz]') ax.set_ylabel('Amplitude') ax.set_title('FFT result of GBP/JPY 5-minute chart') plt.show()

このスクリプトは、yahoofinanceからGBP/JPYの過去5日間の1分足のデータを取得します。次に、データを5分足に変換してローソク足チャートを描画します。最後に、データをFFTにかけて結果を描画します。 それぞれのグラフは別々のウィンドウで表示されます。

FFTの結果をローソク足チャートの下に描画するには、Matplotlibのsubplot機能を使用して、2つのグラフを同じウィンドウ内に描画することができます。以下のようにスクリプトを変更して、FFTの結果をローソク足チャートの下に表示することが
でバックレましたwww

ついでにBing AIチャットにこのソースコードの間違い探しを依頼したら、

このPythonプログラムは、yfinanceというライブラリを使用して、GBP/JPYの過去5日間の1分足のデータを取得し、5分足に変換してローソク足チャートを描画し、さらにFFT(高速フーリエ変換)を使用してデータを解析するものです。

このプログラムには、特に間違いは見当たりません。ただし、mpl_financeというライブラリは非推奨であり、代わりにmplfinanceというライブラリが推奨されています。そのため、import mpl_finance as mpfimport mplfinance as mpf に変更することができます。


だとよ。ホントか?

P.S.

結局、ChatGPTとBing AI-Chatのどちらも間違いだらけでダメ!

自力でエラーとなった部分を直せるスキルのある人向けのChatGPTの使い方と言える。


積分ドリルアプリをPythonで作る。

2023-03-08 05:21:19 | python

任意の関数を不定積分するクイズ。手書きで入力させ、AIで手書きの画像を判定させるアプリをPythonで作って。

手書きの数式を認識するために、Pythonで提供されるDeep Learningライブラリの一つであるKerasを使用することができます。また、数式の不定積分の問題を生成するために、SymPyを使用することができます。以下は、これらのライブラリを使用して、指定された要件に基づいたシンプルなアプリの例です。
import random import sympy import numpy as np import keras import cv2 # SymPyを使用して、ランダムな不定積分の問題を生成する x = sympy.Symbol('x') f = sympy.integrate(sympy.sin(x)*sympy.exp(x), x) # Kerasを使用して、手書きの数式を認識するモデルを定義する model = keras.models.load_model('handwriting_recognition_model.h5') # OpenCVを使用して、カメラから画像をキャプチャし、数式を手書きすることができるようにする cap = cv2.VideoCapture(0) # メインループ while True: # カメラから画像をキャプチャする ret, frame = cap.read() # 数式を含む領域を検出する gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if len(contours) > 0: cnt = max(contours, key=cv2.contourArea) x, y, w, h = cv2.boundingRect(cnt) if w > 10 and h > 10: roi = gray[y:y+h, x:x+w] roi_resized = cv2.resize(roi, (28, 28), interpolation=cv2.INTER_AREA) roi_resized = cv2.bitwise_not(roi_resized) roi_resized = roi_resized / 255.0 roi_reshaped = roi_resized.reshape(1, 28, 28, 1) prediction = model.predict(roi_reshaped) result = np.argmax(prediction) # 正解の場合は次の問題を生成する if result == 0: f = sympy.integrate(random.randint(0, 9)*sympy.sin(x)*sympy.exp(x), x) print("Correct!") else: print("Incorrect!") # 画像を表示する cv2.imshow('Handwriting Recognition', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
この例では、SymPyを使用して、ランダムな不定積分の問題を生成します。この問題は、ユーザーによって手書きされた数式を含む領域を検出するために、OpenCVを使用して処理されます。検出された・・・
途中でバックレましたwww
(゚Д゚)ゴルァ!!
エラーメッセージ
Traceback (most recent call last):
File "C:/Users/User/Desktop/sekibunkuizu.py", line 4, in <module>
import keras
File "C:UsersUserAppDataLocalProgramsPythonPython311Libsite-packageskeras__init__.py", line 21, in <module>
from keras import models
File "C:UsersUserAppDataLocalProgramsPythonPython311Libsite-packageskerasmodels__init__.py", line 18, in <module>
from keras.engine.functional import Functional
File "C:UsersUserAppDataLocalProgramsPythonPython311Libsite-packageskerasengine unctional.py", line 24, in <module>
import tensorflow.compat.v2 as tf
ModuleNotFoundError: No module named 'tensorflow'

P.S.
bingのチャットAIの回答は、
あなたは、任意の関数を不定積分するクイズを作成し、手書きで入力させ、AIで手書きの画像を判定させるアプリをPythonで作成したいと考えていますね。それは面白いプロジェクトですね。どのようにお手伝いできますか?

で終わり。
ChatGPTを超えるとのウワサだったが、大したことねーなwww

足し算ぷよぷよ擬きアプリをpythonで作るには?

2023-03-08 05:11:12 | python
ランダムな一桁の数字の列を縦20列、横10列並べ、上から縦二つのランダムな数字が並んだブロックが落ちてきて数字の列に触れたら、触れている部分との和を入力させる。正解したら、触れている部分の数字が消える。2秒以内に答えられない場合はゲームエンド。
アプリをpythonで作成してください。
以下は、Pythonで提供されるpygameライブラリを使用して、指定された要件に基づいたシンプルなゲームの例です。この例では、ランダムな数字の列を縦に20行、横に10列並べ、落ちてくるブロックに触れた場合にユーザーに和を求め、2秒以内に答えられない場合にゲームを終了するものとなっています。
import random import pygame import time # 初期化 pygame.init() width, height = 500, 500 screen = pygame.display.set_mode((width, height)) clock = pygame.time.Clock() # 色の定義 BLACK = (0, 0, 0) WHITE = (255, 255, 255) # フォントの設定 font = pygame.font.Font(None, 36) # 数字の列の生成 num_columns = 10 num_rows = 20 num_list = [[random.randint(0, 9) for i in range(num_rows)] for j in range(num_columns)] # ブロックの初期化 block_width, block_height = 30, 30 block_x, block_y = random.randint(0, num_columns - 1), 0 block_speed = 1 # ゲームの初期化 score = 0 game_over = False # メインループ while not game_over: # イベントの処理 for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RETURN: # 答えを確認し、ブロックが接触している部分を消す if block_y > 0: answer = input("Enter the sum: ") if int(answer) == num_list[block_x][block_y] + num_list[block_x][block_y-1]: num_list[block_x][block_y] = -1 num_list[block_x][block_y-1] = -1 score += 1 else: game_over = True # 描画の処理 screen.fill(WHITE) # 数字の列を描画する for i in range(num_columns): for j in range(num_rows): num_text = font.render(str(num_list[i][j]), True, BLACK) num_rect = num_text.get_rect() num_rect.center = ((i+1)*block_width - block_width/2, (j+1)*block_height - block_height/2) screen.blit(num_text, num_rect) # ブロックを描画する block_rect = pygame.Rect(block_x * block_width, block_y * block_height, block_width, block_height) pygame.draw.rect(screen, BLACK, block_rect) # ブロックの位置を更新する block_y += block_speed if block_y >= num_rows or num_list[block_x][block_y] >= 0: block_x, block_y = random.randint(0, num_columns - 1), 0 # スコアを表示する score_text = font.render(f"Score: {
・・・途中で死亡www
エラー
pygame 2.2.0 (SDL 2.0.22, Python 3.11.1)
Hello from the pygame community. https://www.pygame.org/contribute.html
と表示され、何もないウィンドウが開くだけで終わり。

世界を旅するクイズアプリをpythonで作るには?

2023-03-08 04:37:03 | python

世界中をランダムに旅をし、その国についてのクイズを出すアプリのプログラムをpythonで作成してください。背景にはその国の首都と国旗の画像を表示させる。正解した時はその国の国歌が鳴って別の国に移動できる。不正解の場合は正解するまで移動できない。三回の不正解でゲームエンド。

 
以下が、Pythonで上記の要件に基づいたクイズアプリの例です。この例では、pycountryライブラリを使用して、国の情報を取得しています。
import random
import pycountry
import playsound
from PIL import Image
 
# ゲームに使用する国のリストを作成する
countries = list(pycountry.countries)
 
# ゲームの初期化
score = 0
mistake_count = 0
 
while True:
# ランダムに国を選択する
country = random.choice(countries)
 
# 国の情報を取得する
country_name = country.name
capital_name = country.capital
flag_url = f"https://www.countryflags.io/{country.alpha_2}/flat/64.png"
anthem_file = f"{country.alpha_3}.mp3"
 
# 背景に国旗を表示する
flag_image = Image.open(requests.get(flag_url, stream=True).raw)
flag_image.show()
 
# クイズの質問を表示する
print(f"What is the capital city of {country_name}?")
 
# ユーザーから回答を受け取る
answer = input("Enter your answer: ")
 
# 回答をチェックする
if answer.lower() == capital_name.lower():
# 正解の場合、スコアを加算し、国歌を再生する
score += 1
print("Correct!")
playsound.playsound(anthem_file)
else:
# 不正解の場合、ミスカウントを加算し、再度質問する
mistake_count += 1
print("Incorrect!")
if mistake_count == 3:
# 3回失敗した場合、ゲームオーバーとする
print("Game over!")
break
 
# スコアを表示する
print(f"Score: {score}")
 
このコードでは、pycountryライブラリを使用して、全ての国のリストを取得し、ランダムに国を選択します。次に、選択された国の名前、首都、国旗のURL、国歌のファイル名を取得します。そして、国旗を表示し、ユーザーに首都の名前を尋ねます。ユーザーの回答をチェックして、正解の場合はスコアを加算し、国歌を再生します。不正解の場合は、ミスカウントを加算し、ユーザーが3回間違えた場合にゲームオーバーとします。また、スコアも表示します。
 
何だかちょっと違うけど、ま~いいか。
 
エラーメッセージ: 'break' outside loop
 

Pythonで動体視力訓練アプリを作るには?

2023-03-08 00:00:25 | python
pythonで動体視力訓練アプリを作ります。任意の四桁のランダムな数字が左から右へ任意のスピードで流れ、指定された四桁の数字が見えたらストップボタンを押すと止まるものとします。スピードは任意に変えられるものとします。ウィジェットを使ったプログラムを書いてください。

以下は、PythonのGUIライブラリーであるTkinterを使用して、動体視力訓練アプリを作成するためのプログラム例です。

import tkinter as tk import random import time class VisionTrainingApp: def __init__(self, master): self.master = master master.title("Dynamic Vision Training App") # 数字の長さとスピードを設定する self.digit_length = 4 self.speed = 10 # ラベルを作成する self.label = tk.Label(master, font=("Helvetica", 36)) self.label.pack(pady=50) # スタートボタンを作成する self.start_button = tk.Button(master, text="START", command=self.start_training) self.start_button.pack(side=tk.LEFT, padx=50) # ストップボタンを作成する self.stop_button = tk.Button(master, text="STOP", command=self.stop_training, state=tk.DISABLED) self.stop_button.pack(side=tk.LEFT, padx=50) # 数字を生成する self.target_digit = self.generate_digit() # ビューの更新を開始する self.update_view() def generate_digit(self): # ランダムな数字を生成する return str(random.randint(0, 10**self.digit_length-1)).zfill(self.digit_length) def update_view(self): # ランダムな数字を生成する digit = self.generate_digit() # ラベルに数字を表示する self.label.config(text=digit) # 数字を移動する self.master.after(self.speed, self.update_view) def start_training(self): # スタートボタンを無効にする self.start_button.config(state=tk.DISABLED) # ストップボタンを有効にする self.stop_button.config(state=tk.NORMAL) # ターゲットの数字を生成する self.target_digit = self.generate_digit() def stop_training(self): # スタートボタンを有効にする self.start_button.config(state=tk.NORMAL) # ストップボタンを無効にする self.stop_button.config(state=tk.DISABLED) # ターゲットの数字を表示する self.label.config(text=self.target_digit) root = tk.Tk() app = VisionTrainingApp(root) root.mainloop()

このプログラムでは、Tkinterを使用してウィンドウを作成し、数字を表示するためのラベルを作成します。数字は、指定されたスピードでランダムに生成され、ラベルに表示されます。スタートボタンを押すと、数字がランダムに生成され始め、ストップボタンを押すと、現在表示されている数字がターゲット数字であるかどうかが確認されます。スピードは、数字を更新するための遅延時間として指定されます。数字の桁数は、digit_length変数で指定されます。


Amazonkindleを使って速読訓練をするpythonプログラム

2023-03-07 23:43:38 | python

AmazonKindleを使って速読訓練をするプログラムをpythonで書いてください。訓練に使う本は任意の購入した本から選ぶものとします。

 
AmazonKindleには、Kindle for PCやKindle for Macなどのアプリケーションがあります。これらのアプリケーションを使用して、購入した本を読み込んで速読訓練を行うことができます。以下は、Pythonを使用してKindle for PCを起動し、指定された本を開き、自動的にページをめくるプログラムの例です。
 
import os import time book_title = "速読訓練の本のタイトル" # 訓練に使用する本のタイトルを指定する page_turn_delay = 1 # ページをめくるときの待機時間(秒) # Kindle for PCの実行ファイルのパスを指定する kindle_exe_path = r"C:Program Files (x86)AmazonKindleapplicationKindle.exe" # Kindle for PCを起動する os.startfile(kindle_exe_path) # Kindle for PCが起動するのを待つ time.sleep(5) # ブックタイトルを検索する os.system('cmd /c "echo ' + book_title + ' | clip"') os.system('cmd /c "start Kindle://find/' + book_title + '"') # ページをめくる while True: os.system('cmd /c "start Kindle://page/next"') time.sleep(page_turn_delay)
 
このプログラムでは、osモジュールを使用してKindle for PCを起動し、指定された本を開きます。ページをめくるために、Kindle for PCのURLスキームを使用しています。このプログラムでは、ページを1秒ごとにめくるように設定されていますが、必要に応じてページめくる間隔を調整することができます。また、このプログラムを実行する前に、Kindle for PCの実行ファイルのパスを正しく設定する必要があります。
 
追加質問
では、読む所にポインターを表示させて任意のスピードで自動で動くようにするにはどう書けばいいの?
 
読む位置にポインターを表示し、任意のスピードで自動的に移動するには、PythonのGUIライブラリーであるTkinterを使用することができます。以下は、Tkinterを使用してポインターを表示し、任意のスピードで自動的に移動するプログラムの例です。
 
import tkinter as tk import time # 表示するテキストを指定する text = "速読訓練の本の内容" # ポインターのスピードを指定する(単位はピクセル/秒) pointer_speed = 50 # ウィンドウのサイズを指定する width = 800 height = 600 # ウィンドウを作成する root = tk.Tk() root.title("Speed Reading Trainer") root.geometry("{}x{}".format(width, height)) # ラベルを作成する label = tk.Label(root, text=text, font=("Helvetica", 18)) label.pack() # ポインターを作成する pointer = tk.Frame(root, width=2, height=height, bg="red") pointer.place(x=0, y=0) # ポインターの移動距離を計算する pointer_distance = (width + len(text) * 18) / pointer_speed # ポインターを移動する while True: pointer.place(x=pointer.winfo_x() + 1, y=0) root.update() if pointer.winfo_x() > pointer_distance: break time.sleep(0.1) # ウィンドウを閉じる root.destroy()
 
このプログラムでは、Tkinterを使用してウィンドウを作成し、ラベルに表示するテキストを指定します。ポインターは、TkinterのFrameを使用して作成され、ウィンドウの左端に配置されます。ポインターの移動距離は、ポインターのスピードに基づいて計算され、ポインターは指定された速度で移動します。ポインターがウィンドウの右端に達すると、プログラムは自動的に終了します。
 
エラーとなったので
# Kindle for PCの実行ファイルのパスを指定する
kindle_exe_path = r"C:\Users\User\AppData\Local\Amazon\Kindle\application\Kindle.exe"
に変えたらえらいことになった。
ログイン&利用規約の読むとかのウィンドウが何回も開き、本が開けませんとかアラートがでてフリーズしかけたので強制終了する羽目になった。