/ / Python: Geben Sie die Antwort für raw_input [duplizieren] - python im Voraus an

Python: Geben Sie die Antwort für raw_input [duplizieren] - python im Voraus an

Ist es möglich, die Antwort auf eine Reihe von raw_input Fragen innerhalb eines Programms vorzugeben?

wie in, wenn irgendwo in meinem Programm habe ich:

response = raw_input("Enter something: ")

Kann ich vor Beginn des Programms angeben, dass ich "etwas" in die Befehlszeile eingeben möchte?

Antworten:

0 für die Antwort № 1

Um den Standard zu implementieren, wenn Sie den Benutzer auffordern, überprüfen Sie einfach, ob die Antwort leer ist - und legen Sie Ihren Standard fest. Dies wird typischerweise so angezeigt:

value = raw_input("Would you like to continue? [Y/n]: ")

Der Großbuchstabe gibt den Standardwert an, wenn kein Wert festgelegt ist, und der n ist der optionale Wert, den der Benutzer eingeben kann:

value = raw_input("Would you like to continue? [Y/n]: ")

# Set the default to "Y"
if not len(value.strip()):
result = "Y"
else:
result = value

0 für die Antwort № 2

Wie ich es verstehe, möchten Sie Ihr Programm so etwas sofort zeigen:

Gib etwas ein: etwas _

(Wo _ ist die Muschel caret)

Wenn du Enter drückst, raw_input würde die Zeichenfolge "etwas" zurückgeben - oder Sie können die Rücktaste drücken und die vorgefüllte Eingabe bearbeiten.


Die einfache Antwort ist Nein, du kannst das nicht machen. Das Problem ist, dass Python die Eingabe an diesem Punkt nicht behandelt - es ist Ihre Shell (bash, cmd, etc.). Erst nachdem Sie etwas eingegeben haben und Enter drücken, wird diese Eingabe an Python "zurückgegeben".

Eine Bibliothek wie readline erlaubt etwas, was Sie wollen, aber funktioniert nur mit Versionen von Python, die gegen readline (normalerweise Linux) verlinkt sind. Sehen diese Antwort für mehr.


Eine Alternative, die von vielen Programmen verwendet wird, besteht darin, nach der Eingabeaufforderung einen Standardwert anzuzeigen, der angenommen wird, wenn keine Eingabe erfolgt. Diese Funktion sollte dieses Verhalten nachahmen:

def raw_input_default(prompt, default):
result = raw_input("{0} [{1}] ".format(prompt, default))
if result == "":
result = default
return result

Verwendung:

>>> print raw_input_default("Enter name:", "Joe")
Enter name: [Joe] John
John
>>> print raw_input_default("Enter name:", "Joe")
Enter name: [Joe]
Joe