17 KiB
17 KiB
"""
Sprawdź czy tekst 'aAaAaA' znajduje się w tablicy passwords.
W zależności czy znajduje się czy też nie, wyświetl na ekranie odpowiedni komunikat.
"""
passwords = ['aaAaa', 'aAAAaa', 'aaaaaaA', 'aaaAAAAA', 'aaAAAaa', 'aAaAaA', 'aAaAaAA']
if 'aAaAaA' in passwords:
print('napis ' + 'aAaAaA' + ' znajduje sie w tablicy passwords')
else:
print(' napis' + 'aAaAaA' + ' nie znajduje sie w tablicy passwords')
napisaAaAaAznajduje sie w tablicy passwords
"""
Niech x oznacza liczbę uzyskanych punktów. Standardowa skala ocen jest następująca:
* x >= 90 -- 5.0
* 90 > x >= 80 -- 4.5
* 80 > x >= 70 -- 4.0
* 70 > x >= 60 -- 3.5
* 60 > x >= 50 -- 3.0
* x < 50 -- 2.0
Zmienna `points` zawiera liczbę uzyskanych punktów przez studenta.
Napisz instrukcję warunką, która wyświetli ocenę studenta w zależności od liczby punktów.
"""
points = 85
def print_grade(grade):
print('Twoja ocena to: ',grade)
# te rozwiązanie korzysta z ciekawej możliwości zawarcia dwóch warunków a<x<b w jednej lini
if points >= 90:
print_grade(5.0)
elif 90 > points >= 80:
print_grade(4.5)
elif 80 > points >= 70:
print_grade(4.0)
elif 70 > points >= 60:
print_grade(3.5)
elif 60 > points >= 50:
print_grade(3.0)
else:
print_grade(2.0)
# albo można tak:
if points >= 90:
print_grade(5.0)
elif 90 > points:
print_grade(4.5)
elif 80 > points:
print_grade(4.0)
elif 70 > points:
print_grade(3.5)
elif 60 > points:
print_grade(3.0)
else:
print_grade(2.0)
Twoja ocena to: 4.5 Twoja ocena to: 4.5
"""
Oblicz sumę liczb od 1 do 678.
"""
# te dodanie 1 jest ważne, bo python nie włącza końca przedziału
sum(list(range(1,678+1)))
230181
"""
Słownik `oceny` zawiera oceny kilku osób. Kluczami są imiona dzieci, a wartosciami -- ich oceny.
Uzupełnij słownik `rozklad`, którego kluczami są oceny, a wartosciami -- listy...
"""
oceny = {
'Albert': 4.5,
'Beata': 5,
'Cecylia': 4,
'Dariusz': 4,
'Eliza': 3,
'Feliks': 5,
'Grzegorz': 4.5,
'Izabela': 4.5
}
rozklad = {
5: [],
4.5: [],
4: [],
3: []
}
for key, value in oceny.items():
rozklad[value].append(key)
rozklad
{5: ['Beata', 'Feliks'], 4.5: ['Albert', 'Grzegorz', 'Izabela'], 4: ['Cecylia', 'Dariusz'], 3: ['Eliza']}
"""
Poniżej znajdują się 2 słowniki z danymi o liczbie przejazdów rowerami miejskimi w Montrealu w 2018 z podziałem na miesiące (od kwietnia do listopada).
Pierwszy słownik zawiera informacje o przejazdach wykonanych przez posiadaczy abonamentu, a drugi przez ludzi, którzy
nie mają wykupionego abonamentu. Dane pochodzą ze strony https://montreal.bixi.com/en/open-data.
a) Stwórz trzeci słownik `all_rides`, w którym zliczysz łączną liczbę przejazdów w każdym z podanych miesięcy.
b) Oblicz sumę zarejestrowanych przejazdów od kwietnia do listopada.
c) Wyswietl jaki procent wszystkich przejazdów odbyło się w sierpniu (August).
"""
members = {
'April': 211819,
'May': 682758,
'June': 737011,
'July': 779511,
'August': 673790,
'September': 673790,
'October': 444177,
'November': 136791,
}
occasionals = {
'April': 32058,
'May': 147898,
'June': 171494,
'July': 194316,
'August': 206809,
'September': 140492,
'October': 53596,
'November': 10516,
}
all_rides = dict()
for key,value in members.items():
all_rides[key] = value
for key,value in occasionals.items():
all_rides[key] += value
print(all_rides)
# można też to zrobić szybciej korzystająć z list comprehensions, albo np biblioteki copy
print(sum(all_rides.values()))
print(100 * all_rides['August'] / sum(all_rides.values()), '%')
print(round(100 * all_rides['August'] / sum(all_rides.values()),2), '%') # zaokrąglenie
{'April': 243877, 'May': 830656, 'June': 908505, 'July': 973827, 'August': 880599, 'September': 814282, 'October': 497773, 'November': 147307} 5296826 16.62503166990949 % 16.63 %
"""
Napisz kod, który zwraci tzw. "Big 'NO!'" (zob. http://tvtropes.org/pmwiki/pmwiki.php/Main/BigNo)
dla zadanej liczby tj. napis typu "NOOOOOOOOOOOOO!", gdzie liczba 'O' ma być
równa wartości zmniennej `number_of_o`. Jeśli argument jest mniejszy niż 5, ma być zwracany napis "It's not a Big 'No!'".
Wyświetl ten napis na ekran.
"""
number_of_o = 6
if number_of_o < 5:
print("It's not a Big 'No!'")
else:
print("N"+"O"*number_of_o+'!')
NOOOOOO!
"""
* Podziel zmienną `text` na słowa, korzystając z metody split.
* Dodaj do listy `oov`, wszystkie słowa (bez powtórzeń), które nie są zawarte w liście `vocab`.
"""
text = "this is a string , which i will use for string testing"
vocab = [',', 'this', 'is', 'a', 'which', 'for', 'will', 'i']
oov = []
text_splitted = text.split()
text_splitted_no_repeats = set(text_splitted)
for item in text_splitted_no_repeats:
if item not in vocab:
oov.append(item)
oov
['string', 'use', 'testing']
"""
1. Napisz rekurencyjną funkcję, która zwróci n-ty wyraz ciągu Fibonacciego.
2. Napisz funkcję, która obliczy n-ty wyroz ciągu Fibonacciego nie korzystając z rekurencji.
Np. możesz wykorzystać listę do obliczania kolejnych wartości ciągu.
Ciąg Fibonacciego:
a[0] = 1, a[1] = 1, a[n] = a[n-1] + a[n-2] dla n>=2
"""
'\n1. Napisz rekurencyjną funkcję, która zwróci n-ty wyraz ciągu Fibonacciego.\n2. Napisz funkcję, która obliczy n-ty wyroz ciągu Fibonacciego nie korzystając z rekurencji.\nNp. możesz wykorzystać listę do obliczania kolejnych wartości ciągu.\n\nCiąg Fibonacciego:\na[0] = 1, a[1] = 1, a[n] = a[n-1] + a[n-2] dla n>=2\n\n'
def fib(n):
if n == 0:
return 1
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
fib(10)
89
"""
Napisz funkcję sum_div35(n), która zwraca sumę wszystkich liczb podzielnych
przez 3 lub 5 mniejszych niż n.
"""
def sum_div35(n):
pass
input = 100
# dla n =100 poprawna odpowiedź to 2318
def sum_div35(n):
all_numbers = []
for i in range(n):
if i % 3 == 0 or i % 5 == 0:
all_numbers.append(i)
return sum(all_numbers)
sum_div35(100)
# alternatywnie:
def sum_div35(n):
return sum([i for i in range(n) if i % 3 == 0 or i % 5 == 0 ])
sum_div35(100)
2318
"""
Otwórz plik `zen_of_python.txt` i zlicz liczbę linii i słów w tym pliku.
Następnie przerób kod na funkcję, która jako argument będzie przyjmować ściężkę do pliku i będzie zwracać
słownik z dwoma kluczami: `liczba_linii` i `liczba_slow`.
"""
'\nOtwórz plik `zen_of_python.txt` i zlicz liczbę linii i słów w tym pliku. \nNastępnie przerób kod na funkcję, która jako argument będzie przyjmować ściężkę do pliku i będzie zwracać \nsłownik z dwoma kluczami: `liczba_linii` i `liczba_slow`.\n'
print(len(open('zen_of_python.txt').readlines()))
def count_lines_and_words(path):
lines = 0
words = 0
with open(path) as f:
for line in f:
lines += 1
words += len(line.split())
return lines, words
count_lines_and_words('zen_of_python.txt')
19
(19, 137)
"""
Zadania: Zaimportuj bibliotekę statistics, która zawiera funckje do obliczenia podstawych wielkości statystycznych (średnia, mediana, moda):
statistics.mean -- obliczenie średniej
statistics.median -- obliczenie mediany
statistics.variance -- obliczenie wariancji
statistics.stdev -- obliczenie odchylenia standardowego Oblicz te wielkości dla wartości z poniższego słownika.
Każda z tych funkcji przyjmuje jeden argument: listę wartości.
"""
members = {
'April': 211819,
'May': 682758,
'June': 737011,
'July': 779511,
'August': 673790,
'September': 673790,
'October': 444177,
'November': 136791,
}
import statistics
values = members.values()
print(statistics.mean(values))
print(statistics.median(values))
print(statistics.variance(values))
print(statistics.stdev(values))
542455.875 673790.0 61681755885.83929 248358.12023334226
"""
Biblioteka random posiada funkcję random, która zwraca losową licznę z przedziału [0, 1) (nie przyjmuje żadnych argumentów).
Biblioteka math posiada funkcję hypot, która oblicza odległość punktu od środka układu współrzędnych (punktu [0, 0]) i przyjmuje dwa argumenty: współrzędne punktu.
* Zaimportuj biblioteki random i math
* korzystając z funkcji random wylosuj dwie liczby i przypisz wyniki do zmniennych x i y.
* Korzystając z funkcji hypot oblicz odległość punktu o współrzednych (x,y).
* Dodaj pętlę, która będzie wykonywać te czynności n = 10 razy i będzie zliczać ile razy obliczona odległość jest mniejsza od 1.
* Oblicz stosunek liczby punktów, dla których odległość wynosiła mniej niż 1 do całkowitej liczby punktów. Pomnóż tę wartocść przez 4.
* Podstaw za n wartości 100, 1000, 1000000. Do jakiej wartości zbiegają wartości?
"""
import random
import math
x,y = random.random(), random.random()
print(math.hypot(x,y))
n = 1000000
lower_than_1_number = 0
for i in range(n):
x,y = random.random(), random.random()
if math.hypot(x,y) < 1 :
lower_than_1_number +=1
print(lower_than_1_number)
print((lower_than_1_number / n )*4)
# zmierza do stałej PI
1.023482041105784 785667 3.142668