W pliku napisy.txt znajduje się 1000 napisów o długościach od 2 do 16 znaków, każdy napis w osobnym wierszu. W każdym napisie mogą wystąpić jedynie dwa znaki: „0” lub „1”. W języku python napisz program, za pomocą którego uzyskasz odpowiedzi na poniższe polecenia. Odpowiedzi zapisz w pliku zadanie4.txt a) Podaj, ile jest napisów o parzystej długości. b) Podaj, ile jest napisów, które zawierają taką samą liczbę zer i jedynek. c) Podaj, ile jest napisów składających się z samych zer, oraz podaj, ile jest napisów składających się z samych jedynek. d) Dla każdej liczby k = 2, 3, ...,16 podaj liczbę napisów o długości k znajdujących się w pliku napisy.txt, tzn. podaj, ile jest napisów 2-znakowych, ile jest napisów 3-znakowych itd.
W załączniku wstarczy zmienić .txt na .py ;)
parzyste = 0
rowno = 0
sameZera = 0
sameJedynki = 0
k = [0 for _ in range(15)]
with open('napisy.txt', 'r') as f:
for line in f.read().splitlines():
length = len(line)
k[length - 2] += 1
if length % 2 == 0:
parzyste += 1
zera = line.count('0')
jedynki = line.count('1')
if zera == jedynki:
rowno += 1
elif zera < 1:
sameJedynki += 1
elif jedynki < 1:
sameZera += 1
with open('zadanie4.txt', 'w') as f:
f.write("Liczba napisów parzystej długości - {}\n".format(parzyste))
f.write("Liczba napisów zwierające taką samą liczbę zer i jedynek - {}\n".format(rowno))
f.write("Liczba napisów zawierające same zera - {}\n".format(sameZera))
f.write("Liczba napisów zawierające same jedynek - {}\n".format(sameJedynki))
for i, x in enumerate(k):
f.write("Liczba napisów {} znakówych - {}\n".format(i+2, x))