我正在试着适应python。我一直在尝试一些简单的活动,这些活动是我在教学时在c++初级课程中给出的。我做了一个涉及函数并编写了一个文件的例子,它可以完美地工作。我想这个会更简单。它的行为就像是在一个无声的无限循环中,但它甚至不让我跟踪它。有没有人能看到我哪里出了问题?
# Find Adam Numbers
def isAdamNumber(candidate):
isAdam = False
rev = reverse(candidate)
square = candidate * candidate
revsq = rev*rev
if revsq == reverse(square):
isAdam = True
return isAdam
def reverse(num):
rev=0
while num > 0:
rev = rev * 10 + num%10
num/=10
return rev
for x in range (11,25):
if isAdamNumber(x):
print(x, " is an adam number\n")发布于 2021-11-15 03:38:52
快速解决方法是使用整数除法版本//=更改/=
发布于 2021-11-15 03:34:53
在reverse函数内部,您将进入一个无限循环。num值将始终大于0,因此while循环将持续运行。在python中,您可以很轻松地获得函数的反转。将整数转换为字符串,并反转字符串,现在将字符串更改回整数。
def reverse(num):
num_str = str(num)[::-1]
return int(num_str)我认为这个函数定义可以解决你的问题。要可视化python以进行学习和教学,请使用this link
发布于 2021-11-15 04:28:44
这个问题已经被其他答案解决了,所以这里是切片的扩展和简化版本,它实际上没有使用切片
def reverse(num):
rev = ''
num = str(num)
for i in range(len(num) - 1, -1, -1):
rev += num[i]
return int(rev)这从字符串版num中的最后一个元素开始向后计数,并将num的所有元素(以相反的顺序)添加到rev.
https://stackoverflow.com/questions/69969096
复制相似问题