Sem naloga 2009 10/ZbirkaAlesDrinovec/SemNal3del04

Iz Diri0607
Skoči na: navigacija, iskanje

Besedilo naloge

Horoskop

   Imamo seznam n strank (ime in datum rojstva). Stranko vpišemo v eni vrstici:
   ime in datum sta ločena z vejico, datum pa je zapisan v formatu
   dan.mesec.leto
   Zapišite funkcijo, ki bo za določen datum vrnila horoskopsko znamenje.
   Za vsako stranko potem izpišite ime in znamenje v horoskopu.
   vodnar 21.1.-18.2.
   ribi 19.2.-20.3.
   oven 21.3.-20.4
   bik 21.4.-21.5.
   dvojčka 22.5.-21.6.
   rak 22.6.-22.7.
   lev 23.7.-23.8.
   devica 24.8.-22.9.
   tehtnica 23.9.-23.10.
   škorpijon 24.10.-22.11.
   strelec 22.11.-21.12.
   kozorog 22.12.-20.1.

Namig

Uporaba funkcije, prireditve podatkov, input, pretvarjanje med tipi, večdimenzinalni seznami, pretvarjanje niza v seznam, vejitve, while, for, break, print

Rešitev (opisna)

  1. #vnos podatkov: stranke vnaša dokler ni vnešen prazen niz
  2. stranke = []
  3. while True:
  4. stranka = input('Vnesite stranko (ime,dan.mesec.leto) (prazen niz pomeni izhod iz vnosa): ')
  5. if stranka == '':
  6. break
  7. else:
  8. zacSez = stranka.split(',') #razdeli vnos na ime in datum
  9. stranke.append(zacSez)
  10. #izpiše vse stranke z imeni in znaki v horoskopu
  11. for i in stranke:
  12. print('Stranka',i[0],'je po horoskopu:',horoskopZnak(i[1]))

Funkcije

  1. def horoskopZnak(datum):
  2. ''' Funkcija sprejme datum kot niz, ga pretvori v seznam in primerja z
  3. datum za določitev horoskopskega znamenja.
  4. vhodni podatki:
  5. datum - niz dan.mesec.leto
  6. izhodni podatki:
  7. horoskop - niz horoskopski znak (vodnar, ribi, ...)
  8. '''
  9. #pretvori niz v seznam z elementi dan, mesec, leto
  10. dat = datum.split('.')
  11. if int(dat[1]) == 1:
  12. if int(dat[0]) >= 21:
  13. horoskop = 'vodnar'
  14. else:
  15. horoskop = 'kozorog'
  16. if int(dat[1]) == 2:
  17. if int(dat[0]) >= 19:
  18. horoskop = 'ribi'
  19. else:
  20. horoskop = 'vodnar'
  21. if int(dat[1]) == 3:
  22. if int(dat[0]) >= 21:
  23. horoskop = 'oven'
  24. else:
  25. horoskop = 'ribi'
  26. if int(dat[1]) == 4:
  27. if int(dat[0]) >= 21:
  28. horoskop = 'bik'
  29. else:
  30. horoskop = 'oven'
  31. if int(dat[1]) == 5:
  32. if int(dat[0]) >= 21:
  33. horoskop = 'dvojčka'
  34. else:
  35. horoskop = 'bik'
  36. if int(dat[1]) == 6:
  37. if int(dat[0]) >= 22:
  38. horoskop = 'rak'
  39. else:
  40. horoskop = 'dvojčka'
  41. if int(dat[1]) == 7:
  42. if int(dat[0]) >= 23:
  43. horoskop = 'lev'
  44. else:
  45. horoskop = 'rak'
  46. if int(dat[1]) == 8:
  47. if int(dat[0]) >= 23:
  48. horoskop = 'devica'
  49. else:
  50. horoskop = 'lev'
  51. if int(dat[1]) == 9:
  52. if int(dat[0]) >= 23:
  53. horoskop = 'tehtnica'
  54. else:
  55. horoskop = 'devica'
  56. if int(dat[1]) == 10:
  57. if int(dat[0]) >= 24:
  58. horoskop = 'škorpijon'
  59. else:
  60. horoskop = 'tehtnica'
  61. if int(dat[1]) == 11:
  62. if int(dat[0]) >= 22:
  63. horoskop = 'strelec'
  64. else:
  65. horoskop = 'škorpijon'
  66. if int(dat[1]) == 12:
  67. if int(dat[0]) >= 22:
  68. horoskop = 'kozorog'
  69. else:
  70. horoskop = 'strelec'
  71. return horoskop

Primer uporabe

  >>> 
  Vnesite stranko (ime,dan.mesec.leto) (prazen niz pomeni izhod iz vnosa): Francl Popndekl,12.3.1980
  Vnesite stranko (ime,dan.mesec.leto) (prazen niz pomeni izhod iz vnosa): Micka Kovačova,25.12.1981
  Vnesite stranko (ime,dan.mesec.leto) (prazen niz pomeni izhod iz vnosa): 
  Stranka Francl Popndekl je po horoskopu: ribi
  Stranka Micka Kovačova je po horoskopu: kozorog
  >>>