Ich habe das schon mal gemacht.
[Neuerfindung der Räder] Von Menschen betriebene Turniersorte [Python]
Es hat sicherlich Spaß gemacht, den Algorithmus zu überlegen und zu verifizieren, aber es wurde so lächerlich, dass ich eine clevere Möglichkeit einbinden werde, einfach die Sortieraufruffunktion zu ändern.
__ Verweise: __ Entertainment-Lab: Implementierung der ursprünglichen Sortierung in Python:
Der wesentliche Sortierteil bleibt der echten Python-Sortierung überlassen, daher ist er natürlich sehr kurz.
ranking_sort.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# written by ssh0, December 2014.
description = """
Ranking-Schnittstelle zur Selbstanalyse.
In dieser Anwendung
Erstellen Sie eine Vergleichsfrage basierend auf der angegebenen Liste
Das Ranking ist abgeschlossen, wenn der Benutzer darauf antwortet.
"""
import argparse
import sys
def human_cmp(a, b):
print '\nwhich ones do you like?'
print ' [j]: %s, [k]: %s. [=]:eq' % (a, b)
key_input = raw_input(">>> ")
if key_input == 'j':
ans = -1
elif key_input == 'k':
ans = 1
elif key_input == '=':
ans = 0
else:
raise ValueError('please select by "j", "k" or "=".')
return ans
if __name__ == '__main__':
parse = argparse.ArgumentParser(description=description)
parse.add_argument('-l', '--list',
dest='objects',
nargs='*',
type=str,
help='list of some objects',
default=argparse.SUPPRESS
)
args = parse.parse_args()
data = args.objects
data.sort(cmp=human_cmp)
print data
Die an die Sortierfunktion übergebene Funktion ist human_cmp. Seien Sie nur vorsichtig mit dem von der Funktion zurückgegebenen Wert. Vergleichen Sie die beiden Argumente und geben Sie einen negativen Wert zurück, wenn das erste Argument kleiner als das zweite Argument ist, 0, wenn sie gleich sind, und einen positiven Wert, wenn sie größer sind.
➤ python ranking_sort.py -l 3 1 4 8 5 2 6 7
which ones do you like?
[j]: 1, [k]: 3. [=]:eq
>>> j
which ones do you like?
[j]: 4, [k]: 1. [=]:eq
>>> k
which ones do you like?
[j]: 4, [k]: 3. [=]:eq
>>> k
which ones do you like?
[j]: 8, [k]: 3. [=]:eq
>>> k
which ones do you like?
[j]: 8, [k]: 4. [=]:eq
>>> k
which ones do you like?
[j]: 5, [k]: 4. [=]:eq
>>> k
which ones do you like?
[j]: 5, [k]: 8. [=]:eq
>>> j
which ones do you like?
[j]: 2, [k]: 4. [=]:eq
>>> j
which ones do you like?
[j]: 2, [k]: 3. [=]:eq
>>> j
which ones do you like?
[j]: 2, [k]: 1. [=]:eq
>>> k
which ones do you like?
[j]: 6, [k]: 4. [=]:eq
>>> k
which ones do you like?
[j]: 6, [k]: 8. [=]:eq
>>> j
which ones do you like?
[j]: 6, [k]: 5. [=]:eq
>>> k
which ones do you like?
[j]: 7, [k]: 4. [=]:eq
>>> k
which ones do you like?
[j]: 7, [k]: 6. [=]:eq
>>> k
which ones do you like?
[j]: 7, [k]: 8. [=]:eq
>>> j
['1', '2', '3', '4', '5', '6', '7', '8']
Dies ist menschliche Kraft, aber natürlich können Sie eine Funktion selbst als Referenzquelle definieren.
Das letzte Mal war ... Es war gut, weil es Spaß gemacht hat. Ich habe keine andere Wahl, als es zu sagen ... Oder besser gesagt, es war nicht nötig, es zu schreiben, als ich es bemerkte.
Recommended Posts