SlideShare a Scribd company logo
1 of 3
"""
Witam.
Przed Tobą wakacyjne zadanie PyLadies.
Masz do przygotowania skrypt umożliwiający automatyczne uzupełnianie grafiku
pracy według zadanych parametrów.
Zadanie nie należy do najprostszych i na pewno nie skończy się na jednym
wieczorze klikania.
Ale przecież o to właśnie chodzi ;-) toż to zadanie wakacyjne ;-)
W zamian oferuję pomoc i wsparcie, w razie potrzeby: marcin-pieczynski@wp.pl
Dla osób, które napiszą działający skrypt obiecuję code review ;-)
A teraz do rzeczy:
1)
Masz do dyspozycji drużynę pracowników zebranych w postaci listy crew.
Dla uproszczenia sytuacji pracownicy to po prostu osoby oznaczone literami od
'A' do 'O'. W sumie 15 osób.
2)
Nasz zespół pracuje na dwie zmiany po 12h przez cały miesiąc. Weekendy też
pracujące.
Możliwości zapisu dnia w grafiku:
'D' - dyżur w dzień
'N' - dyżur w nocy
'U' - dzień urlopowy
'.' - dzień wolny od pracy
Przed każdym miesiącem pracy, pracownicy mają możliwość oczywiście zdecydowania
w jakie dni biorą urlop ('U').
Dodatkowo każda osoba może mieć prośbę do osoby układającej grafik pracy,
że chciałaby mieć np: dyżur nocny ('N') np. 5 dnia miesiąca, a dyżur dzienny
('D') 14 dnia miesiąca itp.
Lista schedules zawiera grafiki pracy dla poszczególnych osób.
Grafiki te zawierają urlopy oraz prośby dyżurów w konkretne dni.
Pierwszej osobie z listy crew odpowiada pierwszy grafik z listy schedules itd.
Przykładowy grafik na 31 dni w miesiącu:
osoba B --> grafik '.D...........................N.'
osoba D --> grafik '...D.................UUUUUUN...',
3)
Nadszedł czas na zadanie.
Skrypt, który trzeba napisać powinien samodzielnie wypełniać brakujące dyżury w
grafiku pracy
według zadanych parametrów / wymagań !!! i to właśnie wymagania są kluczową
sprawą.
Wymagania:
- każdego dnia powinny być 3 osoby na dyżurze dziennym i 2 osoby na dyżurze
nocnym
- jedna osoba nie może pełnić dyżuru przez 24 h pod rząd.
W naszym grafiku oznacza to, że nie może wystąpić dyżur dzienny po nocnym -
ND.
Zatem w grafiku dla pojedynczej osoby nie może wystąpić 'ND'.
'DN' w grafiku jest dopuszczalne.
- liczba dyżurów dla pojedynczej osoby w ciągu 7 dni pod rząd wynosi
maksymalnie 4 dyżuru.
- liczba dyżurów dla pojedynczej osoby w caŅym miesiącu --> maksymalnie 13
- liczba dyżurów dziennych i nocnych dla jednej osoby - bez znaczenia.
Dopuszcza sią sytuacją w której jedna osoby ma tylko dyżuru dzienne, a
inna tylko nocne.
4)
Poniżej znajdziesz odrobiną kodu pomocnego przy wykonywaniu zadania.
I drobna porada na sam koniec.
SiÄ…gnij pamiÄ…ciÄ… wstecz i przypomnij sobie jak siÄ… graÅ…o w Class'y
PrzykÅ…adowy grafik po wypeÅ…nieniu automatycznym dokÅ…adnie z takimi
wymaganiami:
osoba grafik
A D.D...N..NUUUUUUNNN.D..D..D.D.N
B .DN..D..D..D..D..D.D..D..D..DN.
C ..DN.D..D..N..N.D..D..D..D..N.D
D ..DD.D..D..N.D..D..D.UUUUUUNNNN
E ..N.DN.D..D..D..D..D.D...DN.D..
F .D...DN.N.D..D..D.D..D..DN.D...
G .D..D.DD..D.D..D..D.D...N.N.D..
H .D..D..DN.N.D..D..D.D..N.D.D...
I .N..D..DD.N.D..D.D..D.N.D..D...
J UUUNNNUUUUUUUNNN.D..NN.DD..D..D
K D...N..N.DD.N.D..D..N.D.D..N..D
L NN.D...N.D.DN.UUUUUUUUNNNN...DD
M D..D..D..D..DN.D..NN.D.D..D..D.
N D..D..D..D.D.DD..N.N.DD...D..D.
O N.D...D..N.D..DNN.D..N.D..D..D.
Powodzenia ;-)))
Marcin
"""
crew = [
'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O'
]
schedules = [
'D.........UUUUUU..............N',
'.D...........................N.',
'..D.........................N..',
'...D.................UUUUUUN...',
'....D.....................N....',
'.....D...................N.....',
'......D.................N......',
'.......D...............N.......',
'........D.............N........',
'UUU...UUUUUUU........N.........',
'..........D.........N..........',
'...........D..UUUUUUUU.........',
'............D.....N............',
'.............D...N.............',
'..............D.N..............'
class Person:
def __init__(self, name, person_schedule):
self.name = name
self.person_schedule = person_schedule
# Tutaj dodawaj własne metody dla klasy Person
def metoda1(self):
pass
def metoda2(self):
pass
# Poniższy 'if' będzie spełniony tylko i wyłącznie jeśli plik zostanie wykonany
jako samodzielny skrypt w pythonie.
# czyli np poprzez użycie polecenia w konsoli: python
PyLadies_zadanie_wakacyjne.py
# możesz to zrobić w tej chwili
# Wspomniany 'if' nie zostanie wykonany jeżeli plik jest importowany przez inny
moduł.
# Docelowo postaraj się zapisywać wszystkie definicja funkcji i metod powyżej
tego miejsca.
# Natomiast wywoływanie funkcji i metod, testowanie kodu wpisuj poniżej
wspomnianego "if"
if __name__ == '__main__':
print("uruchomienie pliku jako osobny scrypt")
# tworzenie instancji klasy Person dla osób (crew) i grafinków (schedules)
people = [Person(name, schedule) for name, schedule in zip(crew, schedules)]
# drukowanie atrybutów name oraz person_schedule dla stworzonych instancji
klasy Person
for person in people:
print(person.name, person.person_schedule)

More Related Content

Featured

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

PyLadies zadanie wakacyjne

  • 1. """ Witam. Przed Tobą wakacyjne zadanie PyLadies. Masz do przygotowania skrypt umożliwiający automatyczne uzupełnianie grafiku pracy według zadanych parametrów. Zadanie nie należy do najprostszych i na pewno nie skończy się na jednym wieczorze klikania. Ale przecież o to właśnie chodzi ;-) toż to zadanie wakacyjne ;-) W zamian oferuję pomoc i wsparcie, w razie potrzeby: marcin-pieczynski@wp.pl Dla osób, które napiszą działający skrypt obiecuję code review ;-) A teraz do rzeczy: 1) Masz do dyspozycji drużynę pracowników zebranych w postaci listy crew. Dla uproszczenia sytuacji pracownicy to po prostu osoby oznaczone literami od 'A' do 'O'. W sumie 15 osób. 2) Nasz zespół pracuje na dwie zmiany po 12h przez cały miesiąc. Weekendy też pracujące. Możliwości zapisu dnia w grafiku: 'D' - dyżur w dzień 'N' - dyżur w nocy 'U' - dzień urlopowy '.' - dzień wolny od pracy Przed każdym miesiącem pracy, pracownicy mają możliwość oczywiście zdecydowania w jakie dni biorą urlop ('U'). Dodatkowo każda osoba może mieć prośbę do osoby układającej grafik pracy, że chciałaby mieć np: dyżur nocny ('N') np. 5 dnia miesiąca, a dyżur dzienny ('D') 14 dnia miesiąca itp. Lista schedules zawiera grafiki pracy dla poszczególnych osób. Grafiki te zawierają urlopy oraz prośby dyżurów w konkretne dni. Pierwszej osobie z listy crew odpowiada pierwszy grafik z listy schedules itd. Przykładowy grafik na 31 dni w miesiącu: osoba B --> grafik '.D...........................N.' osoba D --> grafik '...D.................UUUUUUN...', 3) Nadszedł czas na zadanie. Skrypt, który trzeba napisać powinien samodzielnie wypełniać brakujące dyżury w grafiku pracy według zadanych parametrów / wymagań !!! i to właśnie wymagania są kluczową sprawą. Wymagania: - każdego dnia powinny być 3 osoby na dyżurze dziennym i 2 osoby na dyżurze nocnym - jedna osoba nie może pełnić dyżuru przez 24 h pod rząd. W naszym grafiku oznacza to, że nie może wystąpić dyżur dzienny po nocnym - ND. Zatem w grafiku dla pojedynczej osoby nie może wystąpić 'ND'. 'DN' w grafiku jest dopuszczalne.
  • 2. - liczba dyżurów dla pojedynczej osoby w ciÄ…gu 7 dni pod rzÄ…d wynosi maksymalnie 4 dyżuru. - liczba dyżurów dla pojedynczej osoby w caÅ…ym miesiÄ…cu --> maksymalnie 13 - liczba dyżurów dziennych i nocnych dla jednej osoby - bez znaczenia. Dopuszcza siÄ… sytuacjÄ… w której jedna osoby ma tylko dyżuru dzienne, a inna tylko nocne. 4) Poniżej znajdziesz odrobinÄ… kodu pomocnego przy wykonywaniu zadania. I drobna porada na sam koniec. SiÄ…gnij pamiÄ…ciÄ… wstecz i przypomnij sobie jak siÄ… graÅ…o w Class'y PrzykÅ…adowy grafik po wypeÅ…nieniu automatycznym dokÅ…adnie z takimi wymaganiami: osoba grafik A D.D...N..NUUUUUUNNN.D..D..D.D.N B .DN..D..D..D..D..D.D..D..D..DN. C ..DN.D..D..N..N.D..D..D..D..N.D D ..DD.D..D..N.D..D..D.UUUUUUNNNN E ..N.DN.D..D..D..D..D.D...DN.D.. F .D...DN.N.D..D..D.D..D..DN.D... G .D..D.DD..D.D..D..D.D...N.N.D.. H .D..D..DN.N.D..D..D.D..N.D.D... I .N..D..DD.N.D..D.D..D.N.D..D... J UUUNNNUUUUUUUNNN.D..NN.DD..D..D K D...N..N.DD.N.D..D..N.D.D..N..D L NN.D...N.D.DN.UUUUUUUUNNNN...DD M D..D..D..D..DN.D..NN.D.D..D..D. N D..D..D..D.D.DD..N.N.DD...D..D. O N.D...D..N.D..DNN.D..N.D..D..D. Powodzenia ;-))) Marcin """ crew = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O' ] schedules = [ 'D.........UUUUUU..............N', '.D...........................N.', '..D.........................N..', '...D.................UUUUUUN...', '....D.....................N....', '.....D...................N.....', '......D.................N......', '.......D...............N.......', '........D.............N........', 'UUU...UUUUUUU........N.........', '..........D.........N..........', '...........D..UUUUUUUU.........', '............D.....N............', '.............D...N.............', '..............D.N..............'
  • 3. class Person: def __init__(self, name, person_schedule): self.name = name self.person_schedule = person_schedule # Tutaj dodawaj własne metody dla klasy Person def metoda1(self): pass def metoda2(self): pass # Poniższy 'if' będzie spełniony tylko i wyłącznie jeśli plik zostanie wykonany jako samodzielny skrypt w pythonie. # czyli np poprzez użycie polecenia w konsoli: python PyLadies_zadanie_wakacyjne.py # możesz to zrobić w tej chwili # Wspomniany 'if' nie zostanie wykonany jeżeli plik jest importowany przez inny moduł. # Docelowo postaraj się zapisywać wszystkie definicja funkcji i metod powyżej tego miejsca. # Natomiast wywoływanie funkcji i metod, testowanie kodu wpisuj poniżej wspomnianego "if" if __name__ == '__main__': print("uruchomienie pliku jako osobny scrypt") # tworzenie instancji klasy Person dla osób (crew) i grafinków (schedules) people = [Person(name, schedule) for name, schedule in zip(crew, schedules)] # drukowanie atrybutów name oraz person_schedule dla stworzonych instancji klasy Person for person in people: print(person.name, person.person_schedule)