Skip to content

kmom02/marvin/a5 - dåliga vanor(?) och effektivisering #51

@jf-Lindberg

Description

@jf-Lindberg

Under arbetet med kmom02 kändes mina lösningar till vissa av uppgifterna forcerade och lite onaturliga. Även om lösningarna funkar och jag inte får några valideringsfel känns det som det går att förbättra dem. Jag hamnar lite i att "släcka bränder" ibland känns det som. Det här rör främst menyvalen i marvin och framför allt menyval a5.

Koden finns uppladdad här: https://umbridge.arnesson.dev/results/inspect/565038/BYYLmHb3PvUxfdFP6hYtIz0XY2tEzCFKM35x3VRt

Menyval A5 (förklaring följer nedan):

point_string = input('Input a string: ') # "a2b4A5s3B1"
final_str = ""
used_letters = ""
length = len(point_string)
lowercase = point_string.lower()

for letter in lowercase:
    result = 0
    if letter in used_letters or letter.isdigit():
        continue
    used_letters += letter
    if letter.isalpha():
        for i, char in enumerate(point_string):
            if char == letter and i < (length - 1):
                if point_string[i+1].isdigit():
                    point = int(point_string[i+1])
                result += point
            elif char == letter.upper() and i < (length -1 ):
                if point_string[i+1].isdigit():
                    point = int(point_string[i+1])
                result -= point
    final_str += letter + " " + str(result) + ", "
print(final_str[:-2])

Koden ovan funkar och passerar alla tester, men det känns definitivt som att den kan förbättras ordentligt, framför allt när det kommer till poängräknandet. De två if-statementsen som kollar om point_string[i+1] har ett numeriskt värde känns inte naturliga, men jag får ValueErrors om jag inte kör dem. Jag har också funderingar på ifall variabeln used_letters är bästa sättet att hålla koll på vilka bokstäver som inte ska räknas med fortsättningsvis - det känns inte som det. Provade flera andra lösningar men detta var den som funkade utan några problem.

Uppskattar all feedback möjlig på denna uppgift. Jag satt rätt länge med den så jag skulle vilja se vart jag tänkt fel och vad jag kunnat göra annorlunda. Nojjar lite över att komma in i ett "släcka bränder"-tänk där jag lägger till mer kod för att lösa problem jag skapat av att skriva dålig kod från början.

Metadata

Metadata

Assignees

No one assigned

    Labels

    återkopplingÅterkoppling på studenters kod

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions