פייתון/פייתון גרסה 3/ניפוי שגיאות

קונסול -' מערכת להצגת הודעות טקסט הנוגעות לתכנות. הקונסול מציג גם הודעות הנוגעות לטעויות המונעות הרצה של תכנית. כאמור כל תוכנה המריצה את שפת פיתון מציעה שימוש בקונסול.

לעיתים אנו רושמים פקודות עם טעויות. כאשר יש טעות נקבל הודעת שגיאה בצבע אדום בקונסול.

אם נקרא את ההודעה נוכל להבין מה הגורם לה. לדוגמה "typeErrow" היא שגיאה הנובעת בשל פקודות המבוצעות על טיפוסים ("אוביקטים") עליהם לא ניתן לבצע את הפקודה. אם נדייק, פייתון לא יודעת לזהות את רצף התווים לטיפוסים הקיימים אצלה במערכת (מחרוזות, מספרים ועוד]]). בנוסף לא את כל הפעולות ניתן להפעיל על כל הטיפוסים כך למשל בהמשך נלמד כי לא ניתן לבצע את פעולת החיסור על מחרוזת (רצף של אותיות)

גם ב-idle קיים קונסול. דוגמה:

>>> print(hello)
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    print(hello)
NameError: name 'hello' is not defined

ניסנו לבצע הרצה של הדפס עם תווים.

פיתון אינה מוכנה להריץ את התכונה ורושמת לנו איזה קובץ גורם בעיה להרצה: הקובץ ששמו pyshell#0 , בשורה ראשונה במופע "print(hello)" גורם לתקלה והסיבה (תחת NameError) במילים אחרות התווים אינם מוגדרים. מה זאת אומרת? בכדי להריץ תווים הם חייבים להיות מוגדרים כטיפוס, למשל מחרוזת, אחרת פיתון חושבת שהם רצף של קוד וכאשר היא אינה מזהה קוד בשם hello היא מציינת כי הוא אינו מוגדר.

בכדי שפיתון תוכל להריץ את רצף המילים עלינו לסווג אותם כטיפוס. במקרה שלנו אנחנו מעוניינים במחרוזת כלומר ברצף של תווים המציגים מילה ולכן עלינו להוסיף גרשיים print("hello")

>>> print("hello")
hello

import requests import yfinance as yf import pandas as pd import numpy as np import datetime import talib from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer from sklearn.preprocessing import MinMaxScaler from sklearn.model_selection import train_test_split from tensorflow.keras.models import Sequential, load_model from tensorflow.keras.layers import Dense, GRU from tensorflow.keras.callbacks import EarlyStopping import backtrader as bt import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from twilio.rest import Client import tweepy import os import logging from transformers import BertTokenizer, BertForSequenceClassification import torch import gym from stable_baselines3 import PPO

  1. הגדרות לרישום

logging.basicConfig(filename='trading_bot.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def twitter_auth():   """   אימות עם API של טוויטר.   Returns:     tweepy.API: אובייקט API של טוויטר.   """   try:     consumer_key = 'YOUR_CONSUMER_KEY'     consumer_secret = 'YOUR_CONSUMER_SECRET'     access_token = 'YOUR_ACCESS_TOKEN'     access_secret = 'YOUR_ACCESS_SECRET'           auth = tweepy.OAuth1UserHandler(consumer_key, consumer_secret, access_token, access_secret)     api = tweepy.API(auth)     return api   except Exception as e:     logging.error(f"שגיאה באימות API של טוויטר: {e}")     return None

def fetch_twitter_sentiment_bert(api, query):   """   קבלת סנטימנט מטוויטר באמצעות BERT.   Args:     api (tweepy.API): אובייקט API של טוויטר.     query (str): השאילתה לחיפוש בטוויטר.   Returns:     float: ממוצע הסנטימנט.   """   try:     tokenizer = BertTokenizer.from_pretrained('nlptown/bert-base-multilingual-uncased-sentiment')     model = BertForSequenceClassification.from_pretrained('nlptown/bert-base-multilingual-uncased-sentiment')           tweets = api.search_tweets(q=query, count=100, lang='en', result_type='recent')     sentiment_scores = []           for tweet in tweets:       inputs = tokenizer(tweet.text, return_tensors='pt', truncation=True, padding=True, max_length=512)       outputs = model(**inputs)       scores = torch.softmax(outputs.logits, dim=1).detach().numpy()       sentiment = scores[0][4] - scores[0][0] # חישוב סנטימנט (חיובי - שלילי)       sentiment_scores.append(sentiment)           return np.mean(sentiment_scores)   except Exception as e:     logging.error(f"שגיאה בקבלת סנטימנט טוויטר: {e}")     return 0 # סנטימנט ניטרלי במק

דוגמה שלישית

עריכה
	>>> 2+2
4
>>> 2+t
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    2+t
NameError: name 't' is not defined

דוגמה רביעית

עריכה
x=2
x/0
print(x)

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    x/0
ZeroDivisionError: division by zero

לא יאפשר להריץ כי חלוקה באפס.