Gå til innhold

Python: mulig å skjekke om brukeren skrev inn en string?


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av warpie
Lenke til kommentar

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

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 av MrPear
Lenke til kommentar
Går det ikke ann å lage noe slikt, eller er jeg helt på bærtur?

Du er nok på bærtur :hm:

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

 

Du er nok på bærtur :hm:

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...