Python - Ćwiczenia (Swacha)

(1/24) > >>

Katharsis:
W kursie Jakuba Swachy "Kurs programowania w języku Python" można znaleźć sporą ilość ćwiczeń sprawdzających naszą Pythonowską wiedzę. Ćwiczenia obejmują głównie podstawy, ale bywają momenty, w których należy się zastanowić.

W tym temacie, chciałbym abyście prezentowali swoje wypociny. Wymieniali się doświadczeniem a'propos tych ćwiczeń i super się przy tym bawili.

Życzę miłej zabawy.


Ćwiczenie 1.
Wiedząc, że pierwiastek n-tego stopnia z x równa się x do potęgi 1/n i wykorzystując wiedzę o użyciu liczb zespolonych w Pythonie, wylicz wartość pierwiastka drugiego stopnia z –7.


Ćwiczenie 2.
Używając instrukcji Pythona oblicz resztę z dzielenia 11 przez 7 i zapamiętaj wynik w zmiennej o nazwie Z. Następnie, pojedynczym poleceniem Pythona i bez użycia nawiasów, przemnóż zmienną Z przez Z+1.


Ćwiczenie 3.
Spowoduj pojedynczym poleceniem Pythona, by na ekranie 200-krotnie wyświetliła się wartość wyrażenia 1.23e+4+45.0 każdorazowo rozdzielona średnikiem.


Ćwiczenie 4.
Napisz skrypt, który zsumuje dwie liczby, nie używając znaku "+" (w całym skrypcie).


Ćwiczenie 5.
Napisz program "powiel.py", który wczyta od użytkownika pewien napis, a następnie wyświetli 50 kopii tego napisu, każda w osobnej linii.


Ćwiczenie 6.
Napisz program "pole_tr.py", który obliczy pole trójkąta, pod warunkiem że użytkownik poda wysokość i długość podstawy tego trójkąta.


Ćwiczenie 7.
Napisz program "odsetki.py", który obliczy stan konta za N lat, gdzie stan początkowy konta wynosi SPK, a stopa oprocentowania P % rocznie (obowiązuje roczna kapitalizacja odsetek). N, SPK i P podaje użytkownik programu.


Ćwiczenie 8.
Napisz program "parzyste.py", który wczyta od użytkownika liczbę całkowitą i wyświetli informację, czy jest to liczba parzysta, czy nieparzysta.


Ćwiczenie 9.
Napisz program "prk.py", który obliczy wszystkie pierwiastki rzeczywiste równania kwadratowego o postaci ax2+bx+c=0, gdzie a, b i c podaje użytkownik. Program powinien na początku sprawdzić, czy wprowadzone równanie jest rzeczywiście kwadratowe.


Ćwiczenie 10.
Napisz program "parzyste2.py", który wczyta od użytkownika liczbę całkowitą i bez użycia instrukcji "if" wyświetli informację, czy jest to liczba parzysta, czy nieparzysta.


Ć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"


Ć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.


Ć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ą.


Ć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.


Ćwiczenie 15.
Napisz program "lotto.py", który wyświetli 6 losowych i nie powtarzających się liczb z zakresu od 1 do 49.


Ćwiczenie 16.
Napisz program "wyrazy.py", który wczyta od użytkownika pewien tekst, a następnie podzieli go na zdania (zakładamy, że jednoznacznie kropka rozdziela zdania) i dla każdego zdania wyświetli ile jest w nim wyrazów (zakładamy, że spacja oddziela wyrazy w zdaniu).


Ćwiczenie 17.
Zdefiniuj funkcję "geo", która dla podanych trzech parametrów: n=numer elementu ciągu, a1=wartość pierwszego elementu ciągu (domyślnie 1), q=wartość iloczynu ciągu geometrycznego (domyślnie 2) zwróci n-ty element ciągu geometrycznego.


