Εμφάνιση αναρτήσεων με ετικέτα python. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα python. Εμφάνιση όλων των αναρτήσεων

Κυριακή 7 Νοεμβρίου 2021

Το Πρώτο Μου Πρόγραμμα!..

 


Το πρώτο μου project  στην python ήταν το κλασικό απλό παιχνιδάκι που φτιάχνουν όσοι ξεκινάνε την γλώσσα. Ο υπολογιστής διαλέγει έναν αριθμό από το 1 ως το 100 και ο χρήστης έχει 7 προσπάθειες για να τον βρει. 

Το 7 το υπολόγισα γιατί είναι ο αριθμός που σου επιτρέπει να κερδίζεις πάντα αν πηγαίνεις στην μέση των υποδείξεων κάθε φορά, π.χ ξεκινάς με το 50 και εάν ο υπολογιστής σου πει "επάνω", πηγαίνεις στο 75 κ.ο.κ

Ήταν η πρώτη φορά που χρησιμοποίησα στα σοβαρά την while loop καθώς και η πρώτη φορά που χρησιμοποίησα function που τρέχει όποτε την καλείς.


Επίσης ήταν η πρώτη φορά που μετέτρεψα .py αρχείο σε exe για να τρέχει και σε υπολογιστές ατόμων που δεν έχουν εγκατεστημένη την python στον υπολογιστή τους.

Για το τελευταίο χρησιμοποιήθηκε το γνωστό pyinstaller που είναι αρκετά μπελαλίδικο γιατί κατά πρώτον δεν φτιάχνει ένα και μοναδικό αρχείο exe στην περίπτωση που έχεις εικόνες και άλλα αρχεία στο πρόγραμμα σου οπότε πρέπει να τα κουβαλάς όλα αυτά μαζί με το exe, σε ένα rar αρχείο ή κάτι τέτοιο.


Κατά δεύτερον πολλά antivirus συμπεριλαμβανομένης της Google, βλέπουν λανθασμένα το exe σου σαν ιό. Η Google δεν είναι antivirus αλλά δεν σε αφήνει να στείλεις το exe μέσω mail, ούτε καν να το μοιράσεις μέσω του google drive.


Η λύση? Κάνεις 2 πράγματα. Πρώτον ανεβάζεις το αρχείο στο virus total, βλέπεις ποια antivirus το βλέπουν σαν ιό και στέλνεις false positive, τουλάχιστον στα μεγάλα antivirus που χρησιμοποιούνται ευρέως.

Δεύτερον συμπιέζεις το πρόγραμμα που θέλεις να μοιράσεις με κωδικό και μετά το ανεβάζεις στο google drive ή σε οποιονδήποτε server έχεις για διαμοιρασμό.


Αυτός είναι ο λόγος που όλα τα αρχεία που θα ανέβουν μελλοντικά σε αυτό το site θα έχουν κωδικό το 1234.


Παρακάτω είναι ο πλήρης κώδικας αυτού του παρθενικού προγράμματος.


import numpy as np


def my_first_game():
num_of_guesses = 1
max_num_of_guesses = 7
out_of_guesses = False

# The number we are looking for is auto generated
gold_num = np.random.randint(1, 99)

your_num = input("Can you find the number I thought? It's between 1-99 and you have 7 guesses: ")

try:
while int(gold_num) != int(your_num) and not out_of_guesses:
if num_of_guesses < max_num_of_guesses:

if int(gold_num) < int(your_num) < 100:
print("Go DOWN please")
elif int(gold_num) > int(your_num) > 0:
print("Go UP please")
elif int(your_num) >= 100:
print("No numbers above 99 are allowed!")
num_of_guesses -= 1
elif int(your_num) <= 0:
print("No negative numbers or 0 are allowed!")
num_of_guesses -= 1

num_of_guesses += 1
your_num = input("Try again: ")

else:
out_of_guesses = True
print("Sorry, you lost!")

else:
if int(gold_num) == int(your_num):
print("You found it, you bastard!")

except ValueError:
print("This is not a number, the program will terminate.")


my_first_game()

while True:
play_or_quit = input("Press 'p' to play again or 'q' to quit: ")
if play_or_quit.lower() == "p":
my_first_game()
else:
if play_or_quit.lower() == "q":
exit(0)

Τετάρτη 3 Νοεμβρίου 2021

Art Gallery Database

Και φτάνω στην 150ή και τελευταία άσκηση, του εκπληκτικού βιβλίου "Python by Example" της Nichola Lacey. Εκεί ζητείται να φτιαχτεί μια πλήρως λειτουργική βάση δεδομένων, μιας υποθετικής γκαλερί, όπου από ένα γραφικό περιβάλλον θα μπορείς να κάνεις αναζήτηση με βάση 4 διαφορετικά κριτήρια (καλλιτέχνης, μέσο ζωγραφικής, τιμή μεγαλύτερη ή μικρότερη) και θα μπορείς να προσθαφαιρείς έργα τέχνης ή στοιχεία επικοινωνίας καλλιτεχνών.

Χρησιμοποιήθηκε η Tkinter για το γραφικό περιβάλλον, η SQLite για την βάση δεδομένων και 297 γραμμές κώδικα στην Python 3. Είναι το πρώτο project που φτιάχνεται κατά παραγγελία, έστω και μιας συγγραφέως ενός βιβλίου στην Python.

Το πρώτο πρόβλημα που έπρεπε να ξεπεράσω σαν νέος προγραμματιστής είναι το πως γίνεται ένα κουμπί αναζήτησης να καταλήγει σε 4 διαφορετικά functions. Όι γνωρίζοντας από Tkinter ξέρουν πως με ένα κουμπί συνδέεις μόνο 1 function. Μετά ήταν και το γραφικό περιβάλλον, που θα μπουν τα κουμπιά, που η αναζήτηση κλπ.

Το τελικό αποτέλεσμα δεν είναι τελείως αποκρουστικό για 2 ημερών δουλειά. Σημασία έχει η δημιουργία μιας πλήρους database που μπορεί να διαχειριστεί εκατομμύρια εγγραφές με πλήρη αναζήτηση και βάλε-βγάλε πρακτικά όλων των στοιχείων, ανάλογα με τις ανάγκες του καθενός.

Το αρχείο είναι ελεύθερο για όποιον θέλει να το κατεβάσει εδώ. Το password είναι πάντα το 1234 και στάλθηκε false positive σε όσα antivirus το έβγαλαν σαν ιό. Σε μερικές μέρες θα μπει σε white list.


Υπόψιν ότι για να γίνει κανονική χρήση του προγράμματος, θα πρέπει τα αρχεία να αποσυμπιεστούν και να παραμείνουν και τα 4 στον ίδιο φάκελο, σε διαφορετική περίπτωση το db αρχείο δεν μπορεί να κάνει save όταν είναι συμπιεσμένο και οι αλλαγές θα χάνονται με την έξοδο.