Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Σχετικά έγγραφα
Σημειωματάριο Δευτέρας 20 Νοε. 2017

Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

Τυχαίοι αριθμοί ρίξε μια «ζαριά»

Mπαρμπούτι. Φύλλο Εργασίας. Τυχαιότητα

Mπαρμπούτι. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Τυχαιότητα

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Σημειωματάριο Τετάρτης 4 Οκτ. 2017

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Κεφάλαιο 13: Φτιάχνοντας παιχνίδια

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

Σημειωματάριο Δευτέρας 23 Οκτ. 2017

Εισαγωγή στην Αριθμητική Ανάλυση

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

ΕΠΑΝΑΛΗΨΗ ΧΩΡΙΣ ΠΡΟΚΑΘΟΡΙΣΜΕΝΑ ΒΗΜΑΤΑ,ΜΕΤΡΗΤΕΣ,ΜΕΓΙΣΤΟΣ,ΜΕΓΙΣΤΟ ΟΝΟΜΑ Χαμηλόμισθος

Γραφικά υπολογιστών Εργαστήριο 2 Παιχνίδια μαντεύματος με τυχαίους αριθμούς και loops

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Θέματα Προγραμματισμού Η/Υ

1.Puzzle. ΕΠΙΜΕΛΕΙΑ: ΓΕΩΡΓΙΑ ΚΛΩΣΤΡΑΚΗ Σελίδα 1

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Μάντεψε τον Αριθμό. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Οδηγίες

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Γράψτε ένα πρόγραμμα που θα προσομοιώνει τη ρίψη ενός νομίσματος και θα εμφανίζει στην οθόνη Κορώνα» ή «Γράμματα».

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

KTurtle. KTurtle του KDE. KTurtle (καμβάς), Επεξεργαστής Κώδικα και Επιθεωρητής (Εικόνα 2.1). Στην Κονσόλα (Εκτελεστής) Επιφάνεια Εργασίας (καμβάς)

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Μάντεψε τον Αριθμό. Φύλλο Εργασίας. Οδηγίες

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2018 Β ΦΑΣΗ

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

SPSS Statistical Package for the Social Sciences

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Καροτοκυνηγός. Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Παρουσίαση Libreoffice. Βασίλειος Καραβασίλης Μονάδα Αριστείας ΕΛΛΑΚ ΕΤΕΠΗ 27/04/2015

Βασικές Έννοιες Υπολογιστών

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Μπαρμπούτι 2. Τα Κόκκαλα Στον Μάστορα

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

Γλώσσα προγραμματισμού python

Σημειωματάριο Τετάρτης 11 Οκτ. 2017

Παιχνίδια σε Javascript

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Επαναληπτική δοκιμασία στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τεχνολογικής Κατεύθυνσης Μάιος 2013

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

1. Τα τμήματα της επιφάνειας εργασίας των Windows

Τα Windows Πολύ Απλά και Πολύ Σύντομα

Μεθόδων Επίλυσης Προβλημάτων

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Θέματα Προγραμματισμού Η/Υ

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Προγραμματισμός. Το περιβάλλον του scratch

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Value Iteration και Q- Learning για Peg Solitaire

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Σημειωματάριο Τετάρτης 29 Νοε. 2017

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

