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.
Hallu Leute,
ich habe folgendes Problem.
Ich habe nach längerer Zeit wieder mit Python herum gespielt und wollte ein Programm schreiben was den Wert deines Names
sagt.
a = 10
b = 20
c = 30
d = 40
e = 50
f = 60
g = 70
h = 80
i = 90
j = 100
k = 110
l = 120
m = 130
n = 140
o = 150
p = 160
q = 170
r = 180
s = 190
t = 200
u = 210
v = 220
w = 230
x = 240
y = 250
z = 260
print "Wie viel ist dein Name wert?"
print "Gib deine ersten 3 Buchstaben ein!"
first = raw_input("Dein erster Buchstabe(klein: ")
second = raw_input("Dein zweiter Buchstabe(klein: ")
third = raw_input("Dein dritter Buchstabe(klein: ")
print "Dein Name ist", first + second + third, "Euro wert!"
print "Danke schoen das sie das Programm benutzt haben!"
Doch es wird immer nur die Buchstaben wieder gegeben nicht die Zahlen :I
Ich hoffe auf eine schnelle Rückantwort !!
Danke,
Mit freundlichen Grüßen
Luca-Python
Zuletzt geändert von Anonymous am Freitag 13. September 2013, 20:45, insgesamt 2-mal geändert.
Grund:Quelltext in Python-Code-Tags gesetzt.
Ich bin neu, naund?!
Ich kann noch nicht soviel, naund?!
Ich lerne und es macht mir Spaß!
@Luca-Python: Zeichenketten die der Benutzer eingibt sind nun mal genau das: Zeichenketten. Es wäre sehr ungünstig wenn Python eine Zeichenkette nur solange wie eine Zeichenkette behandelt wie es keinen Namen im aktuellen Namensraum gibt der wie der Inhalt der Zeichenkette heisst. Das gäbe ein ganz schönes Chaos.
Du möchtest die Buchstaben zu den Werten nicht durch Namen zuordnen, sondern mit einem Wörterbuch (`dict`) das Zeichenketten auf Werte abbildet. Oder noch besser: Statt alle 26 Buchstaben und Werte im Programm einzutippen, kann man den Wert auch einfach durch eine Formel aus dem Buchstaben berechnen lassen. Schau Dir mal die `ord()`-Funktion an, und die Gesetzmässigkeit hinter Deiner Zuordnung.
Dann könnte man eine Funktion schreiben, die einen Buchstaben in einen Wert umwandelt. Mit `map()` und `sum()` lässt sich dann sehr einfach der Wert einer Zeichenkette berechnen. Und dann kann man den Benutzer auch den Namen komplett in einer Eingabe vornehmen lassen.
Ergänzend zu cofi: Und ``str.lower()`` - damit kannst Du die Benutzereingabe in Kleinbuchstaben wandeln und musst Dir so nicht merken, dass "a" und "A" auf 10 abgebildet werden
def get_value_word(word):
return sum(10 * (ord(char) - ord('a') + 1) for char in word.lower())
name = input('Enter your name: ')
print('The value for {} is {}'.format(name, get_value_word(name[:3])))
Die Lösung mittels ``itertools.count`` ist ein wenig kompakter und etwas eingänglicher (wenn man Funktionale Programmierung gewöhnt ist), dein Ansatz kann aber genau so gut eingesetzt werden.