while循环不在Python 3.4.3中执行

时间:2015-09-13 00:50:21

标签: python

我正在编写一个带字符串的函数,并确定它是否为整数。

在大多数情况下它运作良好。我唯一的问题是当我在数字前面使用+或 - 时。我以为我已经考虑到了我的while循环,但它似乎没有执行。这是我的代码:

def isInteger(sentence):
    """(str) -> bool
    takes veriable sentence, which is a string, and returns true if it is
    an integer
    >>> isInteger('75931')
    True
    >>> isInteger('345L55')
    False
    """
    value = True #Assume the string is a digit
    if len(sentence) > 0:
        sentence = sentence.strip()
    else:
        value = False
    if sentence[0] == '+' or sentence[0] == '-' or sentence[0].isdigit() == True:
        count = 1
        while count < len(sentence) and sentence[count].isdigit() == True:
            if sentence.isdigit() == True:
                count += 1
            else:
                value = False
                break
    else:
        value = False
        print(value) #test
    return value

2 个答案:

答案 0 :(得分:0)

如果字符串以+-开头,则if条件通过:

if sentence[0] == '+' or sentence[0] == '-' or sentence[0].isdigit() == True:

但是,while的条件仍然失败,因为您正在使用sentence[0].isdigit()进行测试。

一个简单的解决方法是在检查后跳过第一个字符:

if sentence[0] == '+' or sentence[0] == '-' or sentence[0].isdigit():
    count = 1
    sentence = sentence[1:]   # here

答案 1 :(得分:0)

while循环后的检查导致该值返回False,因为您正在检查整个句子。

if sentence.isdigit() == True:

改用它?

if sentence[count].isdigit() == True: