「抚子」语言的调试功能??
之前 初步完成猜数字 后,在社区提了个问:请问如何调试。不久开发者答复了且给了 ??的用法说明文档,从中可见不仅可输出各种量值且可以 定制问号的语义。
加两行在猜数字例程的循环开头:
想的=(6の乱数)+1
猜的=「你猜?」と尋ねる。
後判定で繰り返す
?? 猜的
?? 猜的==想的
もし、猜的>想的ならば
猜的=「大了,再猜?」と尋ねる。
違えば、もし、猜的<想的ならば
猜的=「小了,再猜?」と尋ねる。
違えば
「中了!」と表示
ここまで
ここまで、(猜的≠想的)の間。
从3猜到6输出如下,猜的=「小了,再猜?」と尋ねる。
取到6后,在 ここまで、(猜的≠想的)の間
判断为否后直接跳出循环因此没有再执行到 ?? 的两行:
main.nako3(5): 3
main.nako3(6): false
main.nako3(5): 4
main.nako3(6): false
main.nako3(5): 5
main.nako3(6): false
如果加在循环末尾:
想的=(6の乱数)+1
猜的=「你猜?」と尋ねる。
後判定で繰り返す
もし、猜的>想的ならば
猜的=「大了,再猜?」と尋ねる。
違えば、もし、猜的<想的ならば
猜的=「小了,再猜?」と尋ねる。
違えば
「中了!」と表示
ここまで
?? 猜的
?? 猜的==想的
ここまで、(猜的≠想的)の間。
先猜3再猜中4的输出:
main.nako3(13): 4
main.nako3(14): true
另想到,如果能输出顺序执行的语句列表,也许会方便调试,比如先猜3再猜中4的大概过程:
行1 想的=(6の乱数)+1
行2 猜的=「你猜?」と尋ねる。
【输入】 3
行4 後判定で繰り返す
行5 もし、猜的>想的ならば
行7 違えば、もし、猜的<想的ならば
行8 猜的=「小了,再猜?」と尋ねる。
【输入】 4
行13 ここまで、(猜的≠想的)の間。
行9 違えば
行10 「中了!」と表示
行13 ここまで、(猜的≠想的)の間。
搜了下 发现 python 的 trace 就可以,比如test.py:
想的 = 1
for i in range(3):
if i != 想的:
print(i+1)
else:
break
print('跑')
% python -m trace -t test.py
输出如下:
--- modulename: test, funcname: <module>
test.py(1): 想的 = 1
test.py(2): for i in range(3):
test.py(3): if i != 想的:
test.py(4): print(i+1)
1
test.py(2): for i in range(3):
test.py(3): if i != 想的:
test.py(6): break
test.py(7): print('跑')
跑
break之前居然不是else。