为什么在使用反向操作时我的列表被赋值为“ none”?

时间:2018-11-24 23:53:43

标签: python python-3.x

我是python的新手,我正在尝试创建一个程序,该程序将告诉用户输入的单词是否是回文。当我执行代码时,它输出以下内容:

  

请输入一个单词。我会告诉你这个词是否是回文词: hannah

     

请输入一个单词。我会告诉你这个词是否是回文:hannah   这个词不是回文

     

['n','a','h']

     

以退出代码0结束的过程

我不确定为什么cal_tableRev中的列表被保存为“ none”。关于如何解决此问题的任何想法将对您有很大帮助!

user_input = input("Please enter a word. I will tell you if that word is a palindrome or not: ").lower()
cal_table1 = []
cal_table2 = []


for letter in user_input:
    cal_table1.append(letter)

inputSize = len(cal_table1)
Calsize = inputSize / 2

if inputSize % 2 != 0:
    print("The word has an odd number of letters and, therefore, it is not a palindrome. Please enter a new word")

for letters in cal_table1[0:int(Calsize)]:
    cal_table2.append(letters)

cal_tableRev = str(cal_table2.reverse())

frontHalf = str(cal_tableRev)
backHalf = str(cal_table2)
calulated_word = str(frontHalf) + str(backHalf)

if user_input == calulated_word:
    print("This word is a palindrome")
else:
    print("This word is not a palindrome")

print(calulated_word)

2 个答案:

答案 0 :(得分:0)

函数reverse()反转给定列表,但返回值None,然后将其分配给cal_tableRev 尝试:

cal_tableRev = copy.deepcopy(cal_table2)
cal_tableRev.reverse() #reversing without assigning the None value
cal_tableRev=str(cal_tableRev)

答案 1 :(得分:0)

看起来您正在做很多工作,python可以使您更轻松。看看我在python控制台中运行的以下命令:

>>> word='tenet'
>>> backwards=''.join(reversed(word))
>>> word == backwards
True

>>> word='pizza'
>>> backwards=''.join(reversed(word))
>>> word == backwards
False

>>> word
'pizza'
>>> backwards
'azzip'