57 svar
422 visningar
destiny99 behöver inte mer hjälp
destiny99 7940
Postad: 19 dec 2022 20:02

Funktionen ask_cell_number

funktionen printar ej ut den där listan eller 1 2. 

Analys 1229
Postad: 19 dec 2022 21:08

Ser inte hela uppgiften men prova  vad som händer om du accessar

rowlist[4,4]

destiny99 7940
Postad: 19 dec 2022 21:25 Redigerad: 19 dec 2022 21:30
Analys skrev:

Ser inte hela uppgiften men prova  vad som händer om du accessar

rowlist[4,4]

Det fungerar ej 

Analys 1229
Postad: 19 dec 2022 21:43

Förlåt, menade såhär:
rowlist[4][4]

destiny99 7940
Postad: 19 dec 2022 21:53 Redigerad: 19 dec 2022 21:54
Analys skrev:

Förlåt, menade såhär:
rowlist[4][4]

Jag har bara rowlist i parameter för def funktionen,vet ej var du menar den ska vara? Jag syftar på funktionen def ask_cell_number och ej funktionen ovan...

 

Analys 1229
Postad: 19 dec 2022 21:58

Jag menar att du inuti denna skall testa att skriva

print(rowlist[4][4])

 

vad händer då?

destiny99 7940
Postad: 19 dec 2022 22:18 Redigerad: 19 dec 2022 22:23
Analys skrev:

Jag menar att du inuti denna skall testa att skriva

print(rowlist[4][4])

 

vad händer då?

Analys 1229
Postad: 19 dec 2022 22:34

Min poäng är att du:

Def ask cell number(rowlist):

läser in input, a, b

utan att värdera om input är korrekt 

value= rowlist[a,b]

om a eller b är utanför range kommer du att få ett exceptiion, indexerror, som du kan fånga.

isf läs igen, annars har du ett värde

destiny99 7940
Postad: 19 dec 2022 22:46 Redigerad: 19 dec 2022 22:49
Analys skrev:

Min poäng är att du:

Def ask cell number(rowlist):

läser in input, a, b

utan att värdera om input är korrekt 

value= rowlist[a,b]

om a eller b är utanför range kommer du att få ett exceptiion, indexerror, som du kan fånga.

isf läs igen, annars har du ett värde

Vad ska jag läsa igen? Jag förstår ej riktigt vad jag ska göra. Så du menar jag har en def function ask_cell_number(rowlist)

a= 1

b=2 

If a>=1 and b>2:

