Frage zu dem INPUT-Befehl!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
avatarble
User
Beiträge: 3
Registriert: Samstag 6. April 2013, 20:27

Hallo!

Wir beschäftigen uns im Informatikunterricht gerade mit der Programmiersprache Python! Nun hätte ich eine Frage:

Wir sollen folgendes Programm schreiben:

Wenn man das Programm ausführt, erfragt der Computer zwei Zahlen, von denen er die Summe ausrechnet! Dies sollen wir mittels des Input-Befehls machen! Ich habe schon diesen Ansatz, leider kommt dann immer die Aussage:

a is not defined

Hier mein Ansatz:

input("a = ")
input("b = ")

print(a+b)

Hat jemand einen Lösungsvorschlag für mich!

Freue mich auf jede Antwort!

LG
BlackJack

@avatarble: Arbeite ein Grundlagen-Tutorial durch und lerne wie die `input()`-Funktion arbeitet. Und dann definiere `a` (und `b`) bevor Du versuchst damit zu rechnen. Ausserdem wirst Du noch schauen müssen wie man Zeichenketten in Zahlen umwandelt (wenn das Python 3 sein soll).
avatarble
User
Beiträge: 3
Registriert: Samstag 6. April 2013, 20:27

Danke, schon einmal für deine Antwort!

Ein ganzes Tutorial durchzuarbeiten halte ich nicht für wirklich sinnvoll, da ich nur nicht mit der Einführung der Variabeln vertraut bin! Wo müsste ich suchen, wenn ich für die Einführung von Variabeln Hilfe benötige!

Nochmals dankeschön, dass Sie sich die Zeit für einen Anfänger wie mich nehmen! :)
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Der Input Befehl ist eigentlich relativ simpel.

Code: Alles auswählen

a = input("Gib deinen Namen ein: ")
print (a)
Dieser Code speichert deine Eingabe d.h. dein Name in einer Variable und gibt sie aus.

Wenn du das nun mit einer Zahl, in der Informatik Integer genannt, machen möchtest, sieht das wie folgt aus:

Code: Alles auswählen

a = int(input("Gib dein Alter ein: ")
print(a)
Dieser Code speichert dein Alter in der Variable a und gibt sie aus.
Das int vor input steht für integer, was für eine ganze Zahl steht.

Ich hoffe ich konnte helfen, auch wenn ich noch ein Anfänger bin :D
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

avatarble hat geschrieben:input("a = ")
"a = " ist ein String für die Ausgabe. Er hat keinerlei Bedeutung für das Binden von Werten an Namen. Entscheidend ist, dass du den Rückgabewert von input brauchst wie der Dokumentation leicht zu entnehmen ist.

Der Rückgabewert ist dann ein String dessen Wert du noch mit int (oder float) in eine Zahl überführen musst um damit rechnen zu können.

Solltest du Python 2.x verwenden, dann ersetze bitte input durch raw_input. input gibt es zwar unter Python 2 auch, macht dort aber etwas anderes und reißt dir riesige Sicherheitslücken ins Programm.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

@avatarble)

Ich würde mal ganz klar sagen, dass Google Suche oft hilft. Jedoch hilft dies nur für diese "leichten" Probleme, wo ihr später dann schwerere Probleme beheben wollt, wird diese Methode nicht mehr zu Verfügung sein. Daher rate ich Dir unbedingt Online ein Tutorial zu lesen bzw. (nimm es nicht böse) im Unterricht besser aufpassen. Variablen sind mehr als Grundwissen, das wichtigste was es in der Programmierung gibt.

Ich will Dir aber mal dennoch helfen:

- Öffne Python Shell und gebe ein:

Code: Alles auswählen

lehrer = "Herr Wolf"
- gebe mit Hilfe von print den Wert des Variablennamens aus:

Code: Alles auswählen

