Copiare, capovolgere, …

Copiare

Osserva

  • Per copiare si concatenano i singoli caratteri a destra
  • Per copiare al contrario si concatenano i caratteri a sinistra
Con start Con start e stop
def copia(s):
    ss=""
    for c in s:
        ss=ss+c
    return ss
def copia(s, start): 
    ss="" 
    for i in range(start, len(n)):
        ss=ss+s[i] 
    return ss
def copia(s, start, stop): 
    ss="" 
    for i in range(start, stop):
        ss=ss+s[i] 
    return ss
def capovolta(s):
    ss="" 
    for c in s: 
        ss=c+ss 
    return ss
def capovolta(s, start):
    ...
def capovolta(s, start, stop):
    ...

start e stop devono puntare effettivamente ai caratteri della stringa

Aggiungendo prima del for le istruzioni

  • start=min(0, start)
  • stop=max(stop, len(s))

si filtrano eventuali valori troppo bassi o troppo alti.

Mescolare

Crea una lista di indici per la stringa, mescola la lista degli indici, copia la stringa utilizzando gli indici mescolati

import random 

def mescolata(s): 
    indici=list(range(len(s))) 
    random.shuffle(indici) 
    ss="" 
    for i in indici: 
        ss+=s[i] 
    return ss

Passa i caratteri a una lista, mescola il contenuto della lista, copia la lista in una stringa

lista=list(s) 
random.shuffle(lista) 
ss="" 
for c in lista: 
    ss+=c

Passa i caratteri a una lista, mescola il contenuto della lista, trasforma la lista in stringa

lista=list(s) 
random.shuffle(lista) 
s=str().join(lista)

Ordinare

Passa i caratteri a una lista, ordina la lista di caratteri con sort(), trasforma la lista in stringa

s1="pyTHon" 
lista=list(s1)       # ['p','y','T','H','o','n'] 
lista.sort()         # ['H','T','n','o','p','y'] 
s2=str().join(lista) # 'HTnopy'

La funzione sorted()

  • viene applicata ai codici numerici (ASCII, Unicode)
  • restituisce una lista
lista=sorted(s1)     # ['H','T','n','o','p','y'] 
s2=str().join(lista) # 'HTnopy'

Ordinare con un criterio

  • str.lower, considera ogni lettera come minuscola
  • str.strip, non considera gli spazi iniziali e finali
  • str.upper, considera ogni lettera come maiuscola
lista=sorted(s1, key=str.lower) # ['H','n','o','p','T','y'] 
s2=str().join(lista)            # 'HnopTy'

Continua: Anagrammi?