2 svar
55 visningar
m83_11 85
Postad: 5 okt 03:40

loopar, 2 tal

Hej!

Såhär lyder uppgiften:

"Gör ett program som räknar från ett tal till ett andra tal. Vi ska kunna mata in två tal och sedan räknar programmet i steg om ett från det första till det andra. Om det första talet är större än det andra ska alltså programmet räkna nedåt. Exempel:

Ange första talet: 11

Ange andra talet: 17

11  12  13  14  15  16  17

Ange första talet: 22

Ange andra talet: 13

22  21  20  19  18  17  16  15  14  13

 

Min lösning:

Sedan står det att uppgiften är tänkt att all utskrift skulle göras med ett enda tecken i varje print().

Hur är det tänkt att man ska lösa uppgiften? är det loopar inuti loopar?

thedifference 409
Postad: 5 okt 05:47

Kanske uppgiftskaparen inte tog hänsyn till att du behöver göra som du gör med end för att få alla på samma rad. Det är kanske inte ett krav, utan bara något hen gjorde för att dina instruktioner ska se mindre kladdiga ut.

Det går ju att bygga en sträng och sen skriva ut den med en enda print, men jag tycker inte det är bättre än din lösning. Det är dessutom dålig praxis att kalla en variabel för en enda bokstav. Namnet ska ju ge en bra indikation om variabelns syfte. När jag kallar mina a i stället för typ num_sequence så går jag emot detta bara för att ha ett tecken i mina prints. Att du däremot kallar dina för i när du itererar är standard och helt okej.

num_one = int(input("Ange ett nummer: "))
num_two = int(input("Ange ett annat nummer: "))

if num_one < num_two:
    # skapar en lista, gör den till en sträng, tar bort första och sista tecknet ([]), och sen alla komman
    a = str([i for i in range(num_one, num_two + 1)])[1:-1].replace(",", "")
    print(a)
elif num_one > num_two:
    a = ""
    for i in range (num_one, num_two - 1, -1):
        a += f"{i} "
    print(a)
else:
    print("Inte samma nummer!")

Jag tror det är tänkt att du ska göra som du gjort fast utan end.

Vill du inte ha två nästan identiska loopar, så går det även att lösa så här:

def räkna_mellan(tal1, tal2):
    steg = 1 if tal1 < tal2 else -1
    for i in range(tal1, tal2 + steg, steg):
        print(i)

# Ta in två tal från användaren
tal1 = int(input("Ange det första talet: "))
tal2 = int(input("Ange det andra talet: "))

# Anropa funktionen för att räkna
räkna_mellan(tal1, tal2)
Svara
Close