Ripasso:
Le stringhe
Le stringhe possono essere definite con ‘ o “ (in maniera del tutto indifferente)
L’uso di ‘ come carattere nella stringa può essere recuperato usando ” oppure \
Possiamo definire stringhe su più linee usando “”” “””
Il carattere \n indica il return
Esistono altri escape characters come \t per TAB o \\ per BACKSLASH
ESEMPI
'atggt'
"atggt"
'questa non e' una stringa valida'
"questa invece lo e' "
'anche questa e\'una stringa valida'
Stampare Stringhe
La funzione print()
print() stampa le stringhe con un formato user friendly.
Si possono usare degli operatori (formatting operator) per stampare in maniera piu’ semplice e strutturata:
Operatori per le stringhe
manipolare stringhe
- s1 + s2 concatena stringhe s1 ed s2
- s1 ∗ v ripete s1 v volte
- s1 in s2 appartenenza (vero se s1 è una sottostringa di s2)
- s1 not in s2 non appartenenza (vero se s1 non è una sottostringa di s2).
print('atggt'+ "atggt")
print('atggt'*3)
s1 =('atggt'+ "atggt")
s2 ='gg'
print(s2 in s1)
Output:
True
s1 =('atggt'+ "atggt")
s2 ='gg'
print(s2 not in s1)
Output:
False
Altri operatori per stringhe
str[i] indicizzazione: ritorna il carattere nella posizione i (partendo da 0)
str[i:j] slicing: ritorna la sottostringa di str che parte da i (incluso) ed arriva a j (escluso)
Esercizio 1:
- creare una stringa che contenga 5 volte la sottostringa ‘atg’ e 2 volte la sottostringa ‘cga’;
- concatenare 4 stringhe a scelta in una nuova stringa, stampare la lunghezza della stringa risultante.
Soluzione
1)
my_str = 5*'atg'+2*'cga'
print(my_str)
Output:
atgatgatgatgatgcgacga
2)
s1 = 'ciao '
s2 = 'come '
s3 = 'stai '
s4 = '?'
s = s1+s2+s3+s4
print(s)
print(len(s))
Output:
ciao come stai ?
16
Esercizi su variabili e stringhe
Esercizio 2:
- data una stringa contenente i 4 caratteri a,t,c,g, calcolare e stampare la percentuale di caratteri ‘a’ e ‘t’ presenti nella stringa
- creare una stringa che contenga esattamente il 25% di caratteri at
- date due stringhe s1 ed s2 qualsiasi, stampare True se s1 e’ una sottostringa di s2 e false altrimenti.
Soluzione
1)
dna = 4*'at'+10*'cg'
atperc = (dna.count('a')+dna.count('t'))/len(dna)
print(atperc)
Output:
0.2857142857142857
2)
dna = 25*'a'+75*'c'
print(dna)
Output:
aaaaaaaaaaaaaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
3)
s1 = 'sotto'
s2 = 'sottostringa'
s3 = 'altra stringa'
print(s1 in s2)
print(s1 in s3)
Output:
True
False
Esercizio 3:
Date due stringhe s1 ed s2 qualsiasi, stampa le due stringhe e poi True se s1 e’ una sottostringa di s2 e false altrimenti.
Soluzione
s1 = '1001'
print(s1)
s1_tmp = s1.replace('0','C')
s1_tmp = s1_tmp.replace('1','0')
s1_rev = s1_tmp.replace('C','1')
print(s1_rev)
Output:
1001
0110
Esercizio 4:
Chiedere all’utente una stringa di dna ( una stringa contenente solo i caratteri atcg) e stampare la posizione della seconda occorrenza del carattere ‘a’ .
Soluzione
dna = input("inserisci una stringa di dna:\n")
first = dna.find('a')
index = dna[first+1:].find('a')
index = (index+1) + (first + 1)
print("la posizione della seconda occorrenza del carattere 'a' e' %d" % index
Output:
inserisci una stringa di dna:
gaggggtggg
l’indice della seconda occorrenza del carattere ‘a’ e’ 2
Convertire un tipo in un altro
la funzione input(...) ritorna sempre una stringa
possiamo usare la funzione int(...) per convertire una stringa in un numero
funzioni per convertire i tipi
int(x), trasforma la stringa in x in un numero in base 10
int(x,base), trasforma la stringa x in un numero in base base
float(x), trasforma la stringa x in un numero decimale
Esercizio 5:
Chiedere all’utente una stringa di dna e stampare l’ultima occorrenza della sottosequenza ‘atg’.
Soluzione
dna = input("inserisci una stringa di dna:\n")
last = dna.rfind('atg')
print("l'indice della seconda occorrenza della sottosequenza 'atg' e' %d" % last)
Output:
inserisci una stringa di dna:
gatggggtatgtgggatg
l’indice della seconda occorrenza della sottosequenza ‘atg’ e’ 15
Esercizio 6:
Data una stringa composta dai caratteri 1 e 0 stampare il numero di occorrenze del carattere 1 ed il numero di occorrenze del carattere 0 usando una sola chiamata alla funzione print().
Soluzione
my_str = input("inserisci una stringa formata da 0 e 1:\n")
occ_0 = my_str.count('0')
occ_1 = my_str.count('1')
print("la stringa %s contiene %d occorrenze del carattere '0' e %d occorrenze del carattere '1'" % (my_str,occ_0,occ_1))
Output:
inserisci una stringa formata da 0 e 1:
001101010000111111
la stringa 001101010000111111 contiene 8 occorrenze del carattere ‘0’ e 10 occorrenze del carattere ‘1’
[elementor-template id=”12586″]
[no_toc]
(2537)