ÖVNINGSUPPGIFT

Uppgift 4 Array: Skriv ut index för första förekomsten av ett värde i en array

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: array, lista

I följande uppgifter är följande lista given:

values = [2, 5, 4, 5, 1, 8, 9, 10, 20, 8, 2, 5, 19, 17, 15, 13]   

A: Skriv ut värdet för ett givet index i en lista

Be användaren om ett heltalsindex från 0 till len(values) - 1. Vid ett negativt index eller ett index som är minst len(values) ska programmet varna och fråga igen. Du kan anta att inmatningen är ett heltal.

Exempel:

  • Anger användaren värdet 5 ska programmet skriva ut Värde: 8.
  • Anger användaren värdet -2 ska programmet skriva ut "Ogiltigt värde".
  • Anger användaren värdet 20 ska programmet skriva ut "Ogiltigt värde".

B: Skriv ut index för första förekomsten av ett värde i en lista

Skapa ett program som ber användaren om en siffra mellan 0 och 20. Skriv sedan ut indexet på första förekomsten av värdet i listan.

Exempel:

  • Anger användaren värdet 4 ska programmet skriva ut: Index: 2.
  • Anger användaren värdet 7 ska programmet skriva ut:  Värdet kunde inte hittas
  • Anger användaren 21 ska programmet skriva ut "Ogiltigt värde"
Ledtråd
  • Observera att första indexet på en lista alltid börjar på 0.
  • Skapa en while-loop som alltid är True som frågar efter ett värde från användaren. Om värdet uppfyller alla kriterium så bryt loopen med break.
  • Funktionen enumerate() är smidig att använda i en for-loop för att hålla reda på både värdet och indexet i en lista
Svar

Uppgift A

values = [2, 5, 4, 5, 1, 8, 9, 10, 20, 8, 2, 5, 19, 17, 15, 13]
while(True):
    index = int(input(f"Ange ett värde mellan 0 och {len(values) - 1}: "))
    if index < 0 or index >= len(values):
        print("Ogiltigt värde")
    else:
        # Bryt evighetsloopen
        break

print(f"Värde: {values[index]}")
  • Med en evighetsloop frågar vi användaren om ett värde. Upprepa till dess att användaren angett ett giltigt värde.
  • Vi kan formatera textsträngen som skrivs ut med f"". Det som skrivs inom måsvingar tolkas som en variabel.
  • Var vaksam på att få med alla index i listan >= så att du inte missar sista värdet. Tänk på att listan börjar med index 0.

Uppgift B

values = [2, 5, 4, 5, 1, 8, 9, 10, 20, 8, 2, 5, 19, 17, 15, 13]
max_value = 20
while(True):
    index = int(input(f"Ange ett värde mellan 0 och {max_value}: "))
    if index < 0 or index > max_value:
        print("Ogiltigt värde")
    else:
        # Bryt evighetsloopen
        break

found = False
# Enumerate ger indexet (i) samt värdet (val) på varje index.
for i, val in enumerate(values):
    if val == index:
        found = True
        print(f"Index {i}")
        break

if not found:
    print("Värdet kunde inte hittas")
  • Med en evighetsloop frågar vi användaren om ett värde. Upprepa till dess att användaren angett ett giltigt värde.
  • Funktionen enumerate() håller reda på både indexet (i) och värdet (val), vilket gör det smidigt att loopa igenom en lista med en for-loop.
  • Avbryt en loop med break.