【发布时间】:2020-10-10 19:11:09
【问题描述】:
我是 Python 编程新手,我正在编写一个程序来检查最多包含六位数字的整数是否是回文。这是我的代码:
def digits(n):
a = (n%10)/1
b = ((n-a)%100)/10
c = ((n-a-10*b)%1000)/100
d = ((n-a-10*b-100*c)%10000)/1000
e = ((n-a-10*b-100*c-1000*d)%100000)/10000
f = ((n-a-10*b-100*c-1000*d-10000*e)%1000000)/100000
n = 123321
digits(n)
def palindrome(n):
if a==f and b==e and c==d:
return True
print("is a palindrome")
else:
return False
print("is not a palindrome")
palindrome(n)
函数 digits( ) 给出了我输入的数字的前六位。回文函数检查第一个数字是否等于第六个数字,第二个到第五个数字,依此类推。当我尝试运行代码时收到以下错误消息:
Traceback (most recent call last):
File "<string>", line 20, in <module>
File "<string>", line 13, in palindrome
NameError: name 'a' is not defined
>
它说变量'a'没有定义。我认为在运行 digits() 函数时定义了“a”。这里出了什么问题?
【问题讨论】:
-
您正在分配数字函数的本地变量。我建议你从你的数字函数返回一个列表或字典,你可以将它传递给回文函数
-
我不确定你的意思。你是说我应该在函数之外定义 a、b、c、d、e、f 吗?
-
@DS
a、b、c、d、e和f在函数digits()中定义。所以它们在palindrome()内部是不可访问的,因为它不知道它们 -
@D_S 我看到 Maxijazz 发布了一个答案,
digits返回了一个列表,尽管我建议您调整该答案以考虑到 Thierry Lathuille 在其下方的评论。
标签: python palindrome