ApeBapsen Skrevet 3. juli 2013 Del Skrevet 3. juli 2013 Hei! Er det mulig å skjekke om brukeren skrev inn en string? Altså: operator = str(raw_input("What's your operator? ")) numb1 = int(raw_input("Please insert the first number:")) numb2 = int(raw_input("Please insert the second number:")) [b]if operator == str: print "Error"[/b] Lager en kalkulator, og prøver å få fram en error melding hvis inputen er en string. Lenke til kommentar
ApeBapsen Skrevet 3. juli 2013 Forfatter Del Skrevet 3. juli 2013 Operatoren skal ikke kunne være float eller int. numb1 og numb2 kan være float og int, men ikke string. Vet at dette ble veldig rotete fremstit Lenke til kommentar
snippsat Skrevet 3. juli 2013 Del Skrevet 3. juli 2013 Viss du gir en string til float/int får du ValueError. Denne feilen fanger du opp med "try/except" feilbehandling og gir en fornuftig tilbakemelding til bruker. try: numb1 = int(raw_input("Please insert the first number:")) except ValueError: print 'Not a number,try again' Lenke til kommentar
ApeBapsen Skrevet 3. juli 2013 Forfatter Del Skrevet 3. juli 2013 (endret) Fins det et syntaks hvor hvis ett eller annet skjer, starter programmet på nytt? Altså hvis inputen er string starter koden fra starten av Endret 3. juli 2013 av MrPear Lenke til kommentar
slacky Skrevet 4. juli 2013 Del Skrevet 4. juli 2013 (endret) Flere måter å sjekke om en String faktisk er en String: input = raw_input("What's your operator? ") //input er altid String if input.isalpha(): #do something elif input.isdigit(): #do something Eller..: def isint(input): return input.isdigit() def isfloat(input): try: return float(input) != None; except ValueError: return False; def isstr(input): if not isint(input) and not isfloat(input): return True return False if __name__ == '__main__': input = raw_input("What's your operator? ") #input er altid String if isstr(input): #do something Fins det et syntaks hvor hvis ett eller annet skjer, starter programmet på nytt? Altså hvis inputen er string starter koden fra starten av En loop gjør jobben helt fint: while True: input = raw_input("What's your operator? ") if input.isdigit(): print("You must input a String!") else: break print(input) Endret 4. juli 2013 av warpie Lenke til kommentar
snippsat Skrevet 4. juli 2013 Del Skrevet 4. juli 2013 warpie sine forslag er greie dem. Men når det gjelder operator input ikke sjekk om det er string,men at det er +-*/. Alt annet enn +-*/ gir du en tilbakemelding til bruker at det er feil input. operator input kan gi tilbake f.eks '+',dette er en string og kan ikke brukes som +. Derfor må '+' linkens til f.eks en funksjon som gjør oppgaven med og addere tallene. Du kan se litt på denne,rimelig grei med et dictionary og metode get, som vil melding "Not an operator use +-*/" viss noe annet skrives inn. def add(numb1, numb2): return numb1 + numb2 def sub(numb1, numb2): return numb1 - numb2 def foo(ops, n1, n2): return { '+' : add(n1, n2), '-' : sub(n1, n2), }.get(ops, "Not an operator use +-*/") #operator = raw_input("What's your operator? ") #no need for str() operator = '+' #Try anything else than +- numb1 = 2 numb2 = 5 print foo(operator, numb1, numb2) #7 Lenke til kommentar
ApeBapsen Skrevet 4. juli 2013 Forfatter Del Skrevet 4. juli 2013 (endret) warpie sine forslag er greie dem. Men når det gjelder operator input ikke sjekk om det er string,men at det er +-*/. Alt annet enn +-*/ gir du en tilbakemelding til bruker at det er feil input. operator input kan gi tilbake f.eks '+',dette er en string og kan ikke brukes som +. Derfor må '+' linkens til f.eks en funksjon som gjør oppgaven med og addere tallene. Du kan se litt på denne,rimelig grei med et dictionary og metode get, som vil melding "Not an operator use +-*/" viss noe annet skrives inn. def add(numb1, numb2): return numb1 + numb2 def sub(numb1, numb2): return numb1 - numb2 def foo(ops, n1, n2): return { '+' : add(n1, n2), '-' : sub(n1, n2), }.get(ops, "Not an operator use +-*/") #operator = raw_input("What's your operator? ") #no need for str() operator = '+' #Try anything else than +- numb1 = 2 numb2 = 5 print foo(operator, numb1, numb2) #7 Ok, så langt har jeg ikke kommet i læringen av Python, men takk for svar! Går det ikke ann å lage noe slikt, eller er jeg helt på bærtur? if operator != + or - or / or * Endret 4. juli 2013 av MrPear Lenke til kommentar
snippsat Skrevet 4. juli 2013 Del Skrevet 4. juli 2013 Går det ikke ann å lage noe slikt, eller er jeg helt på bærtur? Du er nok på bærtur Du må huske at det operator raw_input gir deg tilbake et string objekt,og ikke en fungerende operator som + men '+'. Det er flere måter og gjøre dette på,her en til. def add(numb1, numb2): return numb1 + numb2 numb1 = 2 numb2 = 5 operator = '+' if operator in ['+', '-', '/', '*']: if operator == '+': print add(numb1, numb2) #7 else: print "Not an operator use +-*/" Lenke til kommentar
ApeBapsen Skrevet 4. juli 2013 Forfatter Del Skrevet 4. juli 2013 Du er nok på bærtur Du må huske at det operator raw_input gir deg tilbake et string objekt,og ikke en fungerende operator som + men '+'. Det er flere måter og gjøre dette på,her en til. def add(numb1, numb2): return numb1 + numb2 numb1 = 2 numb2 = 5 operator = '+' if operator in ['+', '-', '/', '*']: if operator == '+': print add(numb1, numb2) #7 else: print "Not an operator use +-*/" Um.. Er ikke så fryktelig god i Python (som dere kanskje har oppdaget), så noe a det over er litt vanskelig å forstå. For all del, tusen takk for svar, men hjelper lite når det er ting jeg ikke har lært Er bare en 15 åring som intesserer meg for programmering, men vi har jo alle vært der hvor jeg er nå Lenke til kommentar
ApeBapsen Skrevet 4. juli 2013 Forfatter Del Skrevet 4. juli 2013 Fint om dere kan forklare hva som skjer i koden Lenke til kommentar
Foxboron Skrevet 9. juli 2013 Del Skrevet 9. juli 2013 Fint om dere kan forklare hva som skjer i koden Hva er det du ikke forstår? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå