import math
import time
import msvcrt
listaSummat = [58667, 68283, 64141, 69169, 67564, 63729, 57461, 50514, 49078, 41270, 33328, 33181, 22058, 16443, 19680, 28220, 46548, 54913, 59232, 53046, 33801, 21281, 18002, 16852, 14723, 25344, 41021, 42314, 32321, 24947, 40411, 64014, 68201, 65541, 70605, 61078, 34269, 18058, 19618, 21052, 19631, 18710, 23940, 32377, 41888, 39379, 28622, 30106, 38148, 44813, 37202, 31083, 48031, 70527, 66942, 53957, 49584, 49344, 39057, 28039, 34540, 30821, 25220, 19045, 22785, 23319, 34534, 40534, 29218, 45518, 61947, 65846, 73052, 76934, 75406, 75832, 75281, 72261, 67047, 64983, 54868, 36847, 23436, 25757, 34897, 36784, 25072, 22286, 34411, 43688, 41562, 30050, 38453, 54494, 49373, 38474, 42651, 51908, 67251, 79645]
käytetytNumerot = [770, 550, 1469, 1022, 1500, 1262, 864, 1090, 1091, 668, 1407, 732, 395, 626, 1802, 974, 1119, 1480, 527, 1510, 1782, 1848, 1683, 1629, 1929, 1382, 1964, 1467, 1781, 1275, 1244, 1081, 1654, 1743, 1144, 1899, 1002, 1785, 1873, 1689, 1944, 2022, 1989, 189, 1657, 1876, 2011, 1788, 1977, 1976, 1674, 1578, 1688, 1922, 1963, 1530, 1501, 300, 1875, 346, 1987, 704, 1932, 495, 1486, 1356, 1890, 1690, 1750, 1369, 1569, 1742, 1640, 1320, 1879, 1973, 943, 1201, 1357, 2002, 521, 484, 1045, 1843, 1871, 1870, 1934, 1956, 1891, 1943, 1949, 1861, 1953, 1921, 1957, 1952, 2001, 1893, 1884, 1560, 1540, 1534, 1521, 1502, 1443, 1478, 1465, 1464, 1546, 1552, 1439, 1466, 1477, 1489, 1765, 1481, 1468, 1491, 1493, 1482, 1200, 1101, 878, 1678, 1659, 1874, 1766, 1911, 1679, 1912, 1696, 1784, 1856, 1643, 1043, 1111, 1340, 1289, 1199, 1291, 1234, 1432, 1057, 1444, 1433, 1422, 1141, 1414, 1202, 1303, 1314, 1190, 1254, 1354, 1106, 1397, 1248, 980, 1042, 1011, 1089, 777, 707, 1351, 1206, 1007, 1018, 1207, 1230, 1235, 1279, 1151, 1181, 1173, 1094, 1103, 1092, 1120, 1050, 1121, 1146, 1165, 1034, 1456, 1457, 1461, 1431, 1434, 1435, 1789, 1000, 1001, 1003, 1013, 999, 1019, 1015, 1021, 981, 1014, 1004, 1017, 992, 782, 799, 765, 785, 775, 766, 755, 744, 733, 722, 789, 790, 691, 724, 560, 360, 910, 1005, 432, 496, 800, 801, 802, 803, 804, 805, 700, 901, 865, 746, 747, 748, 749, 751, 783]
summa = 0
aloitusluku = 0
nykyinenVäli = 1
käynissä = True
def tarkistaEtteiSana(t):
väli = str(t)
if väli.isnumeric():
return True
else:
return False
print(käytetytNumerot)
def summaaVäli(aloituskohta, välinNumero):
global käytetytNumerot
global summa
summa = 0
if aloituskohta + 43 <= len(käytetytNumerot):
print("Tarpeeksi numeroita koko välin summaamiseen")
for i in range(aloituskohta, aloituskohta + 43):
summa += käytetytNumerot[i]
else:
print("Ei tarpeeksi numeroita koko välin summaamiseen")
for i in range(aloituskohta, len(käytetytNumerot)):
summa += käytetytNumerot[i]
print("välin summa on " + str(summa) + " tarvitaan siis vielä " + str(listaSummat[välinNumero - 1] - summa) + " lisää")
def näytäVäli(aloituskohta):
global käytetytNumerot
if aloituskohta + 43 < len(käytetytNumerot):
for i in range(aloituskohta, aloituskohta + 43):
print(str(käytetytNumerot[i]) + " ", end=' ')
print("\n")
else:
for i in range(aloituskohta, len(käytetytNumerot)):
print(str(käytetytNumerot[i]) + " ", end=' ')
print("\n")
def näytäAlku(aloituskohta, väli):
global käytetytNumerot
if aloituskohta < len(käytetytNumerot):
print("Välin " + str(väli) + " Aloittavassa kohdassa on numero " + str(käytetytNumerot[aloituskohta]))
else:
print("Välin " + str(väli) + " Aloittavassa kohdassa ei ole mitään. Väli ei siis ole vielä alkanut.")
def montaMahtuu(aloituskohta, väli):
if aloituskohta + 43 <= len(käytetytNumerot):
print("Väliin " + str(väli) + " ei mahdu enään yhtään uutta lukua")
else:
print("Väliin " + str(väli) + " mahtuu vielä " + str((aloituskohta + 43) - len(käytetytNumerot)) + " numeroa")
summaaVäli(0, 1)
class Testi(object):
def __init__(self, *args, **kwargs):
pass
def __enter__(self, *args, **kwargs):
pass
def __exit__(self, type, value, traceback):
print(käytetytNumerot)
with Testi() as t:
while käynissä == True:
komento = input()
Ei = False
splitattuKomento = komento.split()
if splitattuKomento[0] == "lisää":
if tarkistaEtteiSana(splitattuKomento[1]):
numero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
print(numero)
for l in range(len(käytetytNumerot)):
if (käytetytNumerot[l] == numero):
print("numero " + str(numero) + " on jo käytetty.")
Ei = True
break
if Ei == False:
käytetytNumerot.append(numero)
print("lisätty")
elif splitattuKomento[0] == "korvaa":
Ei = True
if tarkistaEtteiSana(splitattuKomento[1]):
korvattaNumero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
if tarkistaEtteiSana(splitattuKomento[2]):
numeroJollaKorvataan = int(splitattuKomento[2])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
for z in range(len(käytetytNumerot)):
if (käytetytNumerot[z] == numeroJollaKorvataan):
Ei = True
break
Ei = False
if Ei == True:
print("Numero " + str(numeroJollaKorvataan) + " on jo käytetty. Yritä uudelleen toisella numerolla")
else:
for h in range(len(käytetytNumerot)):
if käytetytNumerot[h] == korvattaNumero:
käytetytNumerot[h] = numeroJollaKorvataan
print("korvattiin numero " + str(korvattaNumero) + " numerolla " + str(numeroJollaKorvataan))
Ei = False
break
if Ei == True:
print("numeroa " + str(korvattaNumero) + " ei ole listassa. Mitä oikein ajattelet?")
elif splitattuKomento[0] == "summa":
if tarkistaEtteiSana(splitattuKomento[1]):
välinNumero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
aloituskohta = (välinNumero - 1) * 20
summaaVäli(aloituskohta, välinNumero)
elif splitattuKomento[0] == "näytä":
if tarkistaEtteiSana(splitattuKomento[1]):
välinNumero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
aloituskohta = (välinNumero - 1) * 20
näytäVäli(aloituskohta)
elif splitattuKomento[0] == "vaihda":
if tarkistaEtteiSana(splitattuKomento[1]):
vaihdettavanumero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
if tarkistaEtteiSana(splitattuKomento[2]):
toinenvaihdettavanumero = int(splitattuKomento[2])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
Ei = True
for h in range(len(käytetytNumerot)):
if käytetytNumerot[h] == vaihdettavanumero:
Ei = False
for k in range(len(käytetytNumerot)):
if käytetytNumerot[k] == toinenvaihdettavanumero:
käytetytNumerot[k] = vaihdettavanumero
käytetytNumerot[h] = toinenvaihdettavanumero
print("Vaihdettiin numero " + str(vaihdettavanumero) + " numerolla " + str(toinenvaihdettavanumero))
Ei = False
break
Ei = True
if Ei == True:
print("numeroa " + str(toinenvaihdettavanumero) + " ei löytynyt käytetyistä numeroista. Mitä yrität tehdä?")
Ei = False
break
else:
break
if Ei == True:
print("vaihdettavaa numeroa " + str(vaihdettavanumero) + " ei löytynyt käytetyistä numeroista. Mitä yrität tehdä?")
elif splitattuKomento[0] == "alkaa":
if tarkistaEtteiSana(splitattuKomento[1]):
merkittyVäli = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
aloituskohta = (merkittyVäli - 1) * 20
näytäAlku(aloituskohta, merkittyVäli)
elif splitattuKomento[0] == "paikanna":
if tarkistaEtteiSana(splitattuKomento[1]):
haettavaNumero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
Ei = True
for f in range(len(käytetytNumerot)):
if haettavaNumero == käytetytNumerot[f]:
print("Paikannettava numero on " + str(f + 1) + " käytetyissä numeroissa.", end=' ')
if f != 0 and f != len(käytetytNumerot) - 1:
print("Sen takana on luku " + str(käytetytNumerot[f - 1]) + " ja edessä on luku " + str(käytetytNumerot[f + 1]))
elif f != 0:
print("Sen takana on luku " + str(käytetytNumerot[f - 1]))
else:
print("Sen edessä on luku " + str(käytetytNumerot[f + 1]))
Ei = False
break
if Ei == True:
print("Numeroa " + str(haettavaNumero) + " ei löytynyt käytetyistä numeroista. Mitä yrität?")
elif splitattuKomento[0] == "vie":
väliKäytetyt = käytetytNumerot.copy()
for o in range(1, 2024):
Ei = False
for t in range(len(väliKäytetyt)):
if o == väliKäytetyt[t]:
Ei = True
break
if Ei == False:
väliKäytetyt.append(o)
for u in range(len(väliKäytetyt)):
print(väliKäytetyt[u], end=' ')
print("\n")
elif splitattuKomento[0] == "mahtuu":
if tarkistaEtteiSana(splitattuKomento[1]):
välinNumero = int(splitattuKomento[1])
else:
print("Argumentit eivät olleet numeroita. Yritä uudelleen")
continue
aloituskohta = (välinNumero - 1) * 20
montaMahtuu(aloituskohta, välinNumero)