Richtig: raw_input gibt immer einen String zurück, selbst wenn die Eingabe auch als Zahl interpretierbar wäre. Das will man einerseits so haben, weil Programme sich später darauf verlassen können wollen, dass sie mit dem Ergebnis von raw_input wie mit einem String umgehen können (und etwa seine Länge bestimmen).

Andererseits wäre so eine automatische Vorverarbeitung auch nicht immer gut – wer weiß, ob ein Programm nicht daran interessiert ist, den Unterschied zwischen 0019 und 19 zu sehen? Einem int sieht man nicht mehr an, wie er entstanden ist. Oder denkt an 19.07 – das könnte auch durchaus als Zeit gemeint sein, und dann möchte man vermutlich lieber Stunden und Minuten noch im String trennen und zwei ints haben als einen float, zumal, wenn man die Schwierigkeiten, die Computer mit (dezimalen) floats haben, bedenkt.