Ćwiczenie 18.
Zdefiniuj funkcję "avg", która dla dowolnej liczby parametrów zwróci ich średnią arytmetyczną (lub 0 dla 0 parametrów).


Ćwiczenie 19.
Zdefiniuj funkcję "sylaby", która dla parametru będącego wyrazem w języku polskim, zwróci listę jego sylab. Funkcja nie musi działać perfekcyjnie dla każdego wyrazu (wyjątków itp.), ale im więcej przypadków obsłuży prawidłowo, tym lepiej.


Ćwiczenie 20.
Napisz program "login.py", który wczyta od użytkownika login i hasło. Jeżeli w słowniku haseł znajduje się odpowiedni login i hasło, program powinien wyświetlić „Autoryzacja pomyślna”; inaczej – „Błąd logowania”.


Ćwiczenie 21.
Napisz program „lista.py”, który:
a) Jeżeli na dysku nie ma pliku „lista.txt”, wczyta od użytkownika listę studentów (imię, nazwisko, grupa) i zapisze ją do pliku „lista.txt”
b) Jeżeli na dysku jest już plik „lista.txt”, wczyta z niego listę studentów (imię, nazwisko, grupa) , a użytkownikowi umożliwi dopisywanie nowych studentów do listy, na koniec zapisze listę z powrotem do pliku.


Ćwiczenie 22.
Wykorzystując funkcję sylaby z ćwiczenia III z lekcji 8, napisz program „sylab.py”, który wczyta plik tekstowy o podanej przez użytkownika nazwie i rozbije zawarty w nim tekst na sylaby.


Ćwiczenie 23.
Napisz program, który przeliczy wprowadzoną liczbę rzymską na jej postać dziesiętną.


Ćwiczenia 24.
Napisz program, który wczyta od użytkownika tekst, a następnie wyświetli go w ramce z gwiazdek,

 np.: HELLO STRANGER! ->

*******************
*   HELLO STRANGER!  *
*******************


Ćwiczenia 25.
Napisz program, który wczyta od użytkownika liczbę X, a następnie wyświetli TRÓJKĄT prostokątny o długości przyprostokątnej X,

 np.: 5 ->

*
* *
*   *
*     *
*****


Ćwiczenia 26.

Napisz program, który wczyta od użytkownika liczbę X, a następnie wyświetli romb o wysokości 2X,

 np.: 2 ->
 
  /\
 /  \
 \  /
  \/
 
 
Ćwiczenia 27.

Napisz program, który wczyta od użytkownika liczbę X, a następnie wyświetli kwadrat z gwiazdek o długości boku X,
 
  np.: 4 ->

****
*    *
*    *
****
 
 
Ćwiczenia 28.
Napisz program, który:
a) wczyta od użytkownika do listy R 10 elementów będących dodatnimi liczbami rzeczywistymi
b) wyliczy dla elementów listy R sumę S wyrażeń i/ gdzie i oznacza nr elementu tablicy R
c) wyświetli na ekranie sumę S
 
 
Ćwiczenia 29.
Napisz program, który wczyta od użytkownika tekst, a następnie podwoi w nim co drugi znak i wyświetli wynik,

 np.: ALA MA PSA -> ALLA  MAA PPSAA


Ćwiczenia 30.
Napisz program, który wczyta od użytkownika tekst, a następnie wyświetli go w dwóch linijkach naprzemiennie,

 np.: HELLO STRANGER! ->

H L O S R N E !

 E L   T A G R

artur.przybyla:
Witam.

Oto moje wypociny (mam nadzieję, że poprawne i zupełne) do części ćwiczeń. W miarę wolnego czasu i umiejętności dopiszę resztę. Po małym namyśle postanowiłem rozbić kod aby łatwiej było czytać:

Kodowanie znaków:

Kod
# -*- coding: cp1250 -*- kodowanie dla IDLE
# -*- coding: cp852 -*- kodowanie dla command line
Ćw. 1
Ta część opisu to dla zmyły?

