首页 > 解决方案 > 如何在 s.isdigit() 命令上识别像 -1000 这样的数字?

问题描述

我的问题很简单:

如何让 python3 识别例如 s.isdigit() 上的 -1000 或某种命令?我的程序必须能够将 -1000 分隔为数字分类...我一直在努力寻找如何做到这一点...我应该使用什么命令来识别减号 (-) 符号作为号码?

line_number=int(input())
counter=0
counter_2=0
counter_hashtag=0
counter_3=0
counter_emoticons=0
list_strings=[]
i=0


while(counter<line_number):
    a=str(input())
    counter=counter+1
    list_strings.append(a)

for i in range(0,len(list_strings)):
    try:
        int(list_strings[i])
        is_int = True
        print("Hello")
    except ValueError:
        is_int = False
    if(list_strings[i].isalpha() or is_int):
        print(list_strings[i])
    else:
        if((list_strings[i])[0]=='#'):
            if((list_strings[i])[1:].isalpha()):
                counter_hashtag=counter_hashtag+1
             else:
                counter_emoticons=counter_emoticons+1
        else:
            if(not (list_strings[i])[0]=="-"):
                counter_emoticons=counter_emoticons+1
    counter_3=counter_3+1
    ############################################################################
    ############################################################################
    if(counter_hashtag>1):
        print(counter_hashtag, "hashtags were removed.")
    if(counter_hashtag==1):
        print("1 hashtag was removed.")
    if(counter_emoticons>1):
        print(counter_emoticons, "emoticons were removed.")
    if(counter_emoticons==1):
        print("1 emoticon was removed.")

标签: python-3.x

解决方案


您可以简单地在构造函数try-except周围使用块int来测试字符串是否包含有效整数:

try:
    int(list_strings[i])
    is_int = True
except ValueError:
    is_int = False

因此,您的for循环应修改如下:

for i in range(0,len(list_strings)):
    try:
        int(list_strings[i])
        is_int = True
        print("Hello")
    except ValueError:
        is_int = False
    if(list_strings[i].isalpha() or is_int:
        print(list_strings[i])
    else:
        if((list_strings[i])[0]=='#'):
            if((list_strings[i])[1:].isalpha()):
                counter_hashtag=counter_hashtag+1
            else:
                counter_emoticons=counter_emoticons+1
        else:
            if(not (list_strings[i])[0]=="-"):
                counter_emoticons=counter_emoticons+1
    counter_3=counter_3+1

推荐阅读