记一次python刚上手的排查记录

工作中使用的是Java,它和python差别并不大,寒假在家准备重新看一下python。今天在做练习,做到一题不是很难的,但是死活没有做出来,将排查的方法记录下来,希望能对看到这篇文章的你有所帮助。

1.最初

# 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
# 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
# 因为153=1的三次方+5的三次方+3的三次方。
# 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
# 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
# 因为153=1的三次方+5的三次方+3的三次方。
import math

def check_narcissistic_number(number):
    hundred = number / 100
    number %= 100
    ten = number / 10
    digit = number % 10
    if (math.pow(hundred, 3) + math.pow(ten, 3) + math.pow(digit, 3)) == number:
        return True
    return False

for i in range(100, 1000):
    if(check_narcissistic_number(i)):
        print(i)

打印出来却什么也没有,我首先怀疑的是我取出个十百的方法
“机智“的我打印了它们三者的值,我用了一个很蠢的方法打印

print("%d   %d   %d"%(hundred, ten, digit))

结果拿153试验,发现打出来的是1 5 3.???
那是哪里有问题?之后我怀疑是我math.pow(hundred,3)使用错了。

print(math.pow(hundred, 3) + math.pow(ten, 3) + math.pow(digit, 3))

结果打印出来发现是179.458577
我将其强转成整型 还是不行。
我将其中的一个打印出来

print(math.pow(hundred, 3))

结果发现是 3.5815 我有些懵,刚刚不是打印的是1吗
结果我使用math.pow(1,3) 打印出来是1
那刚才打印的?我好像发现我是调用的%d
于是我将

    print(hundred)	#1.53
    print(ten)		#5.3
    print(digit)	#3

我好像发现了问题,python里面的/和java里的不一样,它不是自动取整。于是我将 /改成了//

def check_narcissistic_number(number):
    hundred = number // 100
    number %= 100
    ten = number // 10
    digit = number % 10

    if (math.pow(hundred, 3) + math.pow(ten, 3) + math.pow(digit, 3)) == number:
        return True
    return False

前面的一串变成了153.0 将其强转了一下,结果还是没有成功,现在我才发现number已经被我改过了。找了一个中间变量,总算成功。

# 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
# 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
# 因为153=1的三次方+5的三次方+3的三次方。
import math

def check_narcissistic_number(number):
    hundred = number // 100
    number %= 100
    ten = number // 10
    digit = number % 10

    if int(math.pow(hundred, 3) + math.pow(ten, 3) + math.pow(digit, 3)) == number:
        return True
    return False

for i in range(100, 1000):
    if(check_narcissistic_number(i)):
        print(i)

最终的代码。
简单的一次问题排查。
总结一下:

  • java和python 还是有比较大的区别
    • java是强类型的,一个变量的类型一定是清楚的,而python则是一个弱类型的语言,不会显式去定义变量类型。所以一定要注意类型。
    • java里面的条件控制都是以{}为边界 而python则是以缩进符
  • 排查问题 一定要首先定位是哪里有问题,前期可以通过打断点,直接一步跳转到你认为有问题的地方,后期采用打log的方法去排查

debug一定要会,刚开始写 有点懵 加油

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值