Python代码在IDLE中工作,但在VS Code中不起作用

时间:2016-10-16 21:16:45

标签: python visual-studio-code

我现在开始学习Python并选择了Al Sweigart的“用Python自动化无聊的东西”来帮助我完成我的第一步。因为我非常喜欢Visual Studio Code的外观和感觉,所以我试图在本书的第一部分之后进行切换。

以下代码来自在线资料,因此应该是正确的。不幸的是,它在IDLE中工作正常但在VS Code中没有。

def isPhoneNumber(text):
    if len(text) != 12:
        return False  # not phone number-sized
    for i in range(0, 3):
        if not text[i].isdecimal():
            return False  # not an area code
    if text[3] != '-':
        return False  # does not have first hyphen
    for i in range(4, 7):
        if not text[i].isdecimal():
            return False  # does not have first 3 digits
    if text[7] != '-':
        return False  # does not have second hyphen
    for i in range(8, 12):
        if not text[i].isdecimal():
            return False  # does not have last 4 digits
    return True  # "text" is a phone number!

print('415-555-4242 is a phone number:')
print(isPhoneNumber('415-555-4242'))
print('Moshi moshi is a phone number:')
print(isPhoneNumber('Moshi moshi'))

我收到以下错误:

    415-555-4242 is a phone number: 
    Traceback (most recent call last):   
File "/Users/.../isPhoneNumber.py", line 20, in <module>
            print(isPhoneNumber('415-555-4242'))   
File "/Users/.../isPhoneNumber.py", line 5, in isPhoneNumber
            if not text[i].isdecimal(): AttributeError: 'str' object has no attribute 'isdecimal'

我很高兴你的建议让它发挥作用。我已经安装了Python扩展并用pip3安装了建议的东西。

提前致谢。

1 个答案:

答案 0 :(得分:1)

只有Unicode字符串具有isdecimal(),因此您必须将其标记为。

要在python中将字符串转换为unicode字符串,您可以这样做:

s = "Hello!"
u = unicode(s, "utf-8")  

在您的问题中,您只需将print(isPhoneNumber('415-555-4242'))更改为print(isPhoneNumber(u'415-555-4242')),将print(isPhoneNumber('Moshi moshi'))更改为print(isPhoneNumber(u'Moshi moshi'))

  

U&#39;串&#39;在python中确定该字符串是一个unicode字符串