for for for for( . */

Αρχεία κειμένου και η VB.NET

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

ΚΕΝΤΡΙΚΗ ΟΡΓΑΝΩΤΙΚΗ ΕΠΙΤΡΟΠΗ 8 ου ΠΑΝΕΛΛΗΝΙΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ 1996 ΠΡΟΚΑΤΑΡΚΤΙΚΗ ΦΑΣΗ ΠΑΝΕΛΛΗΝΙΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΘΕΜΑΤΑ ΓΥΜΝΑΣΙΟΥ

Transcript:

Σημειωματάριο Τετάρτης 25 Οκτ. 2017 Ένα πρόγραμμα που παίζει κρεμάλα Σήμερα φτιάξαμε ένα πρόγραμμα που παίζει "κρεμάλα" με το χρήστη. Το πρόγραμμα hangman.py link (http://fourier.math.uoc.gr/~mk/prog1718/files/hangman.py)) τρέχει στο command line και συνοδεύεται από ένα αρχείο λέξεων, το words.txt (link (http://fourier.math.uoc.gr/~mk/prog1718/files/words.txt)) που περιέχει μια λέξη (αγγλικά) σε κάθε γραμμή του. Για να το τρέξετε καταβάσετε το αρχείο hangman.py και το αρχείο words.txt στο ίδιο directory πηγαίνετε εκεί με το command line και δώστε την εντολή python3 hangman.py Μπορείτε επίσης να το τρέξετε στο repl.it (https://repl.it/nnpp/6). Πώς διαβάζουμε από αρχεία κειμένου Ένα από τα νέα πράγματα που μάθαμε σήμερα είναι το πώς να διαβάζουμε από αρχεία κειμένου. Ας υποθέσουμε ότι έχουμε στον τρέχοντα κατάλογο ένα αρχείο με το όνομα keimeno.txt (link (http://fourier.math.uoc.gr/~mk/prog1718/files/keimeno.txt))και με περιεχόμενα τα παρακάτω. Αρνάκι άσπρο και παχύ, της μάνας του καμάρι. Το αρχείο αυτό, όπως και κάθα αρχείο που περιέχει κείμενο, το βλέπουμε σα μια ακολουθία από γραμμές, η κάθε μια από τις οποίες είναι ένα string. Για να διαβάσουμε τα περιεχόμενα ενός αρχείου πρέπει πρώτα να το ανοίξουμε με τη συνάρτηση open. Το δεύτερο όρισμα της συνάρτησης open προσδιορίζει ότι ανοίγουμε το αρχείο για διάβασμα (reading) και όχι για να το γράψουμε ή να το τροποποιήσουμε. Η open επιστρέφει (κι εμείς το αποθηκεύουμε στη μεταβλητή f) ένα αντικείμενο μέσω του οποίου έχουμε πρόσβαση στο αρχείο. Δεν είναι κάποιου τύπου από τους συνηθισμένους (int, float, string) αλλά κάτι που συνήθως ονομάζεται file handle ή file descriptor στον προγραμματισμό. Είναι μέσω της μεταβλητής f που έχουμε πρόσβαση στο αρχείο από δω και στο εξής.

Με τις επόμενες εντολές ανοίγουμε το αρχείο και με τη μέθοδο.readlines() διαβάζουμε όλες τις γραμμές του σε μια λίστα L από strings. Κλείνουμε έπειτα το αρχείο με τη μέθοδο (το νόημα αυτής της πράξης είναι ότι οι όποιες αλλαγές έχουν γίνει στο αρχείο πηγαίνουν και γράφονται στο δίσκο) και μετά τυπώνουμε τη λίστα L που φτιάξαμε από τα περιεχόμενα του αρχείου. Παρατηρείστε ότι κάθε στοιχείο του L (που αντιστοιχεί σε μια γραμμή του αρχείου) τελειώνει με τον ειδικό χαρακτήρα \n (newline) ο οποίος σηματοδοτεί το τέλος της γραμμής. Οι δύο τελευταίες γραμμές του αρχείου δεν έχουν κανένα χαρακτήρα πέρα από το χαρακτήρα newline (όταν γράφαμε το αρχείο με τον editor απλά πατήσαμε σκέτο enter και αλλάξαμε γραμμή). In [1]: L = f.readlines() print(l) ['Αρνάκι άσπρο και\n', ' παχύ,\n', '\n', 'της μάνας του\n', ' καμάρι.\n', '\n', '\n'] Με τη μέθοδο.strip() ενός string μπορούμε και "καθαρίζουμε" το string από "λευκούς" χαρακτήρες (κενά, newlines, tabs, και ίσως ένα δύο άλλα ακόμη που δε φαίνονται). Όσοι λευκοί χαρακτήρες είναι στην αρχή ή στο τέλος του string διαγράφονται και η μέθοδος.strip() επιστρέφει το string "καθαρό" (τουλάχιστον στην αρχή και στο τέλος του). Φτιάχνουμε έτσι μια καινούργια λίστα LL από την L με τα στοιχεία της L καθαρισμένα από κενά και τυπώνουμε αυτά. Βλέπουμε ότι τώρα δεν υπάρχει οι χαρακτήρες newline. In [2]: L = f.readlines() LL = [] for s in L: LL.append(s.strip()) print(ll) ['Αρνάκι άσπρο και', 'παχύ,', '', 'της μάνας του', 'καμάρι.', '', ''] Ευκαιρία είναι τώρα να δούμε το μηχανισμό list comprehension, με τον οποίο μπορούμε να φτιάχνουμε μια λίστα από μια άλλη με πολύ σύντομο και ευανάγνωστο τρόπο. Το for loop του προηγούμενου κώδικα και η αρχικοποίηση της LL έχουν εδώ αντικατασταθεί από τη γραμμή LL = [s.strip() for s in L]

In [3]: L = f.readlines() LL = [s.strip() for s in L] print(ll) ['Αρνάκι άσπρο και', 'παχύ,', '', 'της μάνας του', 'καμάρι.', '', ''] Ακόμη πιο περιεκτικά θα μπορούσαμε να το έχουμε γράψει ως εξής: In [4]: L = [s.strip() for s in f.readlines()] print(l) ['Αρνάκι άσπρο και', 'παχύ,', '', 'της μάνας του', 'καμάρι.', '', ''] Το πολύ περιεκτικό και πυκνό δεν είναι πάντα το καλύτερο (ή το γρηγορότερο στο να τρέξει), αλλά είναι συνήθως καλύτερο επειδή είναι ευανάγνωστο. Το πρόγραμμα hangman.py

In [ ]: # Εισάγουμε τις βιβλιοθήκες (modules ονομάζονται συνήθως στην python) # os (για operating system) και random (για τυχαιότητα) import os, random penalty = 0 # Αρχική ποινή του παίκτη used=[] # Ποια γράμματα έχει χρησιμοποιήσει ο παίκτης μέχρι στιγμής. filename="words.txt" # Σε ποιο αρχείο είναι αποθηκευμένες οι λέξεις που χρησιμοποιούμε. # Στην παρακάτω μεταβλητή έχουμε αποθηκεύσει σε μια λίστα από strings τα οριζόντια κομμάτια # της κρεμάλας μαζί με τον κρεμασμένο. # Θα ζωγραφίζουμε κάποια κομμάτια από αυτό το σχήμα, ανάλογα με το ποια είναι η ποινή του παίκτη. # # Παρατηρείστε το διπλό backslash (\) στο τέλος κάποιων γραμμών. Επειδή το backslash παίζει κάποιο # ειδικό ρόλο στα strings (σκεφτείτε π.χ. πώς προσδιορίζουμε το χαρακτήρα newline με \n) ο μόνος

# τρόπος για να προσδιορίσουμε το backslash ως ένα χαρακτήρα το string μας είναι να το γράψουμε διπλό. # Έτσι αν τυπώσετε ένα string με διπλό backslash θα εμφανιστεί μόνο ένα. Αν π.χ. δώσετε print("abcd\\") # θα τυπωθεί abc\ parts = [ '----- ', ' o', ' i', ' / \\', ' ', ' / \\', ' d b' ] # Τα επίπεδα κάτω από το οριζόντιο ξύλο της κρεμάλας, που πάντα το τυπώνουμε, είναι 6. # Γι' αυτό και το maxpenalty παρακάτω βγαίνει 5. Όταν η ποινή γίνει 6 ο παίκτης έχει χάσει. maxpenalty = len(parts)-2 # Μέγιστη επιτρεπτή ποινή. Με ένα πόντο παραπάνω χάνει το παιχνίδι. Όσα είναι τ α # στοιχεία της λίστας parts μείον 1. # Εδώ διαβάζουμε όλες τις λέξεις από το αρχείο μας, στη λίστα WL. Αμέσως καθαρίζουμε όλα τα strings από λ ευκούς # χαρακτήρες με τη μέθοδο.strip() και τα μετατρέπουμε όλα σε μικρά γράμματα με τη μέθοδο.lower() f = open(filename, "r") WL = [s.strip().lower() for s in f.readlines()] # Επιλέγουμε ένα τυχαίο στοιχείο της WL με τη συνάρτηση random.choice(). Αυτή θα είναι η λέξη μας. theword = random.choice(wl) # Στη μεταβλητή show κρατάμε τη λέξη με τη μορφή που τη δείχνουμε στον παίκτη. Αρχικά θα είναι όλο παύλε ς, όσες # και το μήκος της λέξης theword. show = len(theword)*"-" # Αυτή είναι η βασική ανακύκλωση του προγράμματος που τρέχει συνεχώς έως ότου διακοπεί με break (όταν ο π αίκτης # χάσει ή όταν κερδίσει). while True: os.system('clear') # Καλούμε την εντολή του λειτουργικού συστήματος 'clear' η οποία καθαρίζει το term inal. # Το ποια είναι αυτή η εντολή εξαρτάται από το σε ποιο λειτουργικό σύστημα δουλεύο υμε. # Στο linux η εντολή clear καθαρίζει το τερματικό οπότε καλούμε αυτήν. Στα Windows

(όταν μάλλον η 'cls') # το πρόγραμμά μας τρέχει στη γραμμή εντολών των Windows η αντίστοιχη εντολή είναι print("**************************************************************") # Τυπώνει μια κενή γραμμή. Για αισθητικούς λόγους. print(parts[0]) # Τυπώνει το πρώτο string της λίστας parts (οριζόντιο ξύλο της κρεμάλας). Τυπώνεται π άντα. for i in range(penalty): # Τυπώνουμε τόσα μετέπειτα στάδια της κρεμάλας όσοι και βαθμοί ποινής print(parts[i+1]) for i in range(penalty+1, len(parts)): # Από τα υπόλοιπα στάδιο της κρεμάλας τυπώνουμε μόνο τον πρώτο print(parts[i][0]) # χαρακτήρα (κατακόρυφο ξύλο) if penalty > maxpenalty: # Ελέγχουμε αν η ποινή έχει ξεπεράσει την επιτρεπτή. Αν ναι ο παίκτης έχασε. print("έχασες. Η λέξη ήταν {} και έφτασες μέχρι την {}".format(theword, show)) break # τελειώνει το while άρα και το πρόγραμμα # Μετά την κρεμάλα δείχνουμε στο χρήστη πληροφορίες για το παιχνίδι. print("η λέξη είναι: {}".format(show)) # Δείχνουμε την (ημι-)κρυμμένη λέξη print("έχεις χρησιμοποιήσει τα γράμματα: {}".format(used)) # Δείχνουμε επίσης το ποια γράμματα έχει χ ρησιμοποιήσει ήδη print("η ποινή σου είναι {}. Μέγιστη ποινή είναι {}".format(penalty, maxpenalty)) # Δείχνουμε την ποι νή του παίκτη. c = input("--> Δώσε το επόμενο γράμμα (και πάτα enter): ") c = c.lower() # Διαβάζουμε ένα string από τον παίκτη και το κάνουμε σε μικρά γράμματα if len(c)>1: # Αν έδωσε πάνω από 1 γράμμα ξαναπάμε στην αρχή input("--> Δώσε μόνο ένα γράμμα. Πάτα enter.") continue if c in used: # Αν έδωσε ήδη χρησιμοποιημένο γράμμα ξαναπάμε στην αρχή input("--> Το έχεις ήδη χρησιμοποιήσει. Πάτα enter.") continue else:

used.append(c) # Αν νέο γράμμα το προσθέτουμε στη λίστα used. # Αν το γράμμα δεν είναι στη λέξη τότε αυξάνουμε την ποινή κατά 1 if c not in theword: penalty += 1 # Εδώ φτιάχνουμε τη νέα μορφή της λέξης show s="" for i in range(len(theword)): if c==theword[i]: # Αν το γράμμα που έδωσε είναι στη θέση αυτή τότε βάζουμε αυτό στη show s += c else: # αλλιώς αφήνουμε στη show ό,τι είχε εκεί. s += show[i] show=s # Αν η λέξη show έχει γίνει ίδια με την theword τότε ο παίκτης κέρδισε. if show == theword: print("η λέξη ήταν [{}].".format(theword)) print("κέρδισες.") break