webForumDet fria alternativet

#Python Ta en titt på denna kod! Hjälp!

1 svar · 3 164 visningar · startad av andjoh88

andjoh88Medlem sedan okt. 20121 inlägg
#1

Jag har försökt fått mina variabler "u_lage" "u_skil" "u_diff" "i_till" till värden som fungerar i denna funktion.
Om jag gör int(input()) så kan jag inte använda mig av 0.0 värden, och använder jag float(input()) så funkar inte dessa i min beräkning konstigt nog!

Python 3.0 är det som gäller

def testa():
        print(
                '\n\n\n'
                'Talföljder'
                '\n'

                )

        # utgångsvärden 
        u_lage = float(input('Ange det första utgångsvärdet: '))
        print(
                '\n\nVälj skiljetecken\n'
                '1) Addition\n'
                '2) Substaration\n'
                '3) Multiplikation\n'
              )
        u_skil = float(input('Vad ska skiljetecket vara: '))
        u_diff = float(input('Ange värdet för differens: '))
        
        # intervall
        i_till = float(input('Vilket intervall: '))
        i_till += 1 

        int(u_lage)
        int(u_skil)
        int(u_diff)
        int(i_till)
        
        # confirm
        print(
                '\n#####################\n'
                'Du har valt följande:\n'
                'Från talet', u_lage, 'ska det', '(', u_skil, ') med', u_diff,
                'i intervallet', i_till - 1, '\n'
                '\nStämmer detta? \n"j" = ja \n"n"= nej'
                )
        con = input('Välj: ')
        if con == 'j':
                print('Räknar...\n\n')
        elif con == 'n':
                print('Skickas tillbaka...\n\n')
                return 0

        
        # for loop
        

        y = u_lage
        for x in range(1, i_till):
                if x < 10:
                        print('x=', x, ' y=', y)
                else:
                        print('x=', x, 'y=', y)

                if u_skil == '1':
                        y = y + u_diff
                elif u_skil == '2':
                        y = y - u_diff
                elif u_skil == '3':
                        y = y * u_diff
                else:
                        import time
                        time.sleep(1)
                        print ('ERROR...')
                        time.sleep(1)
                        print ('Du kan bara välja angivna skiljetecken!')
                        time.sleep(1)
                        print ('Laddar nästa...\n\n\n')
                        time.sleep(3)
                        return 0
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Jag vet inte om det kommer att lösa dina problem fullt ut, men jag ser omdelebart två problem.
1)

        int(u_lage)
        int(u_skil)
        int(u_diff)
        int(i_till)

Denna kod gör "ingenting". Variabelns värde koverteras till int, och sedan kastas värdet bort, och variabeln är oförändrad. Du måste tilldela variabeln det nya värdet för att det ska vara någon mening med det.

        int(u_lage)
        u_skil = int(u_skil)
        u_diff = int(u_diff)
        i_till = int(i_till)
                if u_skil == '1':

osv.

Eftersom u_skil inte kommer att vara en sträng utan ett nummer kommer de jämförelserna alltid att vara falska, och koden kommer alltid hamna i "else" oavsett värde på på u_skil. Ändra till if u_skil == 1: osv.

För övrigt, int är heltal (0, 1, 3, 42, -1337 osv) medan float även kan innehålla tal med decimaler. Du bör använda den typ som passar dina behov.

Sen kunde koden ha varit snyggare på olika sätt, men där har du nog de problem som gör att din kod inte funkar.

128 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)