Cytuj

Wiedząc, że pierwiastek n-tego stopnia z x równa się x do potęgi 1/n

Kod
from cmath import sqrt
print sqrt(-7)
Ćw. 2

Kod
Z = 11 % 7
Z *= Z + 1
print Z
Ćw. 3

Kod
print (`1.23e+4+45.0` + ';') * 200
Ćw. 4

Kod
pierwsza_liczba, druga_liczba = -23, 12.2354 # przykładowe liczby
print pierwsza_liczba - (-1) * druga_liczba  # to było złośliwe
print
# inne rozwiązanie
lista = [pierwsza_liczba, druga_liczba]
print sum(lista)
Ćw. 5 powiel.py

Kod
napis = raw_input('Napisz dowolny tekst: ') or 'Nic nie wpisałeś Leniwcu'
print (napis + "\n") * 50
Ćw. 6 pole_tr.py

Motto:
It's better to ask for forgiveness than for permission.

Kod
podstawa = raw_input('Podaj długość podstawy trójkąta: ')
wysokosc = raw_input('Podaj długość wysokości trójkąta opuszczonej na tę podstawę: ')
try:
   podstawa, wysokosc = float(podstawa), float(wysokosc)
except ValueError:
   print 'Podane wartości muszą być liczbami !!!'
   exit()
# oczywiście assert nie używa się do takich celów, to tylko przykład wywalający program
assert podstawa > 0 and wysokosc > 0, 'Wartości muszą być większe do zera'
pole = 0.5 * podstawa * wysokosc
print 'Pole trójkąta o podstawie %.2f i wysokości %.2f wynosi %.2f.' % (podstawa, wysokosc, pole)
Ćw. 7 odsetki.py

Kod
SPK = raw_input('Podaj stan początkowy konta: ')
P = raw_input('Jak wysokie jest oprocentowanie?: ')
N = raw_input('Ile lat chcesz oszczędzać?: ')
try:
   SPK, P, N = float(SPK), float(P), int(N)
except ValueError:
   print 'Podane wartości muszą być liczbami !!!'
   exit()
P *= .01 # przeliczamy % na setne
# Nie sprawdzamy czy liczby mają sens np: ujemne lata
stan_koncowy_konta = SPK
for i in xrange(N): stan_koncowy_konta += stan_koncowy_konta * P
print 'Końcowy stan konta po %d latach wynosi %.2f' % (N, stan_koncowy_konta)
Ćw. 8 parzyste.py

Kod
liczba = raw_input('podaj liczbę całkowitą: ')
try:
   liczba = int(liczba)
except ValueError:
   print 'Miała być liczba całkowita !!!'
   exit()
if liczba % 2:
   print 'Liczba %d jest nieparzysta' % liczba
else:
   print 'Liczba %d jest parzysta' % liczba
Ćw. 9 prk.py ax^2+bx+c

Kod
import math
a = raw_input('współczynnik a równania kwadratowego: ')
b = raw_input('współczynnik b równania kwadratowego: ')
c = raw_input('współczynnik c równania kwadratowego: ')
try:
   a, b, c = float(a), float(b), float(c)
except ValueError:
   print 'To miały być liczby'
   exit()
if a == 0:
   print 'współczynnik a musi być różny od 0'
   exit()
delta=b*b-4*a*c
if delta < 0:
   print 'Brak pierwiastków rzeczywistych'
elif delta == 0:
   pierwiastek = -b/2*a
   print 'Jeden pierwiastek rzeczywisty' , pierwiastek
else:
   pierwiastek1 = (-b+math.sqrt(delta))/2*a
   pierwiastek2 = (-b-math.sqrt(delta))/2*a
   print 'Dwa pierwiastki rzeczywiste' , pierwiastek1 , pierwiastek2
Ćw. 10 parzyste2.py

Kod
liczba = raw_input('podaj liczbę całkowitą: ')
try:
   liczba = int(liczba)
