Verwenden Sie die Eingabefunktion, um einem Objekt Eingaben von der Konsole zuzuweisen. Übrigens ist die Funktion raw_input in Python3 veraltet.
inp=input('Gib etwas ein>')
# [In]#Gib etwas ein>hogehoge
# [In]# inp
# [Out]# 'hogehoge'
Wenn der Wunsch besteht, "in diesem Format zu tippen!", Eine Technik, die sich bis zur Eingabe dieser Form wiederholt. Schleife unendlich mit "while True:" und frage nach dem Wert von "inp", bis "hoge" eingegeben wird. Brechen Sie die Schleife, wenn Sie eintreten.
while True:
inp=input('Hoge betreten>>')
if inp=='hoge':break
# [Out]#Hoge betreten>>foo
# [Out]#Hoge betreten>>hogehoge
# [Out]#Hoge betreten>>hoge
# [In]# inp
# [Out]# 'hoge'
Es ist sogar noch besser, wenn Sie eine Fehlermeldung erhalten, dass Sie sich irren, wenn Sie einen Fehler machen. Verwenden Sie die Anweisung "try-Except" zusätzlich zu "while True", um im Fehlerfall zur "Except" zu springen.
while True:
try:
inp=input('Geben Sie eine 6-stellige Nummer ein>> ')
if inp.isdigit() and len(inp)==6:
break
except:
pass
print('In der Eingangsstadt')
# [Out] #Geben Sie eine 6-stellige Nummer ein>> 3
# [Out]#In der Eingangsstadt
# [Out] #Geben Sie eine 6-stellige Nummer ein>> 45
# [Out]#In der Eingangsstadt
# [Out] #Geben Sie eine 6-stellige Nummer ein>> 666666
# [In] # inp
# [Out]# 666666
Endlosschleife mit while True:
Verwenden Sie die Funktion isdigit, um festzustellen, ob der Inhalt der Zeichenfolge eine Zahl ist
Überprüfen Sie die Länge der Zeichenfolge mit der Funktion len
Wenn Sie einen falschen Wert eingeben, wird die try-Anweisung weggelassen und eine Fehlermeldung ausgegeben, die zum Anfang der while-Klausel zurückkehrt.
Das gebräuchliche Akronym "Ja" "y" wird als "Wahr" und das Akronym "Nein" als "Falsch" eingegeben. Durch Eingabe von "y" wird der Bool-Wert "True" eingegeben, und durch Eingabe von "n" wird der Bool-Wert "False" in imp eingegeben.
~~inp=True if input('y/n? >> ')=='y' else False~~ Vereinfacht, weil es sich um ein Orokananoto handelt, das den Wahrheitswert durch den Wahrheitswert ersetzt
inp=input('y/n? >> ')=='y'
# In# inp=True if input('y/n? >> ')=='y' else False
y/n? >> y
# In# inp
# Out# True
# In# inp=True if input('y/n? >> ')=='y' else False
y/n? >> n
# In# inp
# Out# False
Da es in einer Zeile geschrieben werden kann, ist es praktisch, wenn Sie es als Test unter der Bedingung schreiben, dass "Ich gebe entweder 'y'or'n' unbedingt ein". Aber es ist einfach, aber nicht genug. Gibt "True" zurück, wenn "y" eingegeben wird, aber "False", wenn "yes" eingegeben wird. Selbst wenn eine andere Zeichenkette als "y" und "n" eingegeben wird, wird "False" zurückgegeben.
# In# inp=True if input('y/n? >> ')=='y' else False
y/n? >> yes
# In# inp
# Out# False
# In# inp=True if input('y/n? >> ')=='y' else False
y/n? >> t
# In# inp
# Out# False
Bereiten Sie daher ein Wörterbuch vor, das 'y', 'yes', 'n' und 'no' enthält. Das Wörterbuch kann wie eine C-Sprache-Switch-Case-Anweisung verwendet werden.
dic={'y':True,'yes':True,'n':False,'no':False}
dic[input('[Y]es/[N]o? >> ').lower()]
# [In]# dic[input('[Y]es/[N]o? >> ').lower()]
# [Out]# [Y]es/[N]o? >> y
# [Out]# True
# [In]# dic[input('[Y]es/[N]o? >> ').lower()]
# [Out]# [Y]es/[N]o? >> NO
# [Out]# False
# [In]# dic[input('[Y]es/[N]o? >> ').lower()]
# [Out]# [Y]es/[N]o? >> ye
# [Out]# ---------------------------------------------------------------------------
# KeyError Traceback (most recent call last)
# <ipython-input-34-67f9611165bf> in <module>()
# 1 dic={'y':True,'yes':True,'n':False,'no':False}
# ----> 2 dic[input('[Y]es/[N]o? >> ').lower()]
#
# KeyError: 'ye'
Wenn Sie die untere Funktion beiläufig verwenden, um die Eingabe alle niedriger zu machen, werden 'JA' und 'Ja' als synonym betrachtet. Dies ist noch nicht genug, und wenn Sie "Ja" eingeben, wo Sie "Ja" eingeben möchten, können Sie "KeyError" eingeben
Also verwenden wir die Zustände "while True:" und "try".
dic={'y':True,'yes':True,'n':False,'no':False}
while True:
try:
inp=dic[input('[Y]es/[N]o? >> ').lower()]
break
except:
pass
print('Error! Input again.')
# [Out]# [Y]es/[N]o? >> ye
# [Out]# Error! Input again.
# [Out]# [Y]es/[N]o? >> yes
# [In]# inp
# [Out]# True
Die Methode, auf die shiracamus unten hingewiesen hat
while True:
inp = input('[Y]es/[N]o? >> ').lower()
if inp in dic:
inp = dic[inp]
break
print('Error! Input again.')
while True:
inp = input('[Y]es/[N]o? >> ').lower()
if inp in ('y', 'yes', 'n', 'no'):
inp = inp.startswith('y') # inp[0] == 'y'Synonym zu
# string.startwith sucht die erste Zeichenfolge
break
print('Error! Input again.')
while True:
inp = dic.get(input('[Y]es/[N]o? >> ').lower(), -1) #Standardwert von inp-1(← Alles ist in Ordnung, solange es kein Bool-Wert ist)Behalten
if type(inp) is bool:
break
print('Error! Input again.')
Wenn Sie dreimal hintereinander nachfragen und es in einer Liste speichern möchten, können Sie die In-List-Notation verwenden.
[input() for _ in range(3)]
# [In]# a
# [In]# d
# [In]# v
# [Out]#: ['a', 'd', 'v']
Manchmal möchten Sie mehrere Eingaben in einer Zeile akzeptieren. Fügen Sie in einem solchen Fall nach der Eingabefunktion eine Teilungsfunktion hinzu, um sie zu teilen. Das Standardargument der Split-Funktion ist ein Leerzeichen, daher wird es in der durch Leerzeichen getrennten Liste gespeichert. Wenn Sie es durch ein anderes Zeichen trennen möchten, fügen Sie dieses Zeichen in das Argument der Teilungsfunktion ein. Wenn Sie sie beispielsweise durch Kommas trennen möchten, gehen Sie wie folgt vor.
a=input('Geben Sie etwas durch Kommas getrennt ein>> ').split(',')
# [In] a=input('Geben Sie etwas durch Kommas getrennt ein>> ').split(',')
# [Out]Geben Sie etwas in die Komma-Station ein>> 2016,2017
# [In] a
# [Out] ['2016', '2017']
Eine Technik, die Standardeingaben aufnimmt und in einer Liste speichert, bis der Befehl suspend (Strg + Z in Fenstern) gedrückt wird. Die Reihe "sys.stdin.readline" ist eine Reihe von Funktionen zum Erfassen von Standardeingaben für einen breiteren Bereich von Zwecken als "Eingaben".
Sie können es verwenden, indem Sie die sys
-Bibliothek importieren.
readline ()
ist eine Funktion, um eine Zeile von der Standardeingabe zu erhalten.
Im Gegensatz zu "input ()" löscht die Eingabe automatisch das Zeilenvorschubzeichen, während "readline ()" den Inhalt der Standardeingabe unverändert erhält.
Verwenden Sie die Methode strip ()
, um Zeilenumbrüche zu entfernen.
import sys
inp=sys.stdin.readline().strip()
# [In]# inp=sys.stdin.readline()
# [In]# pp
# [In]# inp
# [Out]# 'pp\n'
# [In]# inp=sys.stdin.readline().strip()
# [In]# inp
# [Out]# 'pp'
readlines ist eine Funktion zum Abrufen mehrerer Zeilen von der Standardeingabe.
Der Rückgabewert ist eine Liste, und die eingegebene Zeichenfolge wird zeilenweise als Element gespeichert.
Auch hier werden Zeilenvorschubzeichen nicht automatisch gelöscht. Verwenden Sie daher sprit ()
.
import sys
[i.strip() for i in sys.stdin.readlines()]
# [In]# ho
# [In]# hsop
# [In]# hpoge
# [In]# ^Z
# [Out]# ['ho', 'hsop', 'hpoge']
Recommended Posts