一个关于“回文联”的题
题目:编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
问:
我写的错在哪里?
input("请输入一个文联:")
a=input
b=len(a)
for each in range :
if a==a:
print ("这是一个回文联!")
else:
print("这根本不是一个回文联。。。")
请各位按我的思路,具体指点一下。标准答案,我看到FishC已经提供了。
谢谢! a=input("请输入一个文联:")
for each in range(len(a)):
if a==a:
print ("这是一个回文联!")
else:
print("这根本不是一个回文联。。。")
这个是根据你的思路稍微修改的,但其实你运行之后 你会发现这个代码还有能够改进的地方 本帖最后由 Peteryo01223 于 2020-9-21 17:22 编辑
多谢。按您的建议,run后,确实可以出结果,只不过会重复打印出 len(a) 次。
后来,我在每个print 下面加了一个 break,貌似就不重复了。但其实只是比较了一次,结果是不完整的。 本帖最后由 jackz007 于 2020-9-21 16:59 编辑
最关键的一个问题是,循环比较字符,每次比 2 个字符,那么,需要循环len(a) // 2 次,而非 len(a) 次;次要一点的问题是,是不是回文联,只看最终结果,而不是在循环过程中每次比较都报结果,所以,应该这样改:
f = True
a = input("请输入一个文联:")
for x in range(len(a) // 2):
if a != a[- x - 1] :
f = False
break
if f:
print ("这是一个回文联!")
else:
print("这根本不是一个回文联。。。")
当然,最省事的代码长下面这样:
a = input("请输入一个文联:")
if a == a[::-1]:
print ("这是一个回文联!")
else:
print("这根本不是一个回文联。。。") if a == a[::-1],这个表达太简洁了!厉害。冒号、负号,的用法,我都咩见过,
页:
[1]