====== 5. Pole, řetězce, soubory ======
===== Najdi a změň =====
def my_find(a, b):
'funkce najde retezec b v retezci a'
if len(a) < len(b):
return -1 # zcela jiste v a neni b
for i in range(0, (len(a)-len(b))+1):
print("{} {}".format(i, a[i:i+len(b)]))
if a[i:i+len(b)] == b:
return i
return -1
def my_replace(a, b, c):
'funkce nahradi v a retezec b retezcem c'
x = my_find(a, b)
if x < 0: return -1
return a[:x] + c + a[x+len(b):]
a = my_find("Ahoj", "oj") # a = 2
print(a)
a = my_find("Ahoj svete jak se mas", "svete")
print(a)
b = my_replace("Ahoj svete jak se mas", "svete", "XXX")
print(b)
===== Načtení dat ze souboru, hledání maxim =====
def nacti_data(filename):
'funkce pro nacteni rady celych cisel ze souboru'
f = open(filename, 'r')
a = f.readline()
f.close() # uzavreni souboru
return list(map(int, a.split()))
def najdi_nejvetsi(pole):
'hledam nejvetsi cislo z pole kladnych celych cisel'
maximum = -1
index = 0
for i in range(len(pole)):
if pole[i] > maximum:
maximum = pole[i]
index = i
return maximum, index
def najdi_druhe_nejvetsi(pole):
'hledam druhe nejvetsi cislo z pole kladnych cisel'
(a, b) = najdi_nejvetsi(pole)
c = pole[:]
c[b] = 0
return najdi_nejvetsi(c)
a = nacti_data("data.txt")
print(a)
b = najdi_nejvetsi(a)
print(b)
c = najdi_druhe_nejvetsi(a)
print(c)
===== Načtení matice ze souboru =====
def tisk_2d(pole):
'tisk 2D matice celych cisel'
for i in range(len(pole)):
for j in range(len(pole[i])):
print(str(pole[i][j]).rjust(3), end=" ")
print()
f = open("sloupec.txt", "r");
a = []
for line in f:
# print(line)
a.append(int(line))
print(a)
f.close()
# nacteni 2D matice
f = open("matice.txt", "r")
b = []
for line in f:
b.append(list(map(int, line.split())))
# print(b)
tisk_2d(b)