Python回文检测报'int' object is not iterable如何修复及math库是否必要
问题解答
1. math库导入必要性判断
完全不需要。你当前的代码没有调用任何math模块提供的功能,这行导入语句可以直接删除。
2. 现有代码的错误点
- 语法错误:
length是计算得到的整数,Python中整数不属于可迭代对象,for i in length写法会直接抛出类型错误,需要使用range(length)生成可迭代的整数序列才能正常遍历。 - 逻辑错误:你设计的双层循环没有对输入字符串的前后对应字符做对比,现有逻辑只要输入字符串长度≥1,运行后
key一定会被赋值为True,最终永远输出not palindrome,完全无法实现回文判断功能。
3. 正确实现方案
极简切片实现(推荐)
利用Python字符串切片反转特性,一行即可完成判断:
# 回文判断 wrd = input("give me a word ") print("palindrome" if wrd == wrd[::-1] else "not palindrome")
循环实现(符合遍历逻辑的需求)
只需要单层循环对比字符串前半段和后半段的对应字符即可,不需要嵌套循环:
wrd = input("give me a word ") is_palindrome = True # 只需要遍历到字符串长度的一半即可完成全部对比 for i in range(len(wrd) // 2): if wrd[i] != wrd[-(i + 1)]: is_palindrome = False break print("palindrome" if is_palindrome else "not palindrome")
内容的提问来源于stack exchange,提问作者Dimitris Malkotsis
相关产品推荐
相关产品推荐

