我正在研究的功能应该告诉用户他们给出的数字是否是完美数字(即等于其因子总和的一半)。如果用户给出数字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,'不是一个完美的数字')
答案 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的样式指南。