Studie, Zahlenschätzspiel aus Standardeingabe!
test.py
#! F:/Python/python.exe
# -*- coding: utf-8 -*-
import random
import re
#Anzahl an Ziffern
SCALE = 4
#Gibt ein zufälliges, nicht überlappendes Array von Zahlen zurück
def GetRandomNumbers(place):
seed = range(0, 10)
random.shuffle(seed)
result = ""
for i in range(0, place):
result = result + str(seed.pop())
return result
#Vergleichen Sie Antworten mit Antworten
def CompareSolAns(solution, answer):
h = 0
b = 0
for sIndex, sValue in enumerate(answer):
for aIndex, aValue in enumerate(solution):
if sValue == aValue :
if sIndex == aIndex :
h += 1
else :
b += 1
return {"H":h, "B":b, "A":answer}
#Antwort generieren
solution = GetRandomNumbers(SCALE)
#Schleife zur richtigen Antwort
count = 0
history = []
while True :
#Antwort Eingabe Anzahl
count += 1
#Antwort eingeben
inputStr = "Turn "+str(count)+", Input Number:"
inputStr = inputStr.decode('utf-8')
ans = raw_input(inputStr)
#Überprüfen Sie die Eingabe mit einem regulären Ausdruck
checkMatch = re.match(r'^\d{'+str(SCALE)+'}$', ans)
#Wenn die Eingabe nicht dem regulären Ausdruck entspricht, beginnen Sie von vorne
if checkMatch is None :
print u"Bad Input"
continue
#Vergleichen Sie die Antwort mit der richtigen Antwort
result = CompareSolAns(solution, ans)
#Wenn die Antwort richtig ist, beenden Sie
if result["H"] == SCALE:
break
#Wenn die Antwort falsch ist, werden die Ergebnisse gestapelt und angezeigt sowie eine Schleife
history.append(result)
#Ergebnisse anzeigen
print('------------------------------')
for i, val in enumerate(history) :
print "Turn "+str(i+1)+"\t"+val["A"]+"\t"+str(val["H"])+"H\t"+str(val["B"])+"B\t"
print('------------------------------')
print unicode("****** Exactly! ****** "+str(count)+" turn you are seikai")
Recommended Posts