Print(rowlist[a][b]

?

Analys 1229
Postad: 19 dec 2022 23:14

Såvitt jag förstår skall du definiera funktionen

ask_cell_number(rowlist)

 

stämmer det?

destiny99 7940
Postad: 19 dec 2022 23:52
Analys skrev:

Såvitt jag förstår skall du definiera funktionen

ask_cell_number(rowlist)

 

stämmer det?

Aa

Fermatrix 7841 – Fd. Medlem
Postad: 20 dec 2022 00:00 Redigerad: 20 dec 2022 00:00

En förklaring till try except:

Eftersom varje element i listorna är strängar så kan du få en ValueError när du cast:ar till en int om det inte är ett heltal. 

Vidare kan man få en exception om man försöker läsa en index i arrayen som inte existerar. 

Analys 1229
Postad: 20 dec 2022 00:02

Då menar jag att du skall läsa in rad och kolumn,

och direkt accessa inparametern rowlist.

value = rowlist[row] [col]

om du har otillåtna värden, utanför matrisen, så kommer det ett indexerror.

detta skall du fånga och då trigga ny inläsning. Annars gick ju allt bra och du kan returnera row,col

destiny99 7940
Postad: 20 dec 2022 07:41
Dracaena skrev:

En förklaring till try except:

Eftersom varje element i listorna är strängar så kan du få en ValueError när du cast:ar till en int om det inte är ett heltal. 

Vidare kan man få en exception om man försöker läsa en index i arrayen som inte existerar. 

Jag är lite ny på det här med try o except och försökte få in det i koden. 

destiny99 7940
Postad: 20 dec 2022 07:41
Analys skrev:

Då menar jag att du skall läsa in rad och kolumn,

och direkt accessa inparametern rowlist.

value = rowlist[row] [col]

om du har otillåtna värden, utanför matrisen, så kommer det ett indexerror.

detta skall du fånga och då trigga ny inläsning. Annars gick ju allt bra och du kan returnera row,col

destiny99 7940
Postad: 20 dec 2022 07:42
destiny99 skrev:
Dracaena skrev:

En förklaring till try except:

Eftersom varje element i listorna är strängar så kan du få en ValueError när du cast:ar till en int om det inte är ett heltal. 

Vidare kan man få en exception om man försöker läsa en index i arrayen som inte existerar. 

Jag är lite ny på det här med try o except och försökte få in det i koden. 

Analys 1229
Postad: 20 dec 2022 07:53

Du kanske kan hämta lite inspiration här:

https://docs.python.org/3/tutorial/errors.html#exceptions

det är lite att man kör utan att kolla först, går det så går det annars får man ett exception.

destiny99 7940
Postad: 20 dec 2022 07:56
Analys skrev:

Du kanske kan hämta lite inspiration här:

https://docs.python.org/3/tutorial/errors.html#exceptions

det är lite att man kör utan att kolla först, går det så går det annars får man ett exception.

Tyvärr stör sig koden på raden där det står rowlist[4][4] o säger typ out of range. 

Fermatrix 7841 – Fd. Medlem
Postad: 20 dec 2022 08:22

Tänkt på att du har här 3st listor i en lista, som i sig har 4 element. 

Dvs, du kan aldrig accessa 4,4 eftersom en array maximalt just nu får up till index 3.

0, 1, 2 ,3

Sedan har du inte 5st arrayer, utan som jag nämnde 3. rowlist[4][4] är alltså out of bounds.

Speciellt i ditt fall där din lista endast består av en enda lista, som är på index 0, med ett enda element som också är på index 0.

destiny99 7940
Postad: 20 dec 2022 08:26 Redigerad: 20 dec 2022 08:27
Dracaena skrev:

Tänkt på att du har här 3st listor i en lista, som i sig har 4 element. 

Dvs, du kan aldrig accessa 4,4 eftersom en array maximalt just nu får up till index 3.

0, 1, 2 ,3

Sedan har du inte 5st arrayer, utan som jag nämnde 3. rowlist[4][4] är alltså out of bounds.

Speciellt i ditt fall där din lista endast består av en enda lista, som är på index 0, med ett enda element som också är på index 0.

Så man ska istället ha rowlist[0][3] för att den ska printa ut alla tre listorna i en lista? 

Fermatrix 7841 – Fd. Medlem
Postad: 20 dec 2022 08:37 Redigerad: 20 dec 2022 08:39

Rowlist är för tillfället [["1"]], rowlist[0] ger dig rn lista som ser ut såhär: ["1"], denna listan har ett enda element, den ligger på index 0.

Om listan hade varit [[1,2],[3,4]]

Så får vi listan [1,2] på index 0. Här kan man plocka ut värdet 1 på index 0, värdet 2 på index 1. 

Vi får [3,4] på index 1, och liknande ovan så är elementen mappade från 0 till 1.

destiny99 7940
Postad: 20 dec 2022 08:46
Dracaena skrev:

Rowlist är för tillfället [["1"]], rowlist[0] ger dig rn lista som ser ut såhär: ["1"], denna listan har ett enda element, den ligger på index 0.

Om listan hade varit [[1,2],[3,4]]

Så får vi listan [1,2] på index 0. Här kan man plocka ut värdet 1 på index 0, värdet 2 på index 1. 

Vi får [3,4] på index 1, och liknande ovan så är elementen mappade från 0 till 1.

Okej då är jag med. Eftersom jag endast har[ ["11"] ]så blir det rowlist[0][0][1] då har jag index 0 i stora listan , sen kommer 11an ut eller hur ? 

Analys 1229
Postad: 20 dec 2022 10:48

rowlist[0][0][1] Addresserar 

första raden, första kolumnen och andra tecknet i strängen där.

i detta fall andra ettan i 11.

 

Läs in row,col

try:

Value= rowlist[row][col]

testa sen om du fått IndexError

destiny99 7940
Postad: 20 dec 2022 11:15 Redigerad: 20 dec 2022 11:17
Analys skrev:

rowlist[0][0][1] Addresserar 

första raden, första kolumnen och andra tecknet i strängen där.

i detta fall andra ettan i 11.

 

Läs in row,col

try:

Value= rowlist[row][col]

testa sen om du fått IndexError

Ja jag testar. Men när du skriver läs in row,col menar du att jag ska ange row,col som parameter? Vi måste även definiera row,col också tex lika med en lista i en lista med strängar som de gav oss. det står även att användaren ska skriva ruta 23 och när den printas så ska något skrivas ut. Hänger ej med på vad de menar med ruta 23 osv..Den informationen verkar oklart för mig. Rader och kolumner har vi,men rutor ?

Analys 1229
Postad: 20 dec 2022 12:52

Nu har jag läst och förstått HELA uppgiften, alltid bra om man skall hjälpa. Måste tänka lite på hur man använda dig av exception med denna frågeställning men ett uppenbart spår är att det reses ett exception om man indexerar utanför matrisen.

destiny99 7940
Postad: 20 dec 2022 13:46 Redigerad: 20 dec 2022 14:08
Analys skrev:

Nu har jag läst och förstått HELA uppgiften, alltid bra om man skall hjälpa. Måste tänka lite på hur man använda dig av exception med denna frågeställning men ett uppenbart spår är att det reses ett exception om man indexerar utanför matrisen.

Analys 1229
Postad: 20 dec 2022 15:51

Hinner inte hjälpa till nu ken kan visa på delar av en lsg ikväll.

Laguna Online 30484
Postad: 20 dec 2022 16:00

Det ser ut om att try-except är på fel nivå. Indentera dem så de hör till funktionen som definieras ovanför.

destiny99 7940
Postad: 20 dec 2022 16:03
Laguna skrev:

Det ser ut om att try-except är på fel nivå. Indentera dem så de hör till funktionen som definieras ovanför.

Okej  jag korrigerade det, men det printas ej ut något förutom True som hör till förra defitionen

Laguna Online 30484
Postad: 20 dec 2022 16:37

Är du säker på att ask_cell_number anropas? Eftersom den anropar sig själv med samma argument kan den knappast fungera.

destiny99 7940
Postad: 20 dec 2022 17:10
Laguna skrev:

Är du säker på att ask_cell_number anropas? Eftersom den anropar sig själv med samma argument kan den knappast fungera.

Nu anropas den. Jag bytte plats så att den anropas på slutet av hela koden.

Analys 1229
Postad: 20 dec 2022 20:16

Online nu. Har du möjlighet att visa hela koden?

destiny99 7940
Postad: 20 dec 2022 23:07
Analys skrev:

Online nu. Har du möjlighet att visa hela koden?

Analys 1229
Postad: 20 dec 2022 23:26

Jag förstår nog inte riktigt.  Denna kodsnutt förorsakar ju iofs exception men försöker ju inte lösa problemet att hitta index för talet.

Analys 1229
Postad: 20 dec 2022 23:49

Denna kod löser problemet, dock utan anv av exceptions. Koden är väldigt straightforward. Prova att köra den med rowlist enligt ursprungliga exemplet:

def ask_cell_number(rowlist):
    good_number_found=False
    while not good_number_found:
        nr=input('Välj en ruta:')
        found = False
        i=0
        while i < len(rowlist) and not found:
            j=0
            while j  < len(rowlist[i]) and not found:
                if rowlist[i][j] == nr:
                    found=True
                else:
                    j+=1
            if not found :
                i+=1
        if found:
            good_number_found = True
    return i,j
Analys 1229
Postad: 20 dec 2022 23:50

Fundera på vad som kan gå fel här och fånga sen det felet med ett exception.

destiny99 7940
Postad: 21 dec 2022 00:05
Analys skrev:

Denna kod löser problemet, dock utan anv av exceptions. Koden är väldigt straightforward. Prova att köra den med rowlist enligt ursprungliga exemplet:

def ask_cell_number(rowlist):
    good_number_found=False
    while not good_number_found:
        nr=input('Välj en ruta:')
        found = False
        i=0
        while i < len(rowlist) and not found:
            j=0
            while j  < len(rowlist[i]) and not found:
                if rowlist[i][j] == nr:
                    found=True
                else:
                    j+=1
            if not found :
                i+=1
        if found:
            good_number_found = True
    return i,j

Bra kod. Jag förstår ej riktigt vad den gör bara 

Fermatrix 7841 – Fd. Medlem
Postad: 21 dec 2022 00:09 Redigerad: 21 dec 2022 00:13

Lösningen är väl lite overkill? Behövs verkligen så många cases och 3 loopar? 

Om man bara kör på bruteforce kan man göra det på O(n²) med två for loopar och en if-sats. Ungefär på samma sätt brute force lösningen för twosum fungerar.

@Destiny, du behöver bara ett try except block.

Skriv det du vet kan throwa en exception i try, hantera i except. Det behövs alltså inte flera stycken. 

Fermatrix 7841 – Fd. Medlem
Postad: 21 dec 2022 00:22

Det är nog en bra idé att se till att vi först förstår hur en 2d-array kan hanteras.

 

Ovan har jag skapat en list som heter arr som har 3 listor i sig men 3 olika element. Ovan har jag plockat ut 3 och 5.

Min fråga till dig: Vad ska man skriva för att få utskriften 9, 2 och 7?

Här har du också ett exempel på varför try and except kan vara användbart:


Eftersom jag inte orkade minnas vad index out or range exception heter, så hanterar jag egentligen alla exceptions, men poängen är densamma.

Analys 1229
Postad: 21 dec 2022 00:27
destiny99 skrev:
Analys skrev:

Denna kod löser problemet, dock utan anv av exceptions. Koden är väldigt straightforward. Prova att köra den med rowlist enligt ursprungliga exemplet:

def ask_cell_number(rowlist):
    good_number_found=False
    while not good_number_found:
        nr=input('Välj en ruta:')
        found = False
        i=0
        while i < len(rowlist) and not found:
            j=0
            while j  < len(rowlist[i]) and not found:
                if rowlist[i][j] == nr:
                    found=True
                else:
                    j+=1
            if not found :
                i+=1
        if found:
            good_number_found = True
    return i,j

Bra kod. Jag förstår ej riktigt vad den gör bara 

Koden skall lösa problemet att :

ta in en lista av listor med tal som strängar

(a) den skall sen läsa in ett tal och se om den kan hitta den i någon av listorna

den börjar med rad 0, index 0 alltid första i python. Här används i som index.

där kollar denposition för position, är ’11’ lika med den inmatade strängen, om inte är ’12’ osv tom det fjärde strängen. Här används j som index.

om den då inte hittat hoppar den till nästa rad, och kollar där

osv

om den hittat talet, found=True så säger den att den hittat ett tal i matrisen, good number found= true

annars måste ju python fråga användaren efter ett annat tal och försöka hitta det istället.

destiny99 7940
Postad: 21 dec 2022 07:41
Dracaena skrev:

Det är nog en bra idé att se till att vi först förstår hur en 2d-array kan hanteras.

 

Ovan har jag skapat en list som heter arr som har 3 listor i sig men 3 olika element. Ovan har jag plockat ut 3 och 5.

Min fråga till dig: Vad ska man skriva för att få utskriften 9, 2 och 7?

Här har du också ett exempel på varför try and except kan vara användbart:


Eftersom jag inte orkade minnas vad index out or range exception heter, så hanterar jag egentligen alla exceptions, men poängen är densamma.

För att vi ska få utskriften 2,7 och 9 så behöver vi skriva arr[0][0:2][2][0:2]

destiny99 7940
Postad: 21 dec 2022 08:22 Redigerad: 21 dec 2022 08:23
Analys skrev:
destiny99 skrev:
Analys skrev:

Denna kod löser problemet, dock utan anv av exceptions. Koden är väldigt straightforward. Prova att köra den med rowlist enligt ursprungliga exemplet:

def ask_cell_number(rowlist):
    good_number_found=False
    while not good_number_found:
        nr=input('Välj en ruta:')
        found = False
        i=0
        while i < len(rowlist) and not found:
            j=0
            while j  < len(rowlist[i]) and not found:
                if rowlist[i][j] == nr:
                    found=True
                else:
                    j+=1
            if not found :
                i+=1
        if found:
            good_number_found = True
    return i,j

Bra kod. Jag förstår ej riktigt vad den gör bara 

Koden skall lösa problemet att :

ta in en lista av listor med tal som strängar

(a) den skall sen läsa in ett tal och se om den kan hitta den i någon av listorna

den börjar med rad 0, index 0 alltid första i python. Här används i som index.

där kollar denposition för position, är ’11’ lika med den inmatade strängen, om inte är ’12’ osv tom det fjärde strängen. Här används j som index.

om den då inte hittat hoppar den till nästa rad, och kollar där

osv

om den hittat talet, found=True så säger den att den hittat ett tal i matrisen, good number found= true

annars måste ju python fråga användaren efter ett annat tal och försöka hitta det istället.

Ja jag ska försöka skapa något liknande o skicka sedan här Eftersom assistenter klagar ofta på att det ej finns kommentarer i varje rad och sen använder enkla variabelnamm. Det är mycket i och j justnu plus din förklaring är svårt för mig som fortfarande är nybörjare

Analys 1229
Postad: 21 dec 2022 08:34

Om du skall jobba med rowlist som den ser ut i exemplet, vilket uppgiften kräver, är det viktigt att du sätter dig in i indexering, hur man hittar i matrisen.

Deffinera rowlist enligt exemplet pss som inparametern ser ut:

rowlist=[[’10’,’20’, etc

testa sen att indexera olika element 

[0] betyder första raden

[1] betyder andra

[1][2] betyder tredje elementet på abdra radern etc

destiny99 7940
Postad: 21 dec 2022 08:47 Redigerad: 21 dec 2022 09:05
Analys skrev:

Om du skall jobba med rowlist som den ser ut i exemplet, vilket uppgiften kräver, är det viktigt att du sätter dig in i indexering, hur man hittar i matrisen.

Deffinera rowlist enligt exemplet pss som inparametern ser ut:

rowlist=[[’10’,’20’, etc

testa sen att indexera olika element 

[0] betyder första raden

[1] betyder andra

[1][2] betyder tredje elementet på abdra radern etc

Jaha du menar att min definierade funktion består nu av def ask_cell_number ( rowlist)

Rowlist= hela listan ?

Att indexera olika element är ju inga problem om man vill att de ska skrivas ut. Men uppgiften har typ no condition med rutor osv som man behöver fundera deras variabelnamn osv. 

Analys 1229
Postad: 21 dec 2022 12:23

Om du anropar programsnutten ovan som beskrivs i uppgiften nedan så beter den sig som jag läser att uppgiften kräver. Om det finns fler beskrivningar så känner jag inte till dem. Den skall ju hitta index(row,col) till en cell som har samma innehåll som den inmatade strängen.

 

destiny99 7940
Postad: 21 dec 2022 15:32
Analys skrev:

Om du anropar programsnutten ovan som beskrivs i uppgiften nedan så beter den sig som jag läser att uppgiften kräver. Om det finns fler beskrivningar så känner jag inte till dem. Den skall ju hitta index(row,col) till en cell som har samma innehåll som den inmatade strängen.

 

Aa vi anropar med  värden på row and col som vi definierat som parameter eller hur?

Analys 1229
Postad: 21 dec 2022 22:57

Inte som jag uppfattar problemet.

funktionen ask_cell_number, som får en matris som parameter skall:

fråga användaren efter ett tal, i exemplet svarar användaren 23.

detta tal skall letas upp i matrisen och positionen skall returneras.

23 finns, i exemplet, på andra raden och tredje kolumnen. Dessa positioner är 1 och 2 eftersom python startar på 0.

1,2 är ju också svaret i exemplet.

Fermatrix 7841 – Fd. Medlem
Postad: 21 dec 2022 23:26 Redigerad: 21 dec 2022 23:27

Det Analys beskriver är alltså följande:

 

def ask_cell_number(rowlist: list, target: str) -> Tuple[int, int]:
    Do some work...

Du tar emot en godtyckling lista, du tar emot ett tal (notera att target kan vara en int också.) och kollar om target finns i rowlist. Om ja, returnera var den ligger, lista i, index j till exempel.

Om man gör något taskigt så hanterar vi det med en try except och i vilket fall som om target inte finns så tvingar vi användaren att ange en ny target. 

Kommer du vidare med uppgiften?

destiny99 7940
Postad: 22 dec 2022 08:09
Dracaena skrev:

Det Analys beskriver är alltså följande:

 

def ask_cell_number(rowlist: list, target: str) -> Tuple[int, int]:
    Do some work...

Du tar emot en godtyckling lista, du tar emot ett tal (notera att target kan vara en int också.) och kollar om target finns i rowlist. Om ja, returnera var den ligger, lista i, index j till exempel.

Om man gör något taskigt så hanterar vi det med en try except och i vilket fall som om target inte finns så tvingar vi användaren att ange en ny target. 

Kommer du vidare med uppgiften?

Hm jag förstår fortfarande ej varför man ska ha taget som parameter..lite oklart för mig. Jag tänker mig mer def ask_cell_number (rowlist)

Number_found= True

Number_found= int(input("Välj en ruta:")

i=0

While i>=23

Print("1","2")

Else:

Return False

Analys 1229
Postad: 22 dec 2022 09:30

Inser att det är otroligt svårt att diskutera detta med korta meddelanden. Kan du förklara med dina ord vad du anser ask cell skall göra?

destiny99 7940
Postad: 22 dec 2022 09:54
Analys skrev:

Inser att det är otroligt svårt att diskutera detta med korta meddelanden. Kan du förklara med dina ord vad du anser ask cell skall göra?

Den ska definiera funktionen ask_cell_number med rowlist som inparametern. Sen ska den leta efter ett nummer som user matar in och returnerar med 1,2 om den hittar. Den där 23an ska tydligen finnas i rowlist 

Fermatrix 7841 – Fd. Medlem
Postad: 22 dec 2022 10:16

Ja, du kan ta emot inputen utanför, det är så uppgiften gör egentligen.

Men det är bara en liten detalj.

destiny99 7940
Postad: 22 dec 2022 10:19 Redigerad: 22 dec 2022 10:20
Dracaena skrev:

Ja, du kan ta emot inputen utanför, det är så uppgiften gör egentligen.

Men det är bara en liten detalj.

Precis men det är det jag förstått det som. Sen behöver man säkert lägga in loopar och sånt.  Lite längre finns ett annat anrop också som jag ej förstår om vi ska göra samma sak och få ut något annat?

Fermatrix 7841 – Fd. Medlem
Postad: 22 dec 2022 10:22 Redigerad: 22 dec 2022 10:22

Alltså, uppgiften verkar vilja att funktionen läser in användares val av ruta.

Så här:

Du kallar på funktionen oxh blir tillsagd att ange ett tal. Funktionen kikar nu om talet finns, om inte, eller du försöker göra något otillåtet så frågar vi användaren igen. Detta enligt uppgiftens instruktioner.

Generellt sätt är detta dåligt. En funktion ska bara göra en sak, inte många. Det hade alltså varit mycket mer lämpligt att splittra upp funktionen i 2-3 mindre funktioner.

Inputen är dock en detalj, skit I den för tillfället. Låt strängen vara global, eller tar den som inparamterer, spelar ingen roll. Se till att funktionen fungerar först.

Första steget är att få till så funktionen kan hitta om talet existerar ich returnerar dess index. Sedan kan man lägga till try except, en while loop, input etc.

Laguna Online 30484
Postad: 22 dec 2022 10:57

Med andra ord kan det se ut ungefär så här:

def find_cell_number(number, rowlist):
    komplicerade grejer, returnera [row,column] eller None (om number inte finns med)

def ask_cell_number(rowlist):
    i = input("Välj en ruta: ")
    result = find_cell_number(i, rowlist)
    if result:
       return result
    else:
       return None

Som ni ser klarar man sig utan try/except. Man är ju aldrig beroende av att det inmatade faktiskt är ett tal. Är det inte det så kommer man helt enkelt inte att hitta det.

Det återstår att fixa till ask_cell_number så att den aldrig returnerar None utan i stället frågar användaren samma sak igen, med en loop.

Vill man verkligen öva på try/except så kan man ju göra om det inmatade till ett tal. Mer realistiskt hade det varit om wordlist hade innehållit tal från början.

Men det är en jobbig uppgift för en nybörjarkurs, med tre olika aspekter som ska hanteras i en och samma funktion.

destiny99 7940
Postad: 22 dec 2022 13:28
Laguna skrev:

Med andra ord kan det se ut ungefär så här:

def find_cell_number(number, rowlist):
    komplicerade grejer, returnera [row,column] eller None (om number inte finns med)

def ask_cell_number(rowlist):
    i = input("Välj en ruta: ")
    result = find_cell_number(i, rowlist)
    if result:
       return result
    else:
       return None

Som ni ser klarar man sig utan try/except. Man är ju aldrig beroende av att det inmatade faktiskt är ett tal. Är det inte det så kommer man helt enkelt inte att hitta det.

Det återstår att fixa till ask_cell_number så att den aldrig returnerar None utan i stället frågar användaren samma sak igen, med en loop.

Vill man verkligen öva på try/except så kan man ju göra om det inmatade till ett tal. Mer realistiskt hade det varit om wordlist hade innehållit tal från början.

Men det är en jobbig uppgift för en nybörjarkurs, med tre olika aspekter som ska hanteras i en och samma funktion.

Hm det låter som att jag måste skapa samma funktion igen? 

destiny99 7940
Postad: 22 dec 2022 13:30
Dracaena skrev:

Alltså, uppgiften verkar vilja att funktionen läser in användares val av ruta.

Så här:

Du kallar på funktionen oxh blir tillsagd att ange ett tal. Funktionen kikar nu om talet finns, om inte, eller du försöker göra något otillåtet så frågar vi användaren igen. Detta enligt uppgiftens instruktioner.

Generellt sätt är detta dåligt. En funktion ska bara göra en sak, inte många. Det hade alltså varit mycket mer lämpligt att splittra upp funktionen i 2-3 mindre funktioner.

Inputen är dock en detalj, skit I den för tillfället. Låt strängen vara global, eller tar den som inparamterer, spelar ingen roll. Se till att funktionen fungerar först.

Första steget är att få till så funktionen kan hitta om talet existerar ich returnerar dess index. Sedan kan man lägga till try except, en while loop, input etc.

Okej jag börjar med steg 1 dvs skapa funktionen så att den kan fråga om talet existerar och returnerar dess index. Jag vet ej hur jag ska få in try except eller om try except är överhuvudtaget ett krav på denna uppgift. Måste nästan kolla upp det.

Laguna Online 30484
Postad: 22 dec 2022 13:53

Det som egentligen är krångligt här är att leta fram användarens tal i rowlist. Det blir samma kod vare sig du har den i en egen funktion (vilket jag rekommenderar) eller i ask_cell_number.

Svara
Close