Συμβολοσειρές quiz

a='Hello Kids'

Η μεταβλητή a είναι τύπου str ή συμβολοσειρά. Τα γράμματα (οι χαρακτήρες)  της μεταβλητής a μπορούν να χρησιμοποιηθούν μέσω δεικτών όπως παρακάτω:

Questions13
Attempts allowedUnlimited
AvailableAlways
Backwards navigationAllowed
Start Quiz

Συμβολοσειρές

Άσκηση με συμβολοσειρές

print 'Γράψε τις απαντήσεις στα ΕΛΛΗΝΙΚΑ με ΚΕΦΑΛΑΙΑ' #Δοκιμάστε στον Η/Υ 
hellas=''
ap1='___________'
while (ap1[4]!='Σ' or ap1[0]!='Μ')or len(ap1)!=6:
    ap1=raw_input('Το σχολειο και η ίδια η ζωή δίνουν τη  : _ _ Θ _ _ Η :')
    if len(ap1)<6:
        ap1=ap1+(10-len(ap1)) * '_' #Πρόσθετει κενά για να γίνει ο έλεγχος while
hellas+=ap1[0]+ ' ' # κρατά το πρώτο γράμμα

ap2='___________'
while (ap2[2]!='Δ' or ap2[4]!='Ε' or ap2[6]!='Α')or len(ap2)!=7:
    ap2=raw_input('Τόλμη γενναιοψυχία: _ _ Δ _ Ε _ Α :')
    if len(ap2)<7:
        ap2=ap2+(10-len(ap2)) * '_' 
hellas+=ap2[0]+ ' '

