有一組字串表示嵌套函式呼叫的串列:
# (string, number of nested calls)
tests = [('f1(p1)', 0), ('f1(f2(p1, p2))', 1), ('f1(p1, f2(p2, f3(f4(p1), p2), p1)', 3)]
如何撰寫一個函式來測驗一個字串是否包含超過 N 個嵌套函式呼叫?
只有有效的函式呼叫。
uj5u.com熱心網友回復:
真正的答案是,您需要一個完整的語言標記器來處理決議函式呼叫的所有情況,其中(和)可能在字串或元組內,換行符或空格可能會以奇怪的方式拆分事物。
為了好玩.. 僅決議格式正確的示例,(在任何結束括號之前計算左括號)。
tests = [('f1(p1)', 0), ('f1(f2(p1, p2))', 1), ('f1(p1, f2(p2, f3(f4(p1), p2), p1)', 3)]
N = 2
for ts,tn in tests:
for s in ts.split(')'):
if s.count('(') > N:
print(ts, 'has more than', N, 'nested funcs')
輸出最后一個運算式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418873.html
標籤:
上一篇:如何檢測字串中沒有空格的關鍵字?
