|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 mumudontcry 于 2014-7-30 23:02 编辑
第一行喂@小甲鱼 ,第二行开始
题目我还是不说了(免责声明:要先好好看小甲鱼的好不啦,全让我说了,人家干什么去,再说把题目弄过来,小甲鱼的10鱼币就赚不了啦)
惯例,先说说小甲鱼的答案
嗯……这一次,木木败给小甲鱼了为我默哀吧
为什么这么说,因为我对字符串的函数的操作不是熟悉,导致很多个地方绕了弯路,不过你们还是可以看一下的
(看到木木我栽了,你们会不会有一种大快人心的感觉?)
下面开始分析(你们要题目就老实去做题,我才不会白白让你们得到题目呢~~还有,看了小甲鱼的代码再来看我的,如果你喜欢的话)
0
首先是回文联:
小甲鱼的:
方法一
部分代码:
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
小甲鱼思路是从头开始循环的each的前一部分,然后与从尾开始循环的last的后一部分逐个比较,总共执行了总长度一半的次数
方法二
部分代码:
def palindrome(string):
list1 = list(string)
list2 = reversed(list1)
if list1 == list(list2):
return '是回文联!'
else:
return '不是回文联!'
思路是,借助字符串函数reversed,将字符串倒置,然后比较,两种方法都是很容易想到的,方法一比方法二更好
而木木我……啊,已经无法直视了,不过还是有值得借鉴的地方(我才不是找借口呢)
我的代码:
def 回文联():
tempH = input("请输入一句话:")
l = len(tempH)
H = ''
for i in range(l):
H = H + tempH[l - i - 1]
if H ==tempH:
print("是回文联!")
else:
print("不是回文联!")
a、你们知道可以用中文做函数名么?好吧,知道的话请无视我
b、我的思路跟方法二是一样的,可是我忘记了字符串函数reversed!于是就只能用拼接的方法,把输入的字符串从尾到头一个一个取出来,这里你们可能会疑问:为什么要H = '',后面不是有对H赋值么?嗯……没错,后面是有对H赋值,但是,在赋值之前H+tempH[l-i-1]中,H参与了运算,也就是说,H在定义之前就使用了,所以,如果去掉H='',程序是会报错的!也就是说,赋值号的优先级是在加号之后的,这个你们有忘记么?(我虽然知道,但是一开始还是没有注意)
c、然后就是小甲鱼曾经讲过的效率的问题:l = len(tempH)
1
第二题小甲鱼的思路以及程序跟我的都几乎一样,可我总觉得有更好的方法,只是想不出来,弱弱的问一句:有列表字符串的概念么?(估计也没有,应该叫做二维列表吧)就像是:
有一个字符串s,s[0],s[1]……每一个元素都是一个字符串。这种要怎么定义?
好吧,你们忘了吧,这是我的代码:
def count(*params):
l = len(params)
for i in range(l):
a = b = c = d =0
str1 = params
for j in range(len(str1)):
if str1[j].isalpha():
a = a + 1
elif str1[j].isdigit():
b = b + 1
elif str1[j] == ' ':
c = c + 1
else:
d = d + 1
print("第",i+1,"个字符串共有:英文字母",a,"个,数字",b,"个,空格",c,"其他字符",d,"个。")
我这里的
for j in range(len(str1)):
if str1[j].isalpha():
和小甲鱼的
for each in param:(从这一行开始,格式老不对,而且本来这行是for each in param【i】:的,保存后【i】就就消失了,自己注意下,所以这里我改成了中文的中括号,防止消失)
if each.isalpha():
意思是一样的……么?
不太一样!
我的代码的意思是,取每一个元组里的字符串,再取单个字符出来判断是什么类型,而小甲鱼的是,取每一个元组里的字符串的单个字符,判断它是什么类型,我代码在for里还没有取那个字符,而小甲鱼的在for里就已经取出来了
而且他的更加简洁,我这么写就是因为一直在纠结是不是有个叫做“列表字符串”的东西,啊~~没听懂就算了,这不重要,你们记住他的那种写法就对了,我这个比较容易弄错
写完之后发现,我还有一个东西没有讲,那就是测试题,可能小甲鱼没有讲清楚我补充一下:
测试题的第四题:
Baby I love you
因为,fun1里有个global var,虽然视频里没有讲,但是……global是全局的意思啊焚蛋!又拿没见过的来问问题,小坏鱼。所以,在fun1里改变的var的值可以带出函数,所以,此时,var是"_Baby_"
return一个fun2,于是运行fun2,在fun2中,var变成 Baby I love you,可是这个var是个局部变量,,即接下来调用fun3,把 Baby I love you放到fun3里,var虽然等于小甲鱼,但fun3里的var也是局部的,而且,fun3没有返回var,所以,相当于fun3白运行了
fun2中return了var回fun1的rerurn fun2(var)中的var里,于是再返回fun1,最后打印fun1
所以答案是 Baby I love you
顺带再提一点(有完没完啊!!)
本讲视频里开头说:delphi里有区分开函数和过程,很多语言也是有区分函数和过程。可据我所知,也就只有(管他呢?)delphi里有对函数过程区分,别的语言里也是函数过程混在一起的,有过程的概念,但是没有专门的语句,不像delphi有procedure。嗯……有人说,pascal就有procedure!好吧,pascal跟delphi其实是一个语言,只是pascal只面向过程,而delphi是pascal的进化版,是为了面向对象而设计的。想学delphi的可以先看看pascal,容易入门
所以,函数过程其实就可以认为是一样的,要说区别,就是看有没有返回值
最后,木木以可以忽略不计的劣势惜败于小甲鱼,虽然这次没有完成保护人类的任务,但,我还会回来的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
点击当没节操甲鱼遇上傲娇笨笨的木木
查看我的淘帖,喜欢就点“订阅”吧
|
评分
-
查看全部评分
|