如何在python中的字符串中返回一个更改int?

时间:2014-10-30 04:24:54

标签: python string int return-value

我正在研究的功能应该告诉用户他们给出的数字是否是完美数字(即等于其因子总和的一半)。如果用户给出数字8,则输出应如下所示:

8 is not a perfect number

但我无法弄清楚要在return语句中放入什么来使int(根据用户输入而改变)打印出来的字符串。到目前为止,代码看起来像这样:

#the代码是另一个更大的函数,这是elif的原因

 elif(message == 2):
    num1 = int(input("""Please enter a positive integer :"""))
    while(num1 <= 0):
        print("Number not acceptable")
        num1 = int(input("""Please enter a positive integer :"""))
    thisNum = isPerfect(num1)
    if(thisNum == True):
        return num1, is a perfect number
    elif(thisNum == False):
        return num1 is not a perfect number

def isPerfect(num1):
    sumOfDivisors = 0
    i = 0
    listOfDivisors = getFactors(num1)
    for i in range(0, len(listOfDivisors) - 1):
        sumOfDivisors = sumOfDivisors + listOfDivisors[i]
        i += 1
    if(sumOfDivisors / 2 == num1):
        return True
    else:
        return False

如果我要做返回(num1,“不是一个完美的数字”)它就会出现 (8,'不是一个完美的数字')

3 个答案:

答案 0 :(得分:1)

将整数转换为字符串并连接语句的其余部分:

return str(num1) + ' is not a perfect number'

答案 1 :(得分:1)

return "%d is not a perfect number" % number

您可以使用%s进行字符串格式化。无论如何,还有其他一些描述String Formating Operators

的方法

答案 2 :(得分:0)

您可以使用.format()迷你语言,同时简化代码:

 elif(message == 2):
    num1 = int(input("""Please enter a positive integer :"""))
    while(num1 <= 0):
        print("Number not acceptable")
        num1 = int(input("""Please enter a positive integer :"""))
    if isPerfect(num1):
        return '{} is a perfect number'.format(num1)
    else:
        return '{} is not a perfect number'.format(num1)

同样在您的其他方法中,只需返回比较结果:

def isPerfect(num1):
    sumOfDivisors = 0
    listOfDivisors = getFactors(num1)
    for i listOfDivisors:
        sumOfDivisors += i
    #if(sumOfDivisors / 2 == num1):
    #    return True
    #else:
    #    return False
    return sumOfDivisors / 2 == num1

另外,我建议阅读PEP-8,这是Python的样式指南。