4. Inlämningsuppgift 2

Programmeringsteknik

Hoppa till: navigering, sök
       Teori          Övningar          Rondelet      


Rondelet

I den här inlämningsuppgiften ska du skriva ett antal funktioner för att göra ett program som skapar en dikt av en inläst text. Programmet ska läsa in fyra meningar och sedan skriva ut texten uppdelad på följande rader:

  1. Textens fyra första ord med stora bokstäver
  2. En tom rad
  3. Textens fyra första ord
  4. Resten av första meningen
  5. Textens fyra första ord igen
  6. Andra meningen
  7. Tredje meningen
  8. Fjärde meningen
  9. Textens fyra första ord en sista gång


Texten kommer då att likna en rondelet - en fransk diktform.

Här är ett exempel på en körning:

                DIKTAUTOMATEN

Skriv in fyra meningar och få ut en rondelet!

Skriv mening nr 1: Det fanns ingen fil när jag handlade på Konsum.
Skriv mening nr 2: Bananerna var också slut.
Skriv mening nr 3: Jag köpte bröd istället.
Skriv mening nr 4: Nån sorts limpa med mycket fibrer.


DET FANNS INGEN FIL

Det fanns ingen fil
när jag handlade på Konsum.
Det fanns ingen fil
Bananerna var också slut.
Jag köpte bröd istället.
Nån sorts limpa med mycket fibrer.
Det fanns ingen fil

Tips

Varje funktion i ditt program bör ha en specifik uppgift. T.ex. kan en funktion ta hand om inmatning, en annan funktion kan dela upp meningarna och en tredje funktion kan skriva ut dikten.

Medan du testar programmet kan du ersätta anropet av din inläsningsfunktion med tilldelningssatser. På det sättet slipper du skriva in fyra meningar varje gång du testkör ditt program!

# För testning:
sentence[0] = "Det fanns ingen fil när jag handlade på Konsum.
sentence[1] = "Bananerna var också slut.
sentence[2] = "Jag köpte bröd istället.
sentence[3] = "Nån sorts limpa med mycket fibrer."

Det finns en användbar metod i Python som heter split() med vars hjälp du kan dela upp en mening så att det blir en lista av enskilda ord. Här är ett exempel som visar hur man använder split():

mening = "En ganska kort mening."
lista = mening.split()

lista har nu värdet ["En", "ganska", "kort", "mening."]

Ifall vi vill skriva ut vår lista, så finns metoden join. Den funkar så här: <sträng>.join([lista]). <sträng> är den separator som ska skilja elementen i listan åt, det kan vara t.ex. radbrytning: "\n", mellanrum: " " eller punkter: ".."

"".join(lista)   # ger " "Enganskakortmening."
", ".join(lista) # ger  "En, ganska, kort, mening."

För att göra om små bokstäver till stora i en sträng så kan du använda metoden upper():

mening = "En ganska kort mening."
ny_mening = mening.upper()

ny_mening har nu värdet "EN GANSKA KORT MENING."

Ditt program bör ha ett huvudprogram. Det betyder att du ska göra en huvudfunktion som anropar dina andra funktioner och som hantera inparametrar och returvärden. Detta görs för att undvika användandet av globala variabler i funktioner. Istället vill man skicka in variabler som inparametrar för att komma åt variabler i funktioner. Behöver du använda en variabel i annan funktion bör du använda returvärden.

Inlämning

Programmet ska finnas i en fil med namnet Förnamn_efternamn_2.py. Följ den här mallen:

# Programmeringsteknik webbkurs KTH inlämningsuppgift 2.
# <Ditt namn>
# <Datum>
# <Kort beskrivning av vad programmet gör>

<Programkod>

Innan du skickar in programmet så ska du se till att där inte finns någon kodupprepning som kan åtgärdas med funktioner och slingor.

När du har finputsat ditt program så går du till kursens förstasida. Under rubriken Examination hittar du Inlämningsuppgift 2 och där kan du lämna in filen Förnamn_efternamn_2.py . Observera att filen måste vara i .py-format, vilket den automatiskt blir om du skapar den med hjälp av IDLE. Detta är för att vi ska kunna prova och testköra ditt program.

Kom ihåg att denna uppgift ska göras individuellt, att samarbeta eller kopiera någon annans kod betraktas som fusk. Denna uppgift kommer att plagiatkontrolleras. Alla träffar vi får leder till disciplinnämndsanmälningar.

KONTROLL INNAN INLÄMNING:
* Har du testat ditt program?
* Har du namngivit dina variabler och funktioner väl?
* Ser din körning ut som exemplen?
* Har du kommenterat din kod?
* Använder du dig av inparametrar och returvärden?
* Har du en huvudprogram som anropar dina andra funktioner?
* Har du undvikit globala variabler (d.v.s. det finns ingen kod utanför
funktionerna utom anropet till ditt huvudprogram)?
* Har du undvikit kodupprepning?