Standardeingabe mit Zeitlimit

Sie haben wahrscheinlich ein Programm geschrieben und wollten einmal eine Standardeingabe mit einem Zeitlimit erstellen. Übrigens nicht. Ich könnte es leicht mit Go realisieren, also werde ich es aufschreiben. Es ist eines Tages für mich.

Methode

Die Methode ist sehr einfach. Erstellen Sie einfach eine Unterroutine, die Standardeingaben empfängt und den Eingabetext auf dem Kanal empfängt.

in := make(chan string, 1)
go func() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Scan()
	in <- sc.Text()
}()

Dies kann leicht erreicht werden, indem der obige Kanal mit "time.NewTimer" oder "time.NewTicker" kombiniert wird.

timer := time.NewTimer(time.Second * 10)
select {
  case text := <-in:
    //Verarbeitung mit Eingabe
  case <-timer.C:
    //Verarbeitung zum Zeitpunkt des Timeouts
}

Entsprechend angefertigte Probe

Dies ist ein Beispiel, das mit der obigen Methode hergestellt wurde. Sie können ein Gefühl dafür bekommen, indem Sie es lokal ausführen.

package main

import (
	"bufio"
	"fmt"
	"os"
	"time"
)

func main() {
	in := make(chan string, 1)
	go func() {
		sc := bufio.NewScanner(os.Stdin)
		sc.Scan()
		in <- sc.Text()
	}()

	ticker := time.NewTicker(time.Second)
	defer ticker.Stop()
	fmt.Println("Das Zeitlimit beträgt 5 Sekunden. Geben Sie den Autor des Jungen ein")
	for i := 0; i < 5; i++ {
		select {
		case text := <-in:
			if text == "Natsume Soseki" {
				fmt.Printf("Es ist erstaunlich, eintreten zu können\n")
			} else {
				fmt.Printf("ich liege falsch\n%s\n", text)
			}
			i = 5
		case <-ticker.C:
			switch i {
			case 0:
				fmt.Println("Es gibt ein Zeitlimit, also sei schnell")
			case 1:
				fmt.Println("schnell schnell")
			case 2:
				fmt.Println("Glaubst du, es ist im Weg?")
			case 3:
				fmt.Println("Ich stimme mit Ihnen ein")
			case 4:
				fmt.Println("Spiel ist aus(Lol)")
			}
		}
	}
}

Festziehen

Es war einfach, aber wann werden Sie es verwenden?

Recommended Posts

Standardeingabe mit Zeitlimit
Matrixdarstellung mit Python-Standardeingabe
[Python] Standardeingabe
Zusammenfassung der Standardeingaben
Japanische Eingabe mit Pyautogui
[Python] Informationen zur Standardeingabe
Zusammenfassung der Standardeingabe / -ausgabe
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Schreiben Sie die Standardeingabe in den Code
[Python3] Standardeingabe [Cheet Sheet]
Testen Sie die Standardausgabe mit Pytest
Teil 1 des Empfangs von Standardeingaben
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Python3-Standardeingabe (Competition Pro)
Standardeingabe / Zusammenfassung / Python, Ruby
Empfangen von Standardeingabetipps @ python
Messung der Ausführungszeit mit Python With
[Für AtCoder] Standardeingabememo
Zeitsynchronisation (Windows) mit Python
Python3-Standardeingabe für wettbewerbsfähige Programmierung
Einfache Vorhersage von Zeitreihen mit Prophet
Erhalten Sie negative Reaktionszeit mit psychopy.event.getKeys ()
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Beachten Sie den Python-Codierungsstandard PEP8
RPC mit Standard-Python 3-Modulen
Erste Schritte mit der CPU-Diebstahlzeit
Speichern von CSV-Daten in Amazon Kinesis Streams mit Standardeingabe