print lehrer
Welche Beobachtung machst Du? Im Python Shell siehst Du die Ausgabe Herr Wolf. Warum ist das so? Du hast den Wert "Herr Wolf" dem Etikett (gleichgesetzt mit dem Namen bzw. Variablenname) zugewiesen. Mit dem Gleichheitszeichen sorgst Du dafür, dass Python etwas zuweist. (oder gleichsetzt). Eine Variable speichert einem Wert in einem Speicherabschnitt im Computer. Das heisst jetzt, dass irgendwo im Speicher Deines Computers die Buchstaben "Herr Wolf" liegen.

Um es kurz auszudrücken:
- Du hast die Buchstaben "Herr Wolf" dem Etikett lehrer zugewiesen
- Dabei bedeutet das Gleichheitszeichen, dass Du Python etwas zuweist
- Und das heisst jetzt, dass die Buchstaben "Herr Wolf" irgendwo im Speicher liegen

Um es genauer "Buchstaben" genauer zu definieren:

Sieh Dir nochmal den Code kurz an:

Code: Alles auswählen

lehrer = "Herr Wolf"
In Python gibt es verschiedene Datentypen. "" bedeutet , dass es ein String ist. Also hat der Wert des Etiketts lehrer den Typ "string". string = Zeichenkette (http://de.wikipedia.org/wiki/Zeichenkette). Es gibt auch noch integer (Zahlen) floats (Fließkommazahlen) und noch viele weitere. Da empfehle ich Dir nur zu lesen.

Also: Dem Etiketten lehrer wird der Wert "Herr Wolf" des Typs string zugewiesen.

Nun zu Deinem Problem:

In Deinem Programm hast Du die Inputs nicht in Variablen gespeichert. Das ist das erste, dass mir auffällt. Dann - welche Python Version benutzt Du? Falls Du Python 2.x verwendest, solltest Du , wie /me sagte, raw_input verwenden.

Code: Alles auswählen

a = raw_input("a =")
b = raw_input("b =")

print a + b
Teste den Code unter "Run Module". Hilfe! Es tut nicht , was Du machen willst! Warum? Mit raw_input willst Du erreichen, dass der User was eingibt. Diese Eingabe speichert Python jedoch wieder in Strings. D.h. für Dich, dass es Zeichenketten nicht einfach mal so wie Zahlen behandeln kann.

Schau Dir mal das an:

Code: Alles auswählen

a = "Hello World"
b = "Ich grueße Dich!"

print a + b
In diesem Beispiel weise ich den String "Hello World" dem Namen (Etikett) a zu und den String "Ich grueße Dich" weise ich dem Namen(Etikett) b zu. Nun will ich diese Strings "addieren". Zwei Strings zu addieren geht nicht. Ausgabe ist: "Hello WorldIch grueße Dich!". Merkst Du was passiert ist?

Also wie wir festgestellt haben sind die Typen beider Etiketten a und b allesamt strings. Ich müsste sie irgendwie in Zahlen "umwandeln". Das kannst Du mit der Funktion int() erzielen. Sie konvertiert einen String (der eine Zahl enthalten muss) in eine Zahl!

Schau Dir mal dieses Beispiel an:

Code: Alles auswählen

a = "7"
b = "8"
print int(a) + int(b)
So nun hast Du die Etiketten a und b des Typen string mit Hilfe der int() Funktion in eine Zahl umgewandelt und es funktioniert!

Jetzt lautet Deine Aufgabe, wie Du das für Dein Problem lösen könntest ;)

Achtung: Die Codes sind für Python 2.x , nicht für python 3.x

Und im Erklären bin ich leider nicht der Beste, habe es aber versucht :)
avatarble
User
Beiträge: 3
Registriert: Samstag 6. April 2013, 20:27

Hallo! :D

Ich bedanke mich vielmals für all eure Hilfe! Ich muss euch wirklich für euere Hilfsbereitschaft loben! Selten habe ich es erlebt, dass ich Leute, wie euch gefunden habe, die so hilfreich sind!

Dankeschön nochmals für eure großartige Hilfe! :mrgreen:

P.S.: Ich werde mir jetzt dann einmal ein Tutorial reinziehen! :)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

avatarble hat geschrieben:Selten habe ich es erlebt, dass ich Leute, wie euch gefunden habe, die so hilfreich sind!
'tschuldigung, kommt nicht wieder vor. :mrgreen:
Antworten