<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          10 個令人驚嘆的 Python 自動化腳本!

          共 35020字,需瀏覽 71分鐘

           ·

          2024-06-04 07:21

          ??我的小冊 45章教程:(小白零基礎(chǔ)用Python量化股票分析小冊) ,原價299,限時特價2杯咖啡,滿100人漲10元。

          轉(zhuǎn)自:網(wǎng)絡(luò)

          /01/ 剪貼板管理器

          你是否曾發(fā)現(xiàn)自己忙于處理多個文本片段,而忘記了自己復(fù)制了什么?有沒有想過有一個工具可以記錄你一天中復(fù)制的所有內(nèi)容?

          這個自動化腳本可以監(jiān)控你復(fù)制的所有內(nèi)容,將復(fù)制的每個文本無縫地存儲在一個時尚的圖形界面中,這樣你就不必在無盡的標(biāo)簽頁中搜索,也不會丟失一些有價值的信息。

          該自動化腳本利用Pyperclip庫的強(qiáng)大功能無縫捕獲復(fù)制數(shù)據(jù),并集成了Tkinter以可視化方式跟蹤和管理復(fù)制的文本。

          import tkinter as tk
          from tkinter import ttk
          import pyperclip

          def update_listbox():
              new_item = pyperclip.paste()
              if new_item not in X:
                  X.append(new_item)
                  listbox.insert(tk.END, new_item)
                  listbox.insert(tk.END, "----------------------")
              listbox.yview(tk.END)
              root.after(1000, update_listbox)

          def copy_to_clipboard(event):
              selected_item = listbox.get(listbox.curselection())
              if selected_item:
                  pyperclip.copy(selected_item)

          X = []

          root = tk.Tk()
          root.title("Clipboard Manager")
          root.geometry("500x500")
          root.configure(bg="#f0f0f0")

          frame = tk.Frame(root, bg="#f0f0f0")
          frame.pack(padx=10, pady=10)

          label = tk.Label(frame, text="Clipboard Contents:", bg="#f0f0f0")
          label.grid(row=0, column=0)

          scrollbar = tk.Scrollbar(root)
          scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

          listbox = tk.Listbox(root, width=150, height=150, yscrollcommand=scrollbar.set)
          listbox.pack(pady=10)
          scrollbar.config(command=listbox.yview)

          update_listbox()

          listbox.bind("<Double-Button-1>", copy_to_clipboard)

          root.mainloop()

          應(yīng)用

          • 捕捉從各種來源復(fù)制的研究筆記并進(jìn)行分類。
          • 擴(kuò)展腳本可以捕捉重要的日歷事件、提醒事項、密碼等。

          /02/ 代碼質(zhì)量檢查器

          每個開發(fā)人員都會遇到這樣的挫折:在 Python 代碼中查找錯誤,卻發(fā)現(xiàn)自己迷失在錯誤的迷宮中。作為開發(fā)人員,我們深知編寫簡潔高效代碼的重要性,但手動分析代碼質(zhì)量可能是一項壓力巨大的任務(wù)。

          本自動化腳本利用 Pylint 和 Flake8 Python 軟件包對代碼質(zhì)量進(jìn)行全面審查。將你的代碼與編碼標(biāo)準(zhǔn)進(jìn)行比較,并找出邏輯錯誤。它可確保的代碼符合行業(yè)最佳實(shí)踐并保持無錯。

          import os
          import subprocess

          def analyze_code(directory):
              # List Python files in the directory
              python_files = [file for file in os.listdir(directory) if file.endswith('.py')]

              if not python_files:
                  print("No Python files found in the specified directory.")
                  return

              # Analyze each Python file using pylint and flake8
              for file in python_files:
                  print(f"Analyzing file: {file}")
                  file_path = os.path.join(directory, file)

                  # Run pylint
                  print("\nRunning pylint...")
                  pylint_command = f"pylint {file_path}"
                  subprocess.run(pylint_command, shell=True)

                  # Run flake8
                  print("\nRunning flake8...")
                  flake8_command = f"flake8 {file_path}"
                  subprocess.run(flake8_command, shell=True)

          if __name__ == "__main__":
              directory = r"C:\Users\abhay\OneDrive\Desktop\Part7"
              analyze_code(directory)
          對一個舊 Python 腳本進(jìn)行代碼質(zhì)量審查時的輸出結(jié)果,該腳本通過網(wǎng)絡(luò)應(yīng)用程序?qū)⑽募D(zhuǎn)換為不同格式

          應(yīng)用

          • 自動代碼增強(qiáng)器 - 對該腳本稍作擴(kuò)展,可用于創(chuàng)建一個 Python 腳本,用于識別代碼中的問題并作出相應(yīng)修改。
          • 自動代碼審查。

          /03/ 不篡改文件

          文件篡改又稱數(shù)據(jù)篡改,是指未經(jīng)授權(quán)故意更改信息,包括破壞、篡改或編輯數(shù)據(jù)。

          全球許多威脅行為者濫用文件篡改技術(shù),在關(guān)鍵系統(tǒng)文件中引入不同的漏洞或后門,從而危及安全性并使未經(jīng)授權(quán)的訪問成為可能。

          要降低這種風(fēng)險,關(guān)鍵是要驗證文件的完整性,確保它們與原始狀態(tài)保持一致。這個自動化腳本可以幫助你測試任何文件,并識別其是否被篡改。

          import hashlib
          import os

          def calculate_sha256(file_path):
              sha256 = hashlib.sha256()
              with open(file_path, 'rb'as file:
                  for chunk in iter(lambda: file.read(4096), b''):
                      sha256.update(chunk)
              return sha256.hexdigest()

          def check_integrity(file_path, expected_checksum):
              actual_checksum = calculate_sha256(file_path)
              return actual_checksum == expected_checksum

          if __name__ == "__main__":
              file_path = input("Enter the path to the file: ")
              expected_checksum = input("Enter the expected SHA-256 checksum: ")

              if os.path.isfile(file_path):
                  if check_integrity(file_path, expected_checksum):
                      print("File integrity verified: The file has not been tampered with.")
                  else:
                      print("File integrity check failed: The file may have been tampered with.")
              else:
                  print("Error: File not found.")
          使用樣本 ZIP 文件(未篡改)進(jìn)行腳本測試
          使用樣本 ZIP 文件(篡改)進(jìn)行腳本測試


          /04/ 智能交易

          交易是指買賣股票、債券、貨幣、商品或衍生品等金融工具,以獲取利潤。期刊交易員整天都在查看不同的儀表盤,試圖找出買入或賣出的完美決策。

          這個自動化腳本可以幫助交易者和投資者很好地了解你愿意投資的任何股票。它利用*****Prophet* Python 庫,根據(jù)從雅虎財經(jīng)獲取的歷史股票數(shù)據(jù)預(yù)測近期股票價格。

          import streamlit as st
          from datetime import date

          import yfinance as yf
          from prophet import Prophet
          from prophet.plot import plot_plotly
          from plotly import graph_objs as go

          START = "2015-01-01"
          TODAY = date.today().strftime("%Y-%m-%d")

          st.title('Stock Forecast App')

          stocks = ('MSFT',"TSLA",'GOOG''AAPL'"NVDA")
          selected_stock = st.selectbox('Select dataset for prediction', stocks)

          n_years = st.slider('Years of prediction:'14)
          period = n_years * 365


          @st.cache
          def load_data(ticker):
              data = yf.download(ticker, START, TODAY)
              data.reset_index(inplace=True)
              return data

           
          data_load_state = st.text('Loading data...')
          data = load_data(selected_stock)
          data_load_state.text('Loading data... done!')

          st.subheader('Raw data')
          st.write(data.tail())

          # Plot raw data
          def plot_raw_data():
           fig = go.Figure()
           fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="stock_open"))
           fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="stock_close"))
           fig.layout.update(title_text='Time Series data with Rangeslider', xaxis_rangeslider_visible=True)
           st.plotly_chart(fig)
           
          plot_raw_data()

          # Predict forecast with Prophet.
          df_train = data[['Date','Close']]
          df_train = df_train.rename(columns={"Date""ds""Close""y"})

          m = Prophet()
          m.fit(df_train)
          future = m.make_future_dataframe(periods=period)
          forecast = m.predict(future)

          # Show and plot forecast
          st.subheader('Forecast data')
          st.write(forecast.tail())
              
          st.write(f'Forecast plot for {n_years} years')
          fig1 = plot_plotly(m, forecast)
          st.plotly_chart(fig1)

          st.write("Forecast components")
          fig2 = m.plot_components(forecast)
          st.write(fig2)

          要運(yùn)行此程序,首先需要使用 pip 安裝 Streamlit、yfinance、prophet 和 plotly python 庫。

          pip install streamlit prophet yfinance plotly

          然后使用命令streamlit run smart_trade.py 運(yùn)行

          "使用我們的 Streamlit 應(yīng)用程序預(yù)測 NVDA 股票" - Nvidia 股票在未來幾年似乎會上漲,這證明它是今天值得買入的好股票

          應(yīng)用

          • 算法交易
          • 股票價格比較儀表板


          /05/ 自動圖像下載器

          收集圖像數(shù)據(jù)是計算機(jī)視覺項目的關(guān)鍵挑戰(zhàn)。正如 Andrew Ng 所說,如果你能收集到大量數(shù)據(jù)集,那么算法就不重要了。數(shù)據(jù)對提高模型的性能和準(zhǔn)確性起著關(guān)鍵作用。

          只需幾行代碼,這個自動化腳本就能幫助你在幾分鐘內(nèi)從網(wǎng)上下載數(shù)據(jù)。

          # Importing the necessary module and function
          from simple_image_download import simple_image_download as simp 

          # Creating a response object
          response = simp.simple_image_download

          ## Keyword
          keyword = "Dog"

          # Downloading images
          try:
              response().download(keyword, 20)
              print("Images downloaded successfully.")
          except Exception as e:
              print("An error occurred:", e)


          /06/ 端口掃描程序

          在計算機(jī)網(wǎng)絡(luò)中,端口是允許不同進(jìn)程或服務(wù)通過網(wǎng)絡(luò)連接和交換數(shù)據(jù)的通信端點(diǎn)。端口由數(shù)值標(biāo)識,并與特定協(xié)議相關(guān)聯(lián)。

          開放端口就像建筑物中的門窗,每個端口都是網(wǎng)站與外部網(wǎng)絡(luò)通信的潛在入口。然而,在沒有采取適當(dāng)安全措施的情況下開放端口,會使網(wǎng)站容易受到網(wǎng)絡(luò)攻擊。

          這個自動化腳本會將網(wǎng)站 URL 作為輸入,并檢查該網(wǎng)站是否存在任何開放端口。無論你是作為 "紅隊 "的一員在執(zhí)行任務(wù),還是在 "藍(lán)隊 "中堅守陣地,這個腳本都能為你提供有用的便利工具。

          import socket
          from prettytable import PrettyTable

          # Dictionary mapping common ports to vulnerabilities (Top 15)
          vulnerabilities = {
              80"HTTP (Hypertext Transfer Protocol) - Used for unencrypted web traffic",
              443"HTTPS (HTTP Secure) - Used for encrypted web traffic",
              22"SSH (Secure Shell) - Used for secure remote access",
              21"FTP (File Transfer Protocol) - Used for file transfers",
              25"SMTP (Simple Mail Transfer Protocol) - Used for email transmission",
              23"Telnet - Used for remote terminal access",
              53"DNS (Domain Name System) - Used for domain name resolution",
              110"POP3 (Post Office Protocol version 3) - Used for email retrieval",
              143"IMAP (Internet Message Access Protocol) - Used for email retrieval",
              3306"MySQL - Used for MySQL database access",
              3389"RDP (Remote Desktop Protocol) - Used for remote desktop connections (Windows)",
              8080"HTTP Alternate - Commonly used as a secondary HTTP port",
              8000"HTTP Alternate - Commonly used as a secondary HTTP port",
              8443"HTTPS Alternate - Commonly used as a secondary HTTPS port",
              5900"VNC (Virtual Network Computing) - Used for remote desktop access",
              # Add more ports and vulnerabilities as needed
          }

          def display_table(open_ports):
              table = PrettyTable(["Open Port""Vulnerability"])
              for port in open_ports:
                  vulnerability = vulnerabilities.get(port, "No known vulnerabilities associated with common services")
                  table.add_row([port, vulnerability])
              print(table)

          def scan_top_ports(target):
              open_ports = []
              top_ports = [212223255380110143443330633895900800080808443]  # Top 15 ports
              for port in top_ports:
                  try:
                      sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                      sock.settimeout(1)  # Adjust timeout as needed
                      result = sock.connect_ex((target, port))
                      if result == 0:
                          open_ports.append(port)
                      sock.close()
                  except KeyboardInterrupt:
                      sys.exit()
                  except socket.error:
                      pass
              return open_ports

          def main():
              target = input("Enter the website URL or IP address to scan for open ports: ")
              open_ports = scan_top_ports(target)
              if not open_ports:
                  print("No open ports found on the target.")
              else:
                  print("Open ports and associated vulnerabilities:")
                  display_table(open_ports)

          if __name__ == "__main__":
              main()
          使用腳本識別的 OpenPorts 列表


          /07/ 密碼管理器

          作為一名數(shù)字自由職業(yè)者,最糟糕的事情之一就是需要記住很多密碼,因為每天你都要注冊一個新網(wǎng)站。

          這個自動化腳本可以幫你管理所有密碼,使用不同的加密技術(shù)確保密碼安全,只有你自己才能訪問。

          這個腳本最棒的地方在于它是一個網(wǎng)絡(luò)應(yīng)用程序,只需稍作改動,你就可以將它部署到云存儲上,隨時隨地訪問你的所有密碼,而無需擔(dān)心安全問題。

          import streamlit as st
          import csv
          from cryptography.fernet import Fernet
          from cryptography.fernet import InvalidToken

          # Custom encryption key (hardcoded)  
          CUSTOM_ENCRYPTION_KEY = b'u7wGgNdDFefqpr_kGxb8wJf6XRVsRwvb3QgITsD5Ft4='                   ## 如果您打算在共享平臺上使用此腳本,請確保將此密鑰保存在一個單獨(dú)的安全文件中。

          # Function to encrypt password
          def encrypt_password(password):
              cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY)
              encrypted_password = cipher_suite.encrypt(password.encode())
              return encrypted_password

          # Function to decrypt password
          def decrypt_password(encrypted_password):
              if isinstance(encrypted_password, bytes):
                  try:
                      cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY)
                      decrypted_password = cipher_suite.decrypt(encrypted_password)
                      return decrypted_password.decode()
                  except InvalidToken:
                      return "Invalid Token"
              else:
                  return None

          # Function to save website name and password to CSV file
          def save_credentials(website_name, password):
              encrypted_password = encrypt_password(password)
              with open('credentials.csv''a', newline=''as csvfile:
                  writer = csv.writer(csvfile)
                  writer.writerow([website_name, encrypted_password.decode()])  # Ensure storing string representation

          # Function to retrieve password from CSV file
          def retrieve_password(website_name):
              with open('credentials.csv''r'as csvfile:
                  reader = csv.reader(csvfile)
                  for row in reader:
                      if row[0] == website_name:
                          encrypted_password = row[1].encode()
                          return encrypted_password
              return None

          # Streamlit UI
          st.title("Password Manager")

          # Input fields for website name and password
          website_name = st.text_input("Enter website name:")
          password = st.text_input("Enter password:", type="password")

          # Save button to save website name and password
          if st.button("Save"):
              if website_name and password:
                  save_credentials(website_name, password)
                  st.success("Website name and password saved successfully.")
              else:
                  st.error("Please fill in all fields.")

          # Retrieve button to retrieve password
          if st.checkbox("Retrieve Password"):
              website_name = st.selectbox("Select website name:", options=[""] + [row[0for row in csv.reader(open('credentials.csv''r'))])
              key = st.text_input("Enter Your Encryption Key:", type="password")
              if st.button("Retrieve Password"):
                  if key == str(CUSTOM_ENCRYPTION_KEY.decode()):
                      if website_name:
                          encrypted_password = retrieve_password(website_name)
                          if encrypted_password:
                              decrypted_password = decrypt_password(encrypted_password)
                              st.success(f"Password for **{website_name}** -> **{decrypted_password}**")
                          else:
                              st.error("Password not found in database.")
                  elif key == "":
                      pass 
                  else:
                      st.error("Invalid Encryption Key!!!")

          它使用硬編碼的自定義密鑰進(jìn)行加密和解密。如果你打算在共享平臺上使用此腳本,請確保將此密鑰保存在一個單獨(dú)的安全文件中。

          正確的加密密鑰
          - 錯誤的加密密鑰


          /08/ 郵件群發(fā)器

          電子郵件列表是在線參與的貨幣,每個訂閱者都是您數(shù)字部落的重要成員。它們是有效數(shù)字營銷的心臟。

          作為一個有影響力的數(shù)字營銷者,與你的追隨者保持互動非常重要,但手動操作是一項艱巨的工作,而使用相關(guān)工具則需要花費(fèi)大量資金。

          這款自動化腳本可利用 Gmail 自帶的 SMTP 服務(wù)器,在幾分鐘內(nèi)批量發(fā)送電子郵件,讓你可以完全自定義并行使權(quán)力。

          import smtplib
          import ssl

          # SMTP server details
          smtp_server = 'data.STUDIO.com'
          smtp_port = 465

          # Sender and recipient details
          from_address = 'Winzo Shop'
          to_address = ['','']     ## Recepients List

          # Authentication details
          username = ''       ## Sender Email
          password = ''       ## Sender Password


          # Email message details
          subject = '?? Exclusive Offer Inside! Get 10% Off Your Next Purchase'
          body = '''
          '''


          # Create an SSL/TLS context
          context = ssl.create_default_context()

          # Connect to the SMTP server using SSL/TLS
          with smtplib.SMTP_SSL(smtp_server, smtp_port, context=context) as server:
              # Enable debugging to print the server's responses
              server.set_debuglevel(1)

              # Login to the SMTP server
              server.login(username, password)

              # Create the email message
              message = f'From: {from_address}\r\nSubject: {subject}\r\nTo: {to_address}\r\n\r\n{body}'
              message = message.encode()  # Convert the message to bytes

              # Send the email
              server.sendmail(from_address, to_address, message)


          /09/ Readme.md 生成器

          README.md 文件是項目的入口,提供基本信息并吸引訪問者進(jìn)一步探索。它被認(rèn)為是版本庫中最重要的文件之一,但創(chuàng)建起來也相當(dāng)耗時。

          這個自動化腳本可以根據(jù)版本庫名稱、鏈接和描述等輸入信息輕松生成 README.md 文件,從而為您節(jié)省大量時間。

          def generate_markdown_file():
              # Prompting user for inputs
              repository_name = input("\n Enter the name of your GitHub repository: ")
              project_description = input("Enter a short description of your project: ")
              installation_instructions = input("Enter installation instructions for your project: ")
              usage_instructions = input("Enter usage instructions for your project: ")
              contributors = input("Enter the contributors to your project (separated by commas): ")
              license = select_license()

              # Generating badges
              stars_badge = "[![GitHub stars](https://img.shields.io/github/stars/{})](https://github.com/{}/stargazers)".format(repository_name, repository_name)
              forks_badge = "[![GitHub forks](https://img.shields.io/github/forks/{})](https://github.com/{}/network/members)".format(repository_name, repository_name)
              issues_badge = "[![GitHub issues](https://img.shields.io/github/issues/{})](https://github.com/{}/issues)".format(repository_name, repository_name)
              license_badge = "[![GitHub license](https://img.shields.io/github/license/{})](https://github.com/{}/blob/master/LICENSE)".format(repository_name, repository_name)

              # Generating Markdown content
              markdown_content = f"""
              # {repository_name}

              {project_description}

              ## Table of Contents
              - [Installation](#installation)
              - [Usage](#usage)
              - [Contributors](#contributors)
              - [License](#license)
              - [Badges](#badges)
              - [GitHub Repository](#github-repository)

              ## Installation
              ```
              {installation_instructions}
              ```
              ## Usage
              ```
              {usage_instructions}
              ```
              ## Contributors
              {contributors}
              ## License
              This project is licensed under the {license} License - see the [LICENSE](LICENSE) file for details.
              ## Badges
              {stars_badge} {forks_badge} {issues_badge} {license_badge}
              ## GitHub Repository
              [Link to GitHub repository](https://github.com/{repository_name})
              """

              # Writing content to Markdown file
              markdown_file_name = f"{repository_name}_README.md"
              with open(markdown_file_name, "w"as markdown_file:
                  markdown_file.write(markdown_content)
              print(f"Markdown file '{markdown_file_name}' generated successfully!")

          def select_license():
              licenses = {
                  "MIT""MIT License",
                  "Apache""Apache License 2.0",
                  "GPL""GNU General Public License v3.0",
                  # Add more licenses as needed
              }
              print("Select a license for your project:")
              for key, value in licenses.items():
                  print(f"{key}{value}")
              while True:
                  selected_license = input("Enter the number corresponding to your selected license: ")
                  if selected_license in licenses:
                      return licenses[selected_license]
                  else:
                      print("Invalid input. Please enter a valid license number.")

          if __name__ == "__main__":
              generate_markdown_file()


          /10/ OrganizeIT 2.0

          你的下載文件夾是否一團(tuán)糟?你是否發(fā)現(xiàn)自己在最需要的時候卻找不到關(guān)鍵文件?你是否嘗試過無數(shù)次整理文件夾,但都以失敗告終?

          這個自動化腳本可以幫你在幾分鐘內(nèi)整理好文件夾。你只需指定需要清理的路徑,本腳本就會根據(jù)文件擴(kuò)展名自動將所有文件劃分到不同的文件夾中。

          這還不是全部它還能通過比較文件的哈希值來檢測和處理重復(fù)文件。

          import os
          import hashlib
          import shutil

          def get_file_hash(file_path):
              with open(file_path, 'rb'as f:
                  return hashlib.sha256(f.read()).hexdigest()

          def organize_and_move_duplicates(folder_path):
              # Create a dictionary to store destination folders based on file extensions
              extension_folders = {}

              # Create the "Duplicates" folder if it doesn't exist
              duplicates_folder = os.path.join(folder_path, 'Duplicates')
              os.makedirs(duplicates_folder, exist_ok=True)

              # Create a dictionary to store file hashes
              file_hashes = {}

              # Iterate through files in the folder
              for filename in os.listdir(folder_path):
                  file_path = os.path.join(folder_path, filename)
                  if os.path.isfile(file_path):
                      # Get the file extension
                      _, extension = os.path.splitext(filename)
                      extension = extension.lower()  # Convert extension to lowercase
                      
                      # Determine the destination folder
                      if extension in extension_folders:
                          destination_folder = extension_folders[extension]
                      else:
                          destination_folder = os.path.join(folder_path, extension[1:])  # Remove the leading dot from the extension
                          os.makedirs(destination_folder, exist_ok=True)
                          extension_folders[extension] = destination_folder
                      
                      # Calculate the file hash
                      file_hash = get_file_hash(file_path)
                      
                      # Check for duplicates
                      if file_hash in file_hashes:
                          # File is a duplicate, move it to the "Duplicates" folder
                          shutil.move(file_path, os.path.join(duplicates_folder, filename))
                          print(f"Moved duplicate file {filename} to Duplicates folder.")
                      else:
                          # Store the file hash
                          file_hashes[file_hash] = filename
                          # Move the file to the destination folder
                          shutil.move(file_path, destination_folder)
                          print(f"Moved {filename} to {destination_folder}")

          if __name__ == "__main__":
              folder_path = input("Enter the path to the folder to organize: ")
              organize_and_move_duplicates(folder_path)


          最后推薦一下我們團(tuán)隊寫的量化小冊的內(nèi)容,45篇內(nèi)容!從Python安裝,入門,數(shù)據(jù)分析,爬取股票基金的歷史+實(shí)時數(shù)據(jù),以及如何寫一個簡單量化策略,策略回測,如何看資金曲線統(tǒng)統(tǒng)都有介紹!非常超值!

          歡迎訂閱:原價299 早鳥價2杯咖啡錢,即可永久閱讀。滿400人又要漲價了,現(xiàn)在的價格非常非常低,只要2杯奶茶,就可以終身訂閱+課程源碼,還有永久陪伴群。48小時無理由退款,放心食用!


          往期推薦

          量化: 如何用Python爬取創(chuàng)業(yè)板歷史+實(shí)時股票數(shù)據(jù)!實(shí)戰(zhàn)股票分析篇利用Pandas 9招挖掘五糧液股價實(shí)戰(zhàn)股票數(shù)據(jù)分析篇 Pandas滾動操作 |量化股票第一步,用Python畫股票K線,雙均線圖,可視化你的股票數(shù)據(jù)!如何用Python爬取全部800多只ETF基金數(shù)據(jù)!如何用Python寫一個雙均線策略 |如何用Python開發(fā)一個多策略機(jī)器人!上篇!Python量化系列-用布林策略買五糧液能賺多少錢?只要4秒鐘!用Python 獲取上證指數(shù)34年的歷史日線數(shù)據(jù)!


          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個月的Python  | 實(shí)戰(zhàn)項目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!

          AI: 會做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影

          小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水??! | 一鍵把html網(wǎng)頁保存為pdf!|  再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機(jī)票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!

          瀏覽 284
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国成人一级电影 | 国产无遮挡又黄又爽又色学生软件 | 噜噜噜射射射 | 亚洲成人电影无码 | 影音先锋在线资源AV |