[Python] Variabele checken op type*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • aap1
  • Registratie: Januari 2010
  • Laatst online: 16:50
Ik ben de laatste tijd een beetje aan het kloten met python. Wat tutorials opzoeken etc.
Nu wou ik een programmatje schrijven dat test of het argument van het type string is.

tot nu heb ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
def isString(x):
    if type(x) == type("aap"):
        return True
    else:
        return False

a = raw_input("Voer wat in")

if isS(a):
    print a,"is een string"
else:
    print a,"is geen string"


die tweede regel klopt niet. Ik heb veel geprobeert, maar ik kom er maar niet uit.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Vraag over python zegt niet zoveel over je probleem, dus ik heb je titel iets aangepast. Denk daar de volgende keer aan! ;)




Heb je trouwens al lopen [google=python check variable type], want de eerste hit is meteen wat je vraagt: http://linux.byexamples.c...he-type-of-your-variable/

[ Voor 35% gewijzigd door BtM909 op 04-01-2010 16:32 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. [...]

Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
raw_input() geeft altijd een string terug, ook al voer je een nummer in. Je kunt deze zelf omzetten naar een int, float, whatever. Is de invoer geen geldige waarde dan krijg je een ValueError-exception, die je eenvoudig af kunt vangen.

Verder:
Python:
1
if type(x) == type("aap"):

Dit werkt opzich wel, maar type("aap") geeft het str type terug, dus hetzelfde is:
Python:
1
if type(x) == str:

Of met isinstance:
Python:
1
if isinstance(x, str):

Gebruik van type() en isinstance() wordt in veel gevallen echter afgeraden: in Python gebruikt men in plaats daarvan meestal duck typing.

[ Voor 37% gewijzigd door user109731 op 04-01-2010 16:56 ]


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Gebruik dan ten minste nog isinstance(x, basestring) - anders worden unicode strings namelijk niet herkend.

Oh, protip: gebruik alleen maar unicode strings voor tekst. Bytestring zijn leuk voor data, maar daarbuiten moet je ze eigenlijk niet gebruiken.