我在做核心課程。練習基於python腳本,我使用的是Visual Studio 2015.在某些時候,我們必須使用庫nltk。我正在嘗試調試一些我正在調用的代碼(我有源代碼),並且發生了一些非常奇怪的事情:斷點工作,但是我不能使用F10來跳線。它只是跳過所有的腳本。我可以在沒有任何問題的情況下調試我的任何腳本,但不能調用庫中的腳本。 所以我的問題是:是否有任何選項來「解鎖」腳本,以便我可以逐行調試? 我是新來的蟒蛇,我無法找到任何類似的谷歌。我發佈代碼以防萬一有關。 我要調試的功能是「迴應」Python腳本鎖定在VS 2015中進行調試
from __future__ import print_function
import re
import random
from nltk import compat
reflections = {
"i am" : "you are",
"i was" : "you were",
"i" : "you",
"i'm" : "you are",
"i'd" : "you would",
"i've" : "you have",
"i'll" : "you will",
"my" : "your",
"you are" : "I am",
"you were" : "I was",
"you've" : "I have",
"you'll" : "I will",
"your" : "my",
"yours" : "mine",
"you" : "me",
"me" : "you"
}
class Chat(object):
def __init__(self, pairs, reflections={}):
self._pairs = [(re.compile(x, re.IGNORECASE),y) for (x,y) in pairs]
self._reflections = reflections
self._regex = self._compile_reflections()
def _compile_reflections(self):
sorted_refl = sorted(self._reflections.keys(), key=len,
reverse=True)
return re.compile(r"\b({0})\b".format("|".join(map(re.escape,
sorted_refl))), re.IGNORECASE)
def _substitute(self, str):
return self._regex.sub(lambda mo:
self._reflections[mo.string[mo.start():mo.end()]],
str.lower())
def _wildcards(self, response, match):
pos = response.find('%')
while pos >= 0:
num = int(response[pos+1:pos+2])
response = response[:pos] + \
self._substitute(match.group(num)) + \
response[pos+2:]
pos = response.find('%')
return response
def respond(self, str):
# check each pattern
for (pattern, response) in self._pairs:
match = pattern.match(str)
# did the pattern match?
if match:
resp = random.choice(response) # pick a random response
resp = self._wildcards(resp, match) # process wildcards
# fix munged punctuation at the end
if resp[-2:] == '?.': resp = resp[:-2] + '.'
if resp[-2:] == '??': resp = resp[:-2] + '?'
return resp
# Hold a conversation with a chatbot
def converse(self, quit="quit"):
input = ""
while input != quit:
input = quit
try: input = compat.raw_input(">")
except EOFError:
print(input)
if input:
while input[-1] in "!.": input = input[:-1]
print(self.respond(input))
任何幫助將是非常讚賞。 謝謝。
編輯: 我解決了我的問題,但我還沒有找到問題的解決方案。我使用PyCharm(如第一條評論中所建議的),它的功能就像一個魅力。我現在可以調試一切,沒有任何問題。根本沒有文件修改。我傾向於認爲這是Visual Studio Python工具中的一個錯誤。
你自定義的快捷鍵?看來F10是「跳過」,你的意思是你想在Debug菜單下使用「Step Into(F11)」?如果添加一個斷點,如果調試它,結果如何?其他成員使用PyCharm而不是PTVS作爲解決方法:http://stackoverflow.com/questions/37240431/python-tools-visual-studio-step-into-not-working –
嗨,傑克。我沒有自定義我的鍵盤,我保留了所有的默認設置。我不能在該腳本中跳過或跳入,但是我可以在我編寫的任何腳本中執行此操作。如果我添加一個斷點,它會停止,我可以看到變量的值等,但是如果我按下F10跳到下一行,它只會跳轉到該函數中。唯一有效的是,如果我在函數內的每一行中設置一個斷點,並且我按F5逐一跳轉。它只是沒有任何意義。我會嘗試PyCharm併發布結果。謝謝 – MBRebaque
不客氣。您可以與我分享一個簡單的示例,我將使用相同的VS Environment進行調試,因此我們可以知道它是否與VS調試器工具或特定項目類型相關。另一個建議,就像我以前的評論一樣,使用PyCharm之類的其他方式代替它作爲解決方法。如果你得到任何信息,請隨時讓我知道:) –