Ami a mesterséges intelligenciával támogatott kódolást illeti, az OpenAI ChatGPT 5 és a Grok 4 a 2025-ös év két legmenőbb eszköze. Mindkettő azt állítja, hogy nagy pontossággal és hatékonysággal ír Python kódot, de melyik biztosít valójában tisztább, karbantarthatóbb szkripteket valós helyzetekben?
Ebben a cikkben a ChatGPT 5-öt és a Grok 4-et mérjük össze egymással több Python kihívásban. Áttekintjük a kód helyességét, az olvashatóságot, a végrehajtási sebességet és az alkalmazkodóképességet trükkös kérdések esetén.
Miért hasonlítsuk össze a ChatGPT 5-öt és a Grok 4-et Pythonnal?
A Python továbbra is a mesterséges intelligencia, az automatizálás és az adattudomány elsődleges nyelve. Sok fejlesztő ma már a mesterséges intelligenciára támaszkodik a kódolási munkafolyamatok felgyorsítására, a gyorsabb hibakeresésre, sőt akár teljes alkalmazások nulláról történő létrehozására is.
Míg a ChatGPT régóta uralja ezt a területet, a Grok egyre nagyobb figyelmet kap kódtisztaságáért és tömör kimeneteiért. Mindkettő eltérő képzési filozófiát alkalmaz, a ChatGPT az érvelésre helyezi a hangsúlyt, míg a Grok a rövidségre.
Az OpenAI ChatGPT 5 és Grok 4 tesztelése
A két mesterséges intelligenciát 10 Python kódolási tesztesetben fogjuk összehasonlítani:
- Alap szkript (Páros számok összege)
- Adatfeldolgozás (CSV összegek)
- Algoritmikus probléma (Első nem ismétlődő karakter)
- API integráció (Bitcoin ár lekérése)
- Web adatgyűjtés (Hacker hírek főcímei)
- Fájltömörítés (.txt fájlok tömörítése)
- Képfeldolgozás (JPEG átméretezése)
- Többszálú működés (Egyidejű letöltések)
- Adatbázis interakció (SQLite CRUD)
- Egységtesztelés (Prímszám teszt)
Minden prompt azonos lesz, és beküldésre kerül a ChatGPT 5 és a Grok 4 számára. A teszteket saját magad is lefuttathatod az eredmények validálásához.
Python 1. feladat - Alapvető szkript
1. feladat utasítása:
Írj egy Python szkriptet, amely beolvas egy egész számok listáját, és kiírja a páros számok összegét.
1. feladat GPT 5 kód:
1# Script to read a list of integers and output the sum of even numbers
2def sum_of_even_numbers(numbers):
3 return sum(num for num in numbers if num % 2 == 0)
4
5if __name__ == "__main__":
6 # Read input from the user
7 try:
8 numbers = list(map(int, input("Enter integers separated by spaces: ").split()))
9 total_even = sum_of_even_numbers(numbers)
10 print("Sum of even numbers:", total_even)
11 except ValueError:
12 print("Please enter valid integers only.")
1. kihívás Grok 4 kód:
1# Read a line of input containing space-separated integers
2input_line = input("Enter a list of integers separated by spaces: ")
3
4# Convert the input string into a list of integers
5numbers = list(map(int, input_line.split()))
6
7# Initialize sum of even numbers
8even_sum = 0
9
10# Iterate through the list and add even numbers to the sum
11for num in numbers:
12 if num % 2 == 0:
13 even_sum += num
14
15# Output the sum
16print("Sum of even numbers:", even_sum)
1. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válaszidő, szinte azonnal.
- GPT 5 kód: Rövidebb és elegánsabb kód belépési ponttal és megjegyzésekkel.
- Grok 4 sebesség: Lassabb válaszidő, “gondolat” kicsit hosszabb (~2 másodperc).
- Grok 4 kód: Kicsit hosszabb kód belépési pont nélkül, de megjegyzésekkel.
Python 2. kihívás – Adatfeldolgozás
2. kihívás – Prompt:
Tölts be egy tranzakciókat tartalmazó CSV-fájlt, és nyomtasd ki a termékenkénti teljes eladásokat.
2. kihívás GPT 5 kód:
1import csv
2from collections import defaultdict
3
4def total_sales_per_product(csv_file):
5 sales = defaultdict(float)
6
7 with open(csv_file, newline='', encoding='utf-8') as f:
8 reader = csv.DictReader(f)
9 for row in reader:
10 try:
11 product = row['product']
12 quantity = float(row['quantity'])
13 price = float(row['price'])
14 sales[product] += quantity * price
15 except (KeyError, ValueError):
16 print(f"Skipping invalid row: {row}")
17
18 return sales
19
20if __name__ == "__main__":
21 file_path = "transactions.csv" # Change to your file path
22 sales_totals = total_sales_per_product(file_path)
23
24 print("Total Sales Per Product:")
25 for product, total in sales_totals.items():
26 print(f"{product}: ${total:,.2f}")
2. kihívás: Grok 4 kód:
1import pandas as pd
2
3# Prompt user for the CSV file path
4file_path = input("Enter the path to the CSV file: ")
5
6# Load the CSV file into a DataFrame
7df = pd.read_csv(file_path)
8
9# Assuming the CSV has columns 'Product' and 'Sales'
10# Group by 'Product' and sum the 'Sales'
11total_sales = df.groupby('Product')['Sales'].sum()
12
13# Print the total sales per product
14print("Total sales per product:")
15print(total_sales)
2. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válasz, szinte azonnal.
- GPT 5 kód: Kicsit hosszabb és elegánsabb kódot biztosított belépési ponttal, de megjegyzések nélkül.
- Grok 4 sebesség: Lassabb válasz, “gondolatban” valamivel hosszabb (~13 másodperc).
- Grok 4 kód: Egyszerűbb kódot biztosított belépési pont nélkül, de megjegyzésekkel.
Python 3. kihívás – Algoritmikus probléma
3. kihívás – Prompt:
Adott egy karakterlánc esetén adja vissza az első nem ismétlődő karaktert.
3. kihívás – GPT 5 kód:
1def first_non_repeating_char(s):
2 from collections import Counter
3 counts = Counter(s)
4
5 for char in s:
6 if counts[char] == 1:
7 return char
8 return None # If no non-repeating character found
9
10# Example usage
11text = "swiss"
12result = first_non_repeating_char(text)
13if Code:
14 print(f"The first non-repeating character is: '{result}'")
15else:
16 print("No non-repeating character found.")
3. kihívás: Grok 4 kód:
1import collections
2
3def first_non_repeating_char(s):
4 """
5 Returns the first non-repeating character in the string.
6 If no such character exists, returns None.
7 """
8 count = collections.Counter(s)
9 for char in s:
10 if count[char] == 1:
11 return char
12 return None
13
14# Example usage
15input_string = input("Enter a string: ")
16result = first_non_repeating_char(input_string)
17print("First non-repeating character:", result)
3. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válasz, szinte azonnal.
- GPT 5 kód: Rövid kódot adott belépési pont és megjegyzések nélkül. A példahasználatban van egy hiba.
- Grok 4 sebesség: Lassabb válasz, “gondolat” szerint valamivel hosszabb (~8 másodperc).
- Grok 4 kód: Rövid kódot adott belépési pont nélkül, rövid dokumentációs sztringgel.
Python 4. kihívás – API integráció
4. kihívás – Prompt:
Használja a kérések könyvtárát a Bitcoin aktuális árfolyamának USD-ben történő lekéréséhez egy nyilvános API-ból, és nyomtassa ki.
4. kihívás – GPT 5 kód:
1import requests
2
3def get_bitcoin_price_usd():
4 url = "https://api.coindesk.com/v1/bpi/currentprice/USD.json"
5 try:
6 response = requests.get(url, timeout=5)
7 response.raise_for_status() # Raise HTTPError for bad responses
8 data = response.json()
9 price = data["bpi"]["USD"]["rate"]
10 print(f"Current Bitcoin Price: ${price} USD")
11 except requests.exceptions.RequestException as e:
12 print(f"Error fetching Bitcoin price: {e}")
13 except (KeyError, ValueError) as e:
14 print(f"Error parsing response: {e}")
15
16if __name__ == "__main__":
17 get_bitcoin_price_usd()
4. kihívás: Grok 4 kód:
1import requests
2
3# Define the API endpoint
4url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
5
6# Fetch the data
7response = requests.get(url)
8
9# Check if the request was successful
10if response.status_code == 200:
11 data = response.json()
12 bitcoin_price = data['bitcoin']['usd']
13 print(f"Current Bitcoin price in USD: ${bitcoin_price}")
14else:
15 print(f"Error fetching data: {response.status_code}")
4. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válasz, szinte azonnal.
- GPT 5 kód: Rövid és elegáns kódot biztosított belépési ponttal, de megjegyzések nélkül.
- Grok 4 sebesség: Lassabb válasz, “gondolatból” valamivel hosszabb (~23 másodperc).
- Grok 4 kód: Valamivel rövidebb kódot biztosított belépési pont nélkül, de megjegyzésekkel.
Python 5. kihívás – Webes adatgyűjtés
5. kihívás – Prompt:
Használj kéréseket és BeautifulSoup-ot a https://news.ycombinator.com/ oldal 5 legfontosabb hírcímének kiolvasásához és kinyomtatásához.
5. kihívás – GPT 5 kód:
1import requests
2from bs4 import BeautifulSoup
3
4def get_top_hn_headlines(limit=5):
5 url = "https://news.ycombinator.com/"
6 try:
7 response = requests.get(url, timeout=5)
8 response.raise_for_status()
9
10 soup = BeautifulSoup(response.text, "html.parser")
11 headlines = [a.get_text() for a in soup.select(".titleline > a")]
12
13 print(f"Top {limit} Hacker News Headlines:")
14 for i, title in enumerate(headlines[:limit], 1):
15 print(f"{i}. {title}")
16 except requests.exceptions.RequestException as e:
17 print(f"Error fetching Hacker News: {e}")
18
19if __name__ == "__main__":
20 get_top_hn_headlines()
5. kihívás: Grok 4 kód:
1import requests
2from bs4 import BeautifulSoup
3
4# Define the URL
5url = 'https://news.ycombinator.com/'
6
7# Fetch the webpage
8response = requests.get(url)
9response.raise_for_status() # Raise an error for bad status codes
10
11# Parse the HTML content
12soup = BeautifulSoup(response.text, 'html.parser')
13
14# Find the top 5 story elements
15stories = soup.find_all('tr', class_='athing')[:5]
16
17# Print the top 5 headlines
18print("Top 5 News Headlines from Hacker News:")
19for i, story in enumerate(stories, 1):
20 title_span = story.find('span', class_='titleline')
21 if title_span:
22 headline = title_span.find('a').text
23 print(f"{i}. {headline}")
5. kihívás - Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válaszidő, szinte azonnal.
- GPT 5 kód: Rövid és elegáns kódot biztosított belépési ponttal, de megjegyzések nélkül.
- Grok 4 sebesség: Lassabb válaszidő, “gondolatból” valamivel hosszabb (~13 másodperc).
- Grok 4 kód: Valamivel hosszabb kódot biztosított belépési pont nélkül, de megjegyzésekkel.
Python 6. kihívás - Fájltömörítés
6. kihívás - Prompt:
Hozz létre egy Python szkriptet, amely az aktuális könyvtárban található összes .txt fájlt becsomagolja az ‘archive.zip’ fájlba.
6. kihívás GPT 5 kód:
1import zipfile
2import glob
3import os
4
5def zip_text_files(output_zip="archive.zip"):
6 txt_files = glob.glob("*.txt")
7 if not txt_files:
8 print("No .txt files found in the current directory.")
9 return
10
11 with zipfile.ZipFile(output_zip, "w") as zipf:
12 for file in txt_files:
13 zipf.write(file, os.path.basename(file))
14 print(f"Added: {file}")
15
16 print(f"Created {output_zip} containing {len(txt_files)} files.")
17
18if __name__ == "__main__":
19 zip_text_files()
6. kihívás: Grok 4 kód:
1import os
2from zipfile import ZipFile
3
4# Get the current directory
5current_dir = os.getcwd()
6
7# List all .txt files in the current directory
8txt_files = [f for f in os.listdir(current_dir) if f.endswith('.txt')]
9
10# Create a zip file and add the .txt files
11with ZipFile('archive.zip', 'w') as zipf:
12 for file in txt_files:
13 zipf.write(file)
14
15print(f"Successfully zipped {len(txt_files)} .txt files into 'archive.zip'.")
6. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válaszidő, szinte azonnal.
- GPT 5 kód: Rövid és elegáns kódot biztosított belépési ponttal, de megjegyzések nélkül.
- Grok 4 sebesség: Lassabb válaszidő, “gondolatból” valamivel hosszabb (~10 másodperc).
- Grok 4 kód: Rövid kódot biztosított belépési pont nélkül, de megjegyzésekkel.
Python 7. kihívás – Képfeldolgozás
7. kihívás – Prompt:
A Pillow (PIL) használatával méretezze át az aktuális könyvtárban található összes JPEG képet 800x600 pixelre, és mentse el őket egy ‘kimeneti’ mappába.
7. kihívás – GPT 5 kód:
1import os
2from PIL import Image
3import glob
4
5def resize_jpeg_images(width=800, height=600, output_dir="output"):
6 # Create output folder if it doesn't exist
7 os.makedirs(output_dir, exist_ok=True)
8
9 # Find all .jpg and .jpeg files (case-insensitive)
10 jpeg_files = glob.glob("*.jpg") + glob.glob("*.jpeg") + glob.glob("*.JPG") + glob.glob("*.JPEG")
11
12 if not jpeg_files:
13 print("No JPEG images found in the current directory.")
14 return
15
16 for file in jpeg_files:
17 try:
18 with Image.open(file) as img:
19 img_resized = img.resize((width, height), Image.LANCZOS)
20 output_path = os.path.join(output_dir, os.path.basename(file))
21 img_resized.save(output_path, "JPEG")
22 print(f"Resized and saved: {output_path}")
23 except Exception as e:
24 print(f"Error processing {file}: {e}")
25
26if __name__ == "__main__":
27 resize_jpeg_images()
7. kihívás Grok 4 kód:
1import os
2from PIL import Image
3
4# Get the current directory
5current_dir = os.getcwd()
6
7# Create the output folder if it doesn't exist
8output_folder = os.path.join(current_dir, 'output')
9os.makedirs(output_folder, exist_ok=True)
10
11# List all JPEG files in the current directory (case-insensitive)
12jpeg_files = [f for f in os.listdir(current_dir)
13 if f.lower().endswith(('.jpg', '.jpeg'))]
14
15# Resize each image and save to output folder
16resized_count = 0
17for file in jpeg_files:
18 try:
19 img_path = os.path.join(current_dir, file)
20 img = Image.open(img_path)
21 resized_img = img.resize((800, 600))
22 output_path = os.path.join(output_folder, file)
23 resized_img.save(output_path)
24 resized_count += 1
25 except Exception as e:
26 print(f"Error processing {file}: {e}")
27
28print(f"Successfully resized and saved {resized_count} JPEG images to the 'output' folder.")
7. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válaszidő, szinte azonnal.
- GPT 5 kód: Rövid és elegáns kód belépési ponttal, megjegyzésekkel.
- Grok 4 sebesség: Lassabb válaszidő, “gondolatból” valamivel hosszabb (~10 másodperc).
- Grok 4 kód: Valamivel hosszabb kód belépési pont nélkül, megjegyzésekkel.
Python 8. kihívás – Többszálú működés
8. kihívás – Prompt:
Hozz létre egy Python szkriptet, amely szálkezeléssel egyidejűleg 5 különböző fájlt tölt le adott URL-ekről.
8. kihívás – GPT 5 kód:
1import os
2from pathlib import Path
3from urllib.parse import urlparse
4from concurrent.futures import ThreadPoolExecutor, as_completed
5
6import requests
7
8CHUNK_SIZE = 1024 * 64 # 64KB
9
10
11def unique_path(dest_dir: Path, filename: str) -> Path:
12 """Return a unique path inside dest_dir by appending (1), (2), ... if needed."""
13 dest = dest_dir / filename
14 if not dest.exists():
15 return dest
16 stem, suffix = os.path.splitext(filename)
17 i = 1
18 while True:
19 candidate = dest_dir / f"{stem} ({i}){suffix}"
20 if not candidate.exists():
21 return candidate
22 i += 1
23
24
25def filename_from_url(url: str, index: int) -> str:
26 """Get a safe filename from URL; fall back to file_{index} if missing."""
27 path = urlparse(url).path
28 name = os.path.basename(path).strip()
29 return name or f"file_{index}"
30
31
32def download_file(url: str, dest_dir: Path, index: int, timeout: int = 15) -> Path:
33 """Download a single file to dest_dir. Returns the saved path."""
34 dest_dir.mkdir(parents=True, exist_ok=True)
35 base_name = filename_from_url(url, index)
36 dest_path = unique_path(dest_dir, base_name)
37
38 headers = {"User-Agent": "python-threaded-downloader/1.0"}
39 with requests.get(url, stream=True, timeout=timeout, headers=headers) as r:
40 r.raise_for_status()
41 with open(dest_path, "wb") as f:
42 for chunk in r.iter_content(chunk_size=CHUNK_SIZE):
43 if chunk: # filter out keep-alive chunks
44 f.write(chunk)
45 return dest_path
46
47
48def download_concurrently(urls, out_dir="downloads", max_workers=5):
49 """Download given URLs concurrently using threads."""
50 dest_dir = Path(out_dir)
51 results = []
52 errors = []
53
54 with ThreadPoolExecutor(max_workers=max_workers) as executor:
55 future_to_url = {
56 executor.submit(download_file, url, dest_dir, i): url
57 for i, url in enumerate(urls, start=1)
58 }
59 for future in as_completed(future_to_url):
60 url = future_to_url[future]
61 try:
62 saved_path = future.result()
63 print(f"✅ Downloaded: {url} -> {saved_path}")
64 results.append(saved_path)
65 except Exception as e:
66 print(f"❌ Failed: {url} ({e})")
67 errors.append((url, e))
68 print(f"\nDone. {len(results)} succeeded, {len(errors)} failed.")
69 return results, errors
70
71
72if __name__ == "__main__":
73 # Replace these with your 5 URLs
74 urls = [
75 "https://example.com/file1.jpg",
76 "https://example.com/file2.pdf",
77 "https://example.com/file3.zip",
78 "https://example.com/file4.png",
79 "https://example.com/file5.mp4",
80 ]
81 download_concurrently(urls, out_dir="downloads", max_workers=5)
8. kihívás Grok 4 kód:
1import threading
2import urllib.request
3
4def download_file(url, filename):
5 """
6 Downloads a file from the given URL and saves it with the specified filename.
7 """
8 try:
9 urllib.request.urlretrieve(url, filename)
10 print(f"Downloaded {filename} from {url}")
11 except Exception as e:
12 print(f"Error downloading {url}: {e}")
13
14# List of 5 example URLs (replace with your actual URLs)
15urls = [
16 "https://www.example.com/file1.txt",
17 "https://www.example.com/file2.pdf",
18 "https://www.example.com/file3.jpg",
19 "https://www.example.com/file4.zip",
20 "https://www.example.com/file5.docx"
21]
22
23# Corresponding filenames to save the downloads
24filenames = [
25 "file1.txt",
26 "file2.pdf",
27 "file3.jpg",
28 "file4.zip",
29 "file5.docx"
30]
31
32# Create and start threads for concurrent downloads
33threads = []
34for url, filename in zip(urls, filenames):
35 thread = threading.Thread(target=download_file, args=(url, filename))
36 thread.start()
37 threads.append(thread)
38
39# Wait for all threads to complete
40for thread in threads:
41 thread.join()
42
43print("All downloads completed.")
8. kihívás – Megfigyelések:
- GPT 5 sebesség: Lassabb válasz, a „gondolat” kicsit hosszabb (~10 másodperc).
- GPT 5 kód: Hosszú és elegáns kód belépési ponttal, megjegyzésekkel.
- Grok 4 sebesség: Még lassabb válasz, a „gondolat” kicsit hosszabb (~21 másodperc).
- Grok 4 kód: Rövidebb kód belépési pont nélkül, megjegyzésekkel.
Python 9. kihívás – Adatbázis interakció
9. kihívás – Prompt:
Csatlakozz egy SQLite adatbázishoz, hozz létre egy „felhasználók” táblát, illessz be minta adatokat, és kérdezd le az összes felhasználót.
9. kihívás – GPT 5 kód:
1import sqlite3
2
3def main():
4 # Connect to (or create) the database
5 conn = sqlite3.connect("example.db")
6 cursor = conn.cursor()
7
8 # Create the users table if it doesn't exist
9 cursor.execute("""
10 CREATE TABLE IF NOT EXISTS users (
11 id INTEGER PRIMARY KEY AUTOINCREMENT,
12 name TEXT NOT NULL,
13 email TEXT UNIQUE NOT NULL
14 )
15 """)
16
17 # Insert sample data
18 sample_users = [
19 ("Alice", "[email protected]"),
20 ("Bob", "[email protected]"),
21 ("Charlie", "[email protected]"),
22 ]
23
24 try:
25 cursor.executemany("INSERT INTO users (name, email) VALUES (?, ?)", sample_users)
26 except sqlite3.IntegrityError:
27 # Ignore duplicates if run multiple times
28 pass
29
30 # Commit changes
31 conn.commit()
32
33 # Query all users
34 cursor.execute("SELECT id, name, email FROM users")
35 users = cursor.fetchall()
36
37 print("Users in database:")
38 for user in users:
39 print(user)
40
41 # Close the connection
42 conn.close()
43
44if __name__ == "__main__":
45 main()
9. kihívás Grok 4 kód:
1import sqlite3
2
3# Connect to an in-memory SQLite database
4conn = sqlite3.connect(':memory:')
5cursor = conn.cursor()
6
7# Create the 'users' table
8cursor.execute('''
9 CREATE TABLE users (
10 id INTEGER PRIMARY KEY,
11 name TEXT,
12 age INTEGER
13 )
14''')
15
16# Insert sample data
17cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
18cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
19cursor.execute("INSERT INTO users (name, age) VALUES ('Charlie', 35)")
20
21# Commit the changes
22conn.commit()
23
24# Query all users
25cursor.execute("SELECT * FROM users")
26results = cursor.fetchall()
27
28# Print the results
29print("ID | Name | Age")
30print("----------------")
31for row in results:
32 print(f"{row[0]} | {row[1]} | {row[2]}")
33
34# Close the connection
35conn.close()
9. kihívás – Megfigyelések:
- GPT 5 sebesség: Nagyon gyors válaszidő, szinte azonnal. Megértettük, hogy szkriptre van szükség, annak ellenére, hogy mi csak nyersen azt mondtuk, hogy “csatlakozás…” a “írás vagy létrehozás” helyett.
- GPT 5 kód: Hosszú és elegáns kódot biztosítottunk belépési ponttal, megjegyzésekkel.
- Grok 4 sebesség: Lassabb válaszidő, “gondolatban” egy kicsit hosszabb (~16 másodperc).
- Grok 4 kód: Egy kicsit rövidebb kódot biztosítottunk, és most először belépési ponttal és megjegyzésekkel. Nagyon érdekes módon számos függvény/teszt neve tükrözi a ChatGPT 5 stílusát.
Python 10. kihívás – Egységtesztelés
10. kihívás – Prompt:
Írj egy Python egységtesztet, amely ellenőrzi, hogy az ‘is_prime(n)’ függvény helyesen azonosítja-e a prímszámokat.
10. kihívás GPT 5 kód:
1import unittest
2
3# Example implementation of is_prime for testing purposes
4# If you already have this function, you can remove this definition.
5def is_prime(n):
6 """Return True if n is a prime number, else False."""
7 if n <= 1:
8 return False
9 if n <= 3:
10 return True
11 if n % 2 == 0 or n % 3 == 0:
12 return False
13 i = 5
14 while i * i <= n:
15 if n % i == 0 or n % (i + 2) == 0:
16 return False
17 i += 6
18 return True
19
20
21class TestIsPrime(unittest.TestCase):
22 def test_primes(self):
23 primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
24 for p in primes:
25 with self.subTest(p=p):
26 self.assertTrue(is_prime(p), f"{p} should be prime")
27
28 def test_non_primes(self):
29 non_primes = [0, 1, 4, 6, 8, 9, 10, 12, 15, 20, 25]
30 for n in non_primes:
31 with self.subTest(n=n):
32 self.assertFalse(is_prime(n), f"{n} should not be prime")
33
34if __name__ == "__main__":
35 unittest.main()
10. kihívás Grok 4 kód:
1import unittest
2
3# Assuming the is_prime function is defined in a module named prime_checker
4# Replace 'prime_checker' with the actual module name where is_prime is defined
5from prime_checker import is_prime
6
7class TestIsPrime(unittest.TestCase):
8 def test_prime_numbers(self):
9 """Test that prime numbers are correctly identified."""
10 primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
11 for num in primes:
12 with self.subTest(num=num):
13 self.assertTrue(is_prime(num), f"{num} should be prime")
14
15 def test_non_prime_numbers(self):
16 """Test that non-prime numbers are correctly identified."""
17 non_primes = [0, 1, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28]
18 for num in non_primes:
19 with self.subTest(num=num):
20 self.assertFalse(is_prime(num), f"{num} should not be prime")
21
22 def test_negative_numbers(self):
23 """Test that negative numbers are not considered prime."""
24 negatives = [-1, -2, -3, -5, -7]
25 for num in negatives:
26 with self.subTest(num=num):
27 self.assertFalse(is_prime(num), f"{num} should not be prime")
28
29 def test_one_and_zero(self):
30 """Explicitly test 0 and 1, which are not prime."""
31 self.assertFalse(is_prime(0))
32 self.assertFalse(is_prime(1))
33
34if __name__ == '__main__':
35 unittest.main()
10. kihívás – Megfigyelések:
- GPT 5 sebesség: nagyon gyors válaszidő, szinte azonnali.
- GPT 5 kód: Hosszú és elegáns kódot biztosított belépési ponttal és megjegyzésekkel.
- Grok 4 sebesség: Lassabb válaszidő, “gondolat” szerint valamivel hosszabb (~12 másodperc).
- Grok 4 kód: Kicsit rövidebb kódot biztosított, és most először belépési ponttal és megjegyzésekkel. Nagyon érdekes módon a függvények nevei megegyeznek a ChatGPT 5-tel.
Értékelési kritériumok
Minden mesterséges intelligenciát a következők alapján értékelünk:
- Kód helyessége: Működik-e nagyobb módosítások nélkül?
- Olvashatóság: Tiszta és jól kommentált a kód?
- Hatékonyság: Optimális módszereket használ-e?
- Hibakezelés: Előre látja-e a lehetséges hibákat?
- Magyarázhatóság: Világos indoklást biztosít-e?
Előzetes megfigyelések
Korábbi és jelenlegi tapasztalatok alapján:
- A ChatGPT 5 általában részletesebb, jól dokumentált kódot ad, sokkal gyorsabban.
- A Grok 4 a minimalizmust és a lassabb válaszokat részesíti előnyben, és néha kihagyja a megjegyzéseket.
Mindkettő kiválóan teljesít a standard feladatokban, de a Grok nehezen boldogulhat a többlépéses érvelési promptokkal.
Ami kiemelkedett a 10 kihívás közül
- A Gyors betartás: A GPT-5 feladaton maradt (pl. BTC API). A Grok 4 időnként eltávolodott (4. kihívás).
- Belépési pontok és struktúra**: A GPT-5 következetesen használt belépési pontokat és segédprogramokat; a Grok 4 gyakran írt egyfájlos szkripteket belépési pont nélkül.
- Hibakezelés**: A GPT-5 gyakrabban adott hozzá időtúllépéseket/raise_for_status/try-except elemeket; a Grok 4 általában minimális volt.
- Függőségek és feltételezések**: A GPT-5 ahol lehetséges, stdlib-et használt; A Grok 4 a pandákra vagy az egyszerűbb urllib alapértelmezett értékekre támaszkodott.
- Adatmodell-feltevések: A GPT-5 kikövetkeztetett mezők és számított értékek (mennyiség × ár); A Grok 4 előre aggregált oszlopokat feltételezett.
- Algoritmikus gondosság: Mindkettő megoldotta a logikai feladatokat; a GPT-5 példájában volt egy kisebb változóhiba, míg a Grok 4 HN példájában szintaktikai elírások voltak.
- Teljesítmény: A GPT-5 streamelést + szálkészleteket használt letöltésekhez; a Grok 4 nyers szálakat + urlretrieve-et (egyszerűbb, kevésbé robusztus) használt.
Ítélet
Bár mindkét eszköz képes funkcionális Python kódot írni, a választás a fejlesztői preferenciákon múlhat:
- Válassza a ChatGPT 5-öt, ha értékeli a részletes magyarázatokat, a lépésről lépésre történő érvelést, a gyors kódgenerálást és a kiterjedt megjegyzéseket.
- Válaszd a Grok 4-et, ha a tömör, egyszerű kódot kedveled minimális bonyodalommal és a lassabb kódgenerálással.
Őszintén szólva én a ChatGPT 5-öt részesítem előnyben, mert sokkal gyorsabban reagál, jobb és részletesebb Python kóddal. Bocsánat Elon Musk.
Gyakran Ismételt Kérdések (GYIK)
Az OpenAI ChatGPT 5 vagy a Grok 4 jobb kezdőknek? ChatGPT 5. Többet magyaráz el, biztonságosabb alapértelmezett beállításokat tartalmaz (időtúllépések, hibakezelés), és tisztább struktúrát használ.
Melyik okozott kevesebb kódhibát ezekben a tesztekben? Összességében a ChatGPT 5. A Grok 4-ben időnként előfordult a prompt eltolódás és kisebb szintaktikai hibák a scraping során.
Melyik a gyorsabb? A futtatásaid során a ChatGPT 5 átlagosan gyorsabban reagált. Az időzítések kihívásonként szerepelnek.
Szükséges-e átnéznem az általuk generált kódot? Igen. Mindkét modell véthet apró hibákat; mindig futtass teszteket, és adj hozzá védőkorlátokat az I/O és a hálózati kódhoz.
Melyik kezelte robusztusabban a fájlokat, képeket és hálózatkezelést? ChatGPT 5. Általában belépési pontokat, időtúllépéseket, streamelést és jobb kép-újramintavételezést adott hozzá.
Vannak-e előnyei a Grok 4-nek? Igen, gyorsabb, tömörebb szkriptek, amikor már ismered a kontextust és minimális kimenetet szeretnél.
Melyik prompt stílus működött a legjobban? Légy egyértelmű a bemenetekkel/kimenetekkel, a könyvtárakkal és a szélső esetekkel kapcsolatban (például: „időtúllépéses kérések használata, JSON elemzési hibák kiírása”).
Bármelyik modellre támaszkodhatom az éles kódban? Használd őket gyorsítóként, ne helyettesítőként: tartsd a teszteket, a lintinget és a biztonsági felülvizsgálatokat a folyamatodban.
Hozzászólások