Du befindest dich hier: FSI Informatik » Fachschaftsinitiative Informatik » Organisation der FSI » Regelmäßiges » fsien_flotter_dreier » steckbriefe_data.py   (Übersicht)

#!/usr/bin/env python3

import sys, random, csv

SIMPLE_PROPERTIES = {

  'alter': 'Alter 20 bis 25',
  'schuhgroesse': ('Schuhgröße', ['36 bis 39', '41 bis 44']),
  'pi': 'Kann die ersten fünf Ziffern von Pi auswendig',
  'haarfarbe': ('Haarfarbe', ['blond', 'braun']),
  'groesse': 'Körpergröße über 1,80 m',
  'augenfarbe': ('Augenfarbe', ['blau', 'braun']),
  'wohnort': 'Wohnt in Erlangen'

} SIMPLE_KEYS = list(SIMPLE_PROPERTIES.keys())

MEDIUM_PROPERTIES = {

  'alter': 'Alter über 25',
  'augenfarbe': 'Augenfarbe grün',
  'kleidung': ('Trägt heute', ['Rock oder Kleid', 'ein Hemd']),
  'sprache': ('Spricht', ['spanisch', 'französisch']),
  'fakultaet': ('Studiert an der', ['Technischen Fakultät', 'Naturwissenschaftl. Fakultät',
                                    'Philiosophischen Fakultät']),
  'auto': 'Besitzt ein Auto'

} MEDIUM_KEYS = list(MEDIUM_PROPERTIES.keys())

HARD_PROPERTIES = {

  'vorname': ('Anfangsbuchstabe des Vornamens ist', ['A', 'C', 'F', 'J', 'L', 'M', 'S', 'T']),
  'linkshänder': 'Linkshänder/in',
  'sternzeichen': ('Sternzeichen', ['Widder', 'Stier', 'Zwillinge', 'Krebs', 'Löwe', 'Jungfrau', 'Waage',
                                    'Skorpion', 'Schütze', 'Steinbock', 'Wassermann', 'Fische']),
  'alter': 'Alter unter 20',
  'haarfarbe': ('Haarfarbe', ['rot', 'schwarz']),
  'sprache': ('Spricht', ['türkisch', 'russisch', 'italienisch']),
  'wohnort': ('Wohnt in', ['Nürnberg', 'Fürth']),
  'haustier': 'Hat ein Haustier'

} HARD_KEYS = list(HARD_PROPERTIES.keys())

BAD_TOGETHER = [

  ('schuhgroesse', 'kleidung'),
  ('groesse', 'kleidung')

]

def main(args):

  writer = csv.writer(sys.stdout, delimiter=';')
  count = int(args[0])
  for i in range(count):
      writer.writerow(get_tasks())

def get_tasks():

  simple_key = random.choice(SIMPLE_KEYS)
  medium_key = random.choice(MEDIUM_KEYS)
  hard_key = random.choice(HARD_KEYS)
  while medium_key == simple_key or (simple_key, medium_key) in BAD_TOGETHER:
      medium_key = random.choice(MEDIUM_KEYS)
  while hard_key == medium_key or hard_key == simple_key or (medium_key, hard_key) in BAD_TOGETHER or \
        (simple_key, hard_key) in BAD_TOGETHER:
      hard_key = random.choice(HARD_KEYS)
  # Put the hardest part in the middle
  properties = (SIMPLE_PROPERTIES[simple_key], HARD_PROPERTIES[hard_key], MEDIUM_PROPERTIES[medium_key])
  tasks = []
  for p in properties:
      if isinstance(p, tuple):
          tasks.append('{} {}'.format(p[0], random.choice(p[1])))
      else:
          tasks.append(p)
  return tasks

if name == 'main':

  main(sys.argv[1:])

[/code]