|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是判断回文联的函数设计,回文联就是第一个字和最后一个字一样,第二个字和倒数第二个字一样,以此类推一直到最中间,对称的位置字都一样。
我把我写的代码和老师的代码比较了一下。(申明真的不是觉得自己比老师强哈,真的是新手,所以请教一下我的感觉是不是对的)
1.老师的代码貌似不管每次比较的结果是否符合,都会比较到最后,最后出来才判断,我的是只要比较出不一样的,就直接退出,从效率上说,我感觉我的是不是能好一点。
2. 老师用的是for循环,我是while,请教一个这两个循环哪个效率更高点啊。
老师代码:
def palindrome(string):
length = len(string)
last = length-1
length //= 2
flag = 1
for each in range(length):
if string[each] != string[last]:
flag = 0
last -= 1
if flag == 1:
return 1
else:
return 0
string = input('请输入一句话:')
if palindrome(string) == 1:
print('是回文联!')
else:
print('不是回文联!')
我的代码:
def huiwen(x):
n=len(x)
m=n//2
i=0
while m-i:
if x[i] == x[n-i-1]:
i+=1
else:
return("Not a 回文联!")
return("it is a 回文联")
x=input("Please input a 回文联: ")
print(huiwen(x))
本帖最后由 a690089735 于 2018-4-6 20:49 编辑
小甲鱼的代码只是参考答案,每人都会有不同的解决方案.能抓住耗子就是好猫.
其实两个代码,我觉得效率差不多,但你的更高效一点
学到后面,老师会讲for其实是一个调用了while和yield的生成器.
不过我更喜欢简明的思路,虽然效率稍低了一些,但是让人一看就懂.
- def p(string):
- if string == string[::-1]:
- print('是回文')
- else:
- print('不是回文')
- p(input('请输入文本:'))
复制代码
三行版
- def p(string = input('请输入文本:')):
- if string == string[::-1]:print('是回文')
- else:print('不是回文')
复制代码
|
|