Информатика · ҰБТ сұрағы №16266
Стектік калькулятор кері поляк жазбасындағы өрнекті орындайды (токендер бос орынмен бөлінген): 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 программалау тілінде алгоритмдерді программалау» тақырыбынан тағы