except ValueError:
   print 'Miała być liczba całkowita !!!'
   exit()
print 'liczba %d' % liczba , ('jest parzysta', 'jest nieparzysta')[liczba % 2]
Dla modulo > 2 do indeksu dołożyć warunek: and 1, np. [liczba % 23 and 1] wtedy mamy gwarancję poprawnego indeksu (0 lub 1), oczywiście trzeba zmienić też opisy. To rozwiązanie działa też dla liczb ujemnych (sprawdzałem).

Ćw. 11 numer.py

Kod
import string
cyfry = ('zero', 'jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć', 'siedem', 'osiem', 'dziewięć')
ciag = raw_input('Podaj ciąg cyfr: ')
for cyfra_indeks in [int(x) for x in ciag if x in string.digits]:
   print cyfry[cyfra_indeks],
Alternatywnie:

Kod
[int(x) for x in ciag if x.isdigit()]
Tylko tu jest narzut związany z wywoływaniem metody. Wszelkie wprowadzanie danych można ubrać w pętlę:

Kod
while True:
   try:
       #tutaj wszystkie inputy
       pass
   except Exception, e: # tu wyłapujemy wszystkie wyjątki
       print 'Coś poszło źle'
       print 'Wystąpił wyjątek', e
       print 'Spróbuj kolejny raz ;-)'
   else:
       break
Tam gdzie wprowadzamy liczby można oczywiście użyć samego input(). Tak mi się raw_input()'y bezmyślnie przekopiowały ;).

Miłej lektury.
                                                                   Art

P.S. Jeszcze dwa pytania:
Ćw. 26 czy nie powinno to wyglądać tak:

 /\
/  \
\  /
 \/

Rysunek przedstawiał sześciokąt. Chyba że tak:

  /\
 /  \
|    |
|    |
 \  /
  \/

Ćw. 28 pkt b. Co Autor ma na myśli (i/ ?)?

Katharsis:
Witam.

Przede wszystkim dzięki za zainteresowanie. Nikt dotychczas nie kwapił się, podzielić swoimi rozwiązaniami.

Oryginalny zestaw ćwiczeń znajdziesz na http://www.ppcg-kurs.vdl.pl/. Każdy dział kończy się podsumowaniem i pewną ilością ćwiczeń reasumujących.


26)

 /\
/  \
\  /   - chodzi o Romb
 \/


28)

Kolejne zadanie:
Najpierw rozpiszmy je na czynniki "prostsze":
R - lista zawierająca zbiór dodatnich liczb rzeczywistych
S - suma wyrażeń, gdzie:
i - numer elementu tablicy R

Podajemy 10 liczb rzeczywistych (dodatnich): 1,2,3,4,5,6,7,8,9,666. Teraz program powinien "zapytać nas", które elementy z listy R mamy zsumować - podajemy przedział np. <3, 8> - czyli od 3 do 8 numeru elementu listy, w naszym wypadku będzie to: 708. No i wyświetlamy wynik.

Tak ja to rozumiem.

Wielo:
Do ćwiczenia sobie programowania, nie tylko w Pythonie, bardzo dobry jest:

Polski SPOJ

Trzeba tylko czasem troszkę kombinować, bo ich elektroniczny sędzia ma często problemy z NZEC* jeśli chodzi o Pythona. No i nie wszystkie zadania są do zrobienia w Pythonie - ale to raczej problemu nie stanowi, zadań jest od groma. Plus jest taki, że jak pójdziecie na Politechnikę (przynajmniej w moim mieście) to właśnie tym męczą studentów ;).

*non-zero exit code

Katharsis:
Materiały pochodzą ze Studenckiego Koła Naukowego Linuksa i Wolnego Oprogramowania - Politechnika Śląska.

http://kolo.linux.rybnik.pl/Warsztaty/Python/p1.pdf

Nawigacja

[0] Indeks wiadomości

[#] Następna strona