Ich glaube, ich verstehe, was Sie hier wollen. Sie möchten program
aufrufen können, so dass ord
für jedes Zeichen in Ihrer Zeichenfolge ausgeführt wird, aber Sie auch (chr
) für jedes Zeichen in Ihrer Zeichenfolge ausführen möchten, ohne eine ganz neue Funktion namens program_chr
zu erstellen.
Glücklicherweise unterstützt Python first-class functions, also ist dies definitiv möglich. Sie können eine Funktion einfach als Argument an program
übergeben, genauso einfach wie Sie eine Zeichenfolge übergeben.
def program (my_str, my_fn):
i = 0
message = []
while i<len(my_str):
message.append(my_fn(my_str[i]))
i += 1
print(message)
program("my_string", ord)
Diese gibt [109, 121, 95, 115, 116, 114, 105, 110, 103]
, ohne ord
jemals in program
erscheinen!
Sie können jede Funktion für diese, diejenigen, einschließlich Sie selbst definieren:
def silly_fn (char):
return 12
program("my_string", silly_fn)
Diese gibt [12, 12, 12, 12, 12, 12, 12, 12, 12]
.
Relevante Anmerkung: änderte ich den Parameter str
zu my_str
, weil str
eine eingebaute Funktion ist, und es ist nie gut Praxis diejenigen ohne Grund neu zu definieren!
Was das Programm tun am Ende shoukd? –
Wie Sie vielleicht anhand der 3 sehr unterschiedlichen Antworten feststellen können, ist Ihre Frage, wie geschrieben, ziemlich unklar. Erwäge es, es zu bearbeiten, um es offensichtlicher zu machen, genau nach was du suchst (ein guter Anfang ist, Beispieleingabe und gewünschte Ausgabe einzuschließen). – KernelPanic