Concordo con quanto detto da luzzi.
Proviamo a darti una mano:
Prima ancora di poter definire una funzione, ti consiglio di andarti a vedere come gestire la manipolazione delle stringhe in python
QUI , in particolare guardati la parte dello slicing e changing upper and lower case strings. Sono operazioni abbastanza elementari, ma bisogna sapere con cosa si ha a che fare.
Una volta capito cos'è e come funziona una stringa, saper fare "deal" con i loop è cosa fondamentale, soprattutto nelle funzioni.
Dai quindi una letta veloce
QUI per i loop e tante altre cose.
Andiamo nel dettaglio:
Prova così: (nota: il professore non te l'accetterà, non essendo una funzione. è un codice puramente dimostrativo per farti capire con cosa hai a che fare)
Codice:
test_str = "A carnevale ogni scherzo vale!"
res = ""
for idx in range(len(test_str)):
if not idx % 2 :
res = res + test_str[idx].upper()
else:
res = res + test_str[idx].lower()
print(str(res))
Puoi vedere l'esecuzione del codice in live
QUI , guarda attentamente, python ci mette 94 step per analizzare queste dieci linee di codice.
Per ogni indice nel range della lunghezza dei caratteri di test_str: partendo dall'indice 0 (come saprai in Python si parte da 0, in matematica da 1)
restituisci in res (result) la stringa di testo (test-str) con l'indice selezionato [idx].upper() oppure lower.
Bisogna fare attenzione su un dettaglio: qui si chiede di printare tutte i caratteri, uno maiuscolo e uno minuscolo, senza fare swap se una è maiuscola o minuscola quindi la funzione swapcase() non ha molto senso. Idem fare cosa simile a questa sarebbe sbagliata:
Codice:
for x in test_str:
if x.isupper() == True:
return x.lower()
oppure
Codice:
for x in test_str:
return x.swapcase()
Prova tu a fare qualche "deal" con questo codice, dopodichè una volta capito il loop da fare potrai costruire la tua funzione