Empfangen von Standardeingabetipps @ python

Eingaben empfangen

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'

Suchen Sie die Standardeingabe, bis der richtige Wert erreicht ist

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'

Gibt eine Fehlermeldung zurück, bis Sie 6 Ziffern eingeben und zurückhören

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.

Fragen Sie ja / nein

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

Verwenden Sie ein Wörterbuch zur Auswahl

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

Wie in

while True:
    inp = input('[Y]es/[N]o? >> ').lower()
    if inp in dic:
        inp = dic[inp]
        break
    print('Error! Input again.')

So bestimmen Sie, ob das erste Zeichen der eingegebenen Zeichenfolge "y'or'n" ist.

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.')

So geben Sie einen Nicht-Bool-Wert zurück und wiederholen die Schleife, wenn ein Wert eingegeben wird, der nicht im Wörterbuch enthalten ist

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.')

Empfangen Sie mehrere Standardeingänge

Ich möchte die angegebene Anzahl von Standardeingaben empfangen und in der Liste speichern

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']

Ich möchte mehrere Standardeingaben in einer Zeile empfangen und in einer Liste speichern

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']

Ich möchte eine beliebige Nummer von der Standardeingabe erhalten und in der Liste speichern

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']

Referenz

  1. stack overflow : Get a Try statement to loop around until correct value obtained
  2. Tipps, die Sie beim Programmieren in Python kennen sollten (Eingabe / Ausgabe)
  3. LEBEN MIT PYTHON: Python-Tipps: Ich möchte eine Zeichenkette aus der Standardeingabe erhalten

Recommended Posts

Empfangen von Standardeingabetipps @ python
[Python] Standardeingabe
[Python] Informationen zur Standardeingabe
[Python3] Standardeingabe [Cheet Sheet]
Teil 1 des Empfangs von Standardeingaben
Python3-Standardeingabe (Competition Pro)
Standardeingabe / Zusammenfassung / Python, Ruby
Python-Tipps
Was ist besser, wenn Pythons Standardeingabe input () oder sys.stdin empfängt?
Python-Tipps
Python-Tipps
Python3-Standardeingabe für wettbewerbsfähige Programmierung
Matrixdarstellung mit Python-Standardeingabe
Tipps zur Eingabe / Ausgabe von Python-Dateien
Python Paiza - Verschiedene Fähigkeitsüberprüfungen und Standardeingaben
Python Conda Tipps
Tipps zum Python-Debuggen
Python3-Standardeingabe habe ich versucht zusammenzufassen
Python-Klick-Tipps
Unerwartet (?) Python Bean Wissen
Zusammenfassung der Standardeingaben
Atcoder-Standardeingabesatz für Anfänger (Python)
[Python] Fügen Sie der Standardeingabedatei einen Kommentar hinzu
Python: Entpacken Sie die Standardeingabe mit zipfile
Python-Tipps (mein Memo)
Python-Eingabe und Ausgabe
Python-Audioeingabe / -ausgabe
Tipps zur Installation von Python PyTorch
Tastenanschlag in Python
Zusammenfassung der Standardeingabe / -ausgabe
Lassen Sie Python den von der Standardeingabe eingegebenen JSON analysieren
[Python] Ändern Sie die Standardeingabe von der Tastatur in eine Textdatei
Tipps zum Nachdenken über np.newaxis in Python / Numpy
Cisco Memorandum _ Eingabekonfiguration mit Python
Python 3.4 oder höher Standard Pip
Schreiben Sie die Standardeingabe in den Code
Hinweise zur Verwendung des Python-Standards unittest
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Python-Eingabehinweis in AtCoder
Transmutationsmatrix im Python-Standard
[Tipps] Behandle Athena mit Python
[Python + Selen] Tipps zum Scraping
Google Drive API-Tipps (Python)
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
[Für AtCoder] Standardeingabememo
Python Standard virtuelle Umgebung venv
[Python] Verwendung von input ()
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
Installieren Sie Python 3.8 unter Ubuntu 18.04 (Betriebssystemstandard)
Installieren Sie Python 3.8 unter Ubuntu 20.04 (Betriebssystemstandard)
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
[Python] Passen Sie den Standard für die Farbkarte an
Machen Sie die Standardausgabe in Python nicht blockierend
Beachten Sie den Python-Codierungsstandard PEP8
[TouchDesigner] Tipps für die Anweisung von Python
Tipps zum Aufrufen von Python von C.
Mal sehen, wie man Eingaben in Python verwendet