Kurs Pythona Swachy – Ćwiczenia
Zaczynając moją przygodę z pythonem naktnałem się na bardzo ciekawy kurs. Kurs Jakuba Swachy który możecie znaleźć na stronie http://uoo.univ.szczecin.pl/~jakubs/ . Bardzo polecam ten kurs osobom chętnym do poznania pythona. Pomyślałem, że zamieszcze tutaj moje rozwiązania do niektórych ćwiczeń. (Pliki .py znajdziecie na sidebarze)
Ćwiczenie 11.
Napisz program “numer.py”, który zamieni wprowadzony przez użytkownika ciąg cyfr na formę tekstową:
a) znaki nie będące cyframi mają być ignorowane
b) konwertujemy cyfry, nie liczby, a zatem:
- 911 to “dziewięć jeden jeden”
- 1100 to “jeden jeden zero zero”
import string cyfry = ('zero', 'jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć', 'siedem', 'osiem', 'dziewięć') ciag = raw_input('Podaj ciąg cyfr: ') for x in ciag: if x not in string.digits: continue print cyfry[int(x)]Ćwiczenie 12.
Woda zamarza przy 32 stopniach Fahrenheita, a wrze przy 212 stopniach Fahrenheita. Napisz program “stopnie.py”, który wyświetli tabelę przeliczeń stopni Celsjusza na stopnie Fahrenheita w zakresie od –20 do +40 stopni Celsjusza (co 5 stopni). Pamiętaj o wyświetlaniu znaku plus/minus przy temperaturze.
for x in range(-20,45,5): print '%+3i' % x, 'to sie równa %+4i' % ((x*9)/5 + 32), 'F'Ćwiczenie 13.
Napisz program “oceny.py”, który wczytuje od użytkownika kolejne oceny i:
a) sprawdza czy wprowadzona ocena jest na liście dopuszczalnych na wydziale ocen (jeżeli ocena jest na liście dopuszczalnych na wydziale ocen, dodaje ją na listę otrzymanych ocen)
b) jeżeli wciśnięto sam Enter, oznacza to koniec listy otrzymanych ocen
c) wyświetla wyliczoną dla listy otrzymanych ocen średnią arytmetyczną.
wydzial = range(1,7) dobre = [] oceny = input("podaj swoje oceny: ") a = 0 for x in oceny: if x not in wydzial: continue dobre += [x] for y in dobre: a += y print "Twoja średnia ocen to", "%5.2f" % (float(a)/len(dobre))Ćwiczenie 14.
Napisz program “tryg.py”, który wczyta od użytkownika wielkość kąta w stopniach i wyświetli wartość czterech podstawowych funkcji trygonometrycznych (sin, cos, tg, ctg) o ile dla danego kąta jest to możliwe.
from math import * kat = input("Podaj wielkość kąta w stopniach: ") print "%+5.3f" % sin(radians(kat)) print "%+5.3f" % cos(radians(kat)) if radians(kat)%(pi/2)== 0: print "nie ma takiego tangensa" else: print "%+5.3f" % tan(radians(kat)) if radians(kat)%(pi)== 0: print "nie ma takiego cotangensa" else: print "%+5.3f" % (1/tan(radians(kat)))Ćwiczenie 15.
Napisz program “lotto.py”, który wyświetli 6 losowych i nie powtarzających się liczb z zakresu od 1 do 49.
from random import randint lista = [] def lotto(): a = randint(1,49) if a not in lista: lista.append(a) else: lotto() for x in range(6): lotto() print listaĆwiczenie 18.
Zdefiniuj funkcję “avg”, która dla dowolnej liczby parametrów zwróci ich średnią arytmetyczną (lub 0 dla 0 parametrów).
def avg(*a): y=0 for x in a: y+=x return a and y/float(len(a))or 0Ćwiczenie I.
Napisz program „liczby_slownie2.py”, który dla wprowadzonej liczby dziesiętnej (z zakresu 1-1999) wyświetli jej wartość zapisaną słownie.
liczby = {0:"zero",1: "jeden ",2:"dwa ",3:"trzy ",4:"cztery ",5:"pięć ",6:"sześć ", 7:"siedem ",8:"osiem ",9:"dziewięć ",10:"dziesięć ",11:"jedenaście ",12:"dwanaście ",13:"trzynaście ",14:"czternaście ", 15:"piętnaście ",16:"szesnaście ",17:"siedemnaście ",18:"osiemnaście",19:"dziewiętnaście",40:"czterdzieści", 100:"sto ",200:"dwieście ",1000:"tysiąc ", 30: "trzydzieści ", 20: "dwadzieścia ",50: "pięćdziesiąt ", 60: "sześćdziesiąt ",70: "siedemdziesiąt ",80: "osiemdziesiąt ",90: "dziewięćdziesiąt ", 300: "trzysta ", 400: "czterysta ",500: "pięćset ",600: "sześćset ",700: "siedemset ",800: "osiemset ",900: "dziewięćset "} r = liczby.keys() r.sort() r.reverse() lr = "" b = [] def fct(n): r = liczby.keys() r.sort() r.reverse() lr = "" for i in r: while i <= n: lr += liczby[i] n -= i break b = str(lr).rstrip('zero') return b x = input("Podaj liczbę całkowitą:") print fct(x)



Kod do 15 ćwiczenia jest niepoprawny (w razie wystąpienia powtórzenia losowane jest odpowiednio mniej liczb).
ok, teraz widzę
wielkie dzięki za komentarz, już to poprawiam