ap3='___________'
while (ap3[4]!='Σ' or ap3[2]!='Λ' or  ap3[7]!='Η'or len(ap3)!=8:
    ap3=raw_input('Ευγενική πράξη: _ Α _ Ο _ _ _ Η :')
    if len(ap3)<8:
        ap3=ap3+(10-len(ap3)) * '_' 
hellas+=ap3[0]  + ' '

ap4='___________'
while ap4[2]!='Λ' or len(ap4)!=6:
    ap4=raw_input('Η χώρα του πολιτισμού και της τεχνολογίας: _ Λ _ _ _ _ :')
    if len(ap4)<6:
        ap4=ap4+(10-len(ap4)) * '_' 
hellas+=ap4[0] + ' '

ap5='___________'
while (ap5[3]!='Α' or ap5[4]!='Μ')or len(ap5)!=6:
    ap5=raw_input('Η συμπόνια έχει αξία όπως και η μυϊκή: _ Υ _ _ Μ _ :')
    if len(ap5)<6:
        ap5=ap5+(10-len(ap5)) * '_' 
hellas+=ap5[0]+' '

ap6='___________'
while (ap6[1]!='Ρ'or ap6[3]!='Μ') or len(ap6)!=5:
    ap6=raw_input('Η παγκόσμια ειρήνη είναι: _ Ρ _ Μ _ :')
    if len(ap6)<5:
        ap6=ap6+(10-len(ap6))*'_' 
hellas+=ap6[0]+' '

ap7='___________'
while ap7[1]!='Ι' or len(ap7)!=4:
    ap7=raw_input('Σαρωτική: _ Ι _ _ :')
    if len(ap7)<4:
        ap7=ap7+(10-len(ap7))*'_' 
hellas+=ap7[0]+ ' '

ap8='___________'
while (ap8[2]!='Ο' or  ap8[3]!='Ρ'or len(ap8)!=9:
    ap8=raw_input('Αν βάλεσαι από μεγάλες δυνάμεις, κράτα την: _ Σ _ _ Ρ _ _ _ _ :')
    if len(ap8)<9:
        ap8=ap8+(10-len(ap8)) * '_' 
hellas+=ap8[0] + ' '

ap9='___________'
while ap9[3]!='Τ' or len(ap9)!=5:
    ap9=raw_input('Ο δρόμος του καλού οδηγει στην: _ Ρ _ _ _ :')
    if len(ap9)<5:
        ap9=ap9+(10-len(ap9)) * '_' 
hellas+=ap9[0]+' '

print'================='
print hellas     #(c)Dieman
print'================='  

#Δοκίμασε τον παρακάτω κώδικα σε Python 2.7

Οπως διαπιστώνεις, επαναλαμβάνεται 9 φορές ίδιος κώδικας.

Μπορεί να μπει η αντίστοιχη σκέψη μέσα σε for, με κάποιες αλλαγές, όπως παρακάτω...

print 'Γράψε τις απαντήσεις στα ΕΛΛΗΝΙΚΑ με ΚΕΦΑΛΑΙΑ' #Δοκιμάστε στον Η/Υ 
quest='Το σχολειο και η ίδια η ζωή δίνουν τη  : Μ _ Θ _ _ Η            :'+ \
'Τόλμη γενναιοψυχία : _ _ Δ _ Ε _ Α                              :'+ \
'Ευγενική πράξη :_ Α _ Ο _ _ _ Η                                 :'+ \
'Η χώρα του πολιτισμού και της τεχνολογίας : _ Λ _ _ _ _         :'+ \
'Η συμπόνια έχει αξία όπως και η μυϊκή :_ Υ _ _ Μ _              :'+ \
'Η παγκόσμια ειρήνη είναι :_ Ρ _ Μ _                             :'+ \
'Σαρωτική :_ Ι _ _                                               :'+ \
'Αν βάλεσαι από μεγάλες δυνάμεις, κράτα την : _ Σ _ _ Ρ _ _ _ _  :'+ \
'Ο δρόμος του καλού οδηγει στην : _ Ρ _ _ _                      :'#len(καθε ερωτησης) =65
apantiseis='_ΑΘΗΣ_&'+\
'_ΝΔΡΕΙ_&'+\
'_ΑΛΟΣΥΝ_&'+\
'_ΛΛΑΔ_&'+\
'_ΥΝΑΜ_&'+\
'_ΡΑΜ_&'+\
'_ΙΚ_&'+\
'_ΣΟΡΡΟΠΙ_&'+\
'_ΡΕΤ_&'#η κάθε απαντηση έχι στο τελος το '&' και ειναι λίγο... κρυφές

hellas=''
start_letter=0 #πρώτο γράμμα της σωστης απάντησης, στη θέση 0
for  i in range(9): #για 9 ερωτήσεις
    found=False
    while not found: #όσο δε βρίσκεις την απάντηση
        apantisi=''
        ap=raw_input(quest[65*i:65*(i+1)]) #Δώσε την απάντηση
        
        for letter in apantiseis[start_letter:]: #για κάθε γράμμα, στις apantiseis 
            if letter=='&': # όταν το γράμμα είναι το &, σταμάτα
                break #εκτός ύλης, απλά για την εναλλακτική for σε κάτι πιο δύσκολο. Δες για την break
            if letter!='_' #όσα γράμματα δεν έχουν κενό, κόλλησέ τα
                apantisi=apantisi+letter #Δημιούργησε από τα γράμματα την απάντηση
        
        if apantisi==ap[1:len(ap)-1]: #Αν η απάντησή είναι σωστή - βγάλε τις κάτω παύλες
            found=True      #το βρήκες
            start_letter+=len(apantisi)+3 #ξεκίνα την επόμενη απάντηση, μετά από 3 γράμματα (μετά απο τα _&)
            
        
    hellas+=ap[0]+ ' '
print'================='
print hellas    #(c)Dieman
print'================='        

Λίγο μπέρδεμα; Εύχομαι να βρεις την άκρη smiley

 

while σε for, υπό προϋποθέσεις...

Η while μπορεί να μετατραπεί σε for μόνο όταν είναι βέβαιο ότι θα πραγματοποιήσει γνωστό αριθμό επαναλήψεων.

Ευκολότερη είναι η μετατροπή της while που μοιάζει με τα παρακάτω τμήματα:

 

while σε for

Questions8
Attempts allowedUnlimited
AvailableAlways
Backwards navigationAllowed
Start Quiz

Pages