Стектік калькулятор кері поляк жазбасындағы өрнекті орындайды (токендер бос орынмен бөлінген):
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("6 -2 *") шақырылса, не болады?
Дұрыс жауабы мен түсіндірмесі
Жауабы: IndexError пайда болады
"-2".isdigit() жалған (минус таңбасы бар), сондықтан токен оператор ретінде өңделеді: b = 6, ал келесі st.pop() бос тізімде IndexError береді.
«Python программалау тілінде алгоритмдерді программалау» тақырыбынан тағы
- print(run("7 3 - 2 *")) қандай мән шығарады?
- print(len(total), total["u1"], len(log)) нәтижесі қандай?
- Код орындалғанда консольге қандай жол шығады? g = (x * 2 for x in range(5)) print(sum(g), sum(g), list(g))
- print([r["name"] for r in sorted(rows, key=lambda r: int(r["score"] or 0), reverse=True)[:3]]) қандай нәтиже б...
- Келесі фрагмент орындалғанда консольде не көрінеді? m = [[3, 1, 4], [1, 5, 9], [2, 6, 5]] print([sum(c) for c...
- Төмендегі код қандай нәтиже береді? from collections import deque d = deque([1, 2, 3, 4, 5]) d.rotate(2) d.app...
- Python өрнегінің нәтижесі қандай? print(1 < 2 < 3, 1 < 3 > 2, 3 > 2 > 2, 1 == 1 != 2, 2 < 1 < 3 / 0)
- print(len(rows), repr(rows[3]["score"])) қандай нәтиже шығарады?