[Python] Esercizio con funzione su stringhe

Messaggioda _ester_ » 15/06/2020, 12:00

Salve, ho questo esercizio: "Scrivere una funzione che, ricevuti come parametri una lista di stringhe “v” ed un intero “k”, restituisca una stringa costruita come descritto di seguito.
*La stringa è costruita per passi, “prendendo” ad ogni passo una stringa da “v”.
*Il numero totale di passi sarà pari a “k”.
*Al primo “passo” si seleziona da v la stringa in prima posizione (posizione “zero”).
*Ad ogni passo successivo al primo, si seleziona da “v” la stringa presente “k” posizioni in avanti rispetto alla stringa selezionata al passo precedente. Si noti che “v” deve essere considerata come “circolare”, ovvero l’ultima posizione ha come posizione successiva la prima."
Io avrei risolto così:
Codice:
def stringa (v, k):
  ris=''
  mat=[]
  cont= 0
  for i in range (k*k):
    for j in v:
      mat.append (j)

  for i in range (len (mat)):
    if i%k==0:
      ris+= mat[i]
      cont+=1
    if cont==k:
     return ris

Questo metodo funziona, solo che impiega un numero, maggiore di k*k, di passi, che per k che cresce diventa piuttosto grande, e mi stavo chiedendo se esiste un metodo più diretto e meno "costoso" (non so se il termine è corretto), per esempio attraverso qualche generalizzazione per quanto riguarda gli indici della lista v.
_ester_
Junior Member
Junior Member
 
Messaggio: 42 di 202
Iscritto il: 29/12/2019, 22:48

Re: [Python] Esercizio con funzione su stringhe

Messaggioda marco2132k » 15/06/2020, 20:38

Forse ho capito male io, ma una cosa come
Codice:
def stringa(v,k):
    if v == [] or k == 0:
        return ''

    s = ''
    for i in range(0,k):
        s += v[(i * k) % len(v)]
   
    return s
perché non ti piace?
marco2132k
Advanced Member
Advanced Member
 
Messaggio: 570 di 2053
Iscritto il: 18/02/2018, 23:52

Re: [Python] Esercizio con funzione su stringhe

Messaggioda _ester_ » 16/06/2020, 08:15

Non è che non mi piaccia, non ho mai fatto informatica prima e non mi è venuto in mente. Ho chiesto qui apposta
Grazie dell'aiuto
_ester_
Junior Member
Junior Member
 
Messaggio: 43 di 202
Iscritto il: 29/12/2019, 22:48

Re: [Python] Esercizio con funzione su stringhe

Messaggioda apatriarca » 16/06/2020, 18:25

Più per scopo didattico che per altro è anche possibile scrivere il programma nel seguente modo:
Codice:
def stringa(v, k):
    return ''.join(v[(i * k) % len(v)] for i in range(k))

L'espressione v[(i * k) % len(v)] for i in range(k) restituisce la sequenza di stringhe da incollare tra di loro mentre è ''.join(...) prende una lista di stringhe e le incolla una con l'altra.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5439 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Python] Esercizio con funzione su stringhe

Messaggioda _ester_ » 17/06/2020, 07:44

Grazie apatriarca :)
_ester_
Junior Member
Junior Member
 
Messaggio: 44 di 202
Iscritto il: 29/12/2019, 22:48


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite