Стектік калькулятор кері поляк жазбасындағы өрнекті орындайды (токендер бос орынмен бөлінген):
st = []
def run(src):
for t in src.split():
if t.isdigit():
st.append(int(t))
elif t == "dup":
st.append(st[-1])
elif t == "swap":
st[-1], st[-2] = st[-2], st[-1]
else:
b = st.pop()
a = st.pop()
st.append(a + b if t == "+" else a - b if t == "-" else a * b)
return st[-1]
Әр сұрақ алдыңғы сұрақтарға тәуелсіз, st жаңадан [] болып басталады деп есептеңіз (бір сұрақ ішіндегі шақырулар st-ті ортақ пайдаланады).
run("5 2 *") орындалып, содан кейін print(run("3 +"), st) шақырылады. Нәтиже қандай?
Дұрыс жауабы мен түсіндірмесі
Жауабы: 13 [13]
st глобал: бірінші шақырудан кейін [10]. Екінші шақыру 3-ті қосып [10, 3], «+» оларды 13-ке біріктіреді: [13].
«Алгоритмдер және программалау» тақырыбынан тағы
- Оқушылар тізімі: Aru (B, 82); Bek (A, 75); Dana (B, 91); Erlan (A, 75); Gul (C, 60); Hana (A, 91); Iman (B, 82...
- Функция берілген: def c(n, k): if k == 0 or k == n: return 1 return c(n - 1, k - 1) + c(n - 1, k) c(6, 3) шақы...
- «algoritm» жолын «logarifm» жолына түрлендіру үшін қажет Левенштейн қашықтығы (бір таңбаны енгізу, жою немесе...
- Программа орындалғанда қандай екі сан шығады? from functools import lru_cache @lru_cache(maxsize=None) def f(n...
- Графтың төбелері 1-ден 10-ға дейін нөмірленген, қырлары: 1–2, 2–3, 4–5, 6–7, 7–8, 8–6, 9–9, 3–1. Графты байлан...
- total[name] = total.get(name, 0) + int(val) жолы total[name] += int(val) жолымен ауыстырылды. Бағдарламаның жұ...
- log тізіміне қай жол қосылса, name, val = rec.split(":") жолында ValueError пайда болады?
- Алгоритмдердің қасиеттері туралы дұрыс тұжырымдарды таңдаңыз.