Python:每日一题 40
本帖最后由 ooxx7788 于 2017-5-7 13:13 编辑这题算明天的。星期天来点简单的。
春天到了,树上的小鸟总是叫个不停。
男生叫起来'Ha',女生叫起来'ha',男生一句女生一句但是一句随便叫几声。
好了,现在请你根据叫声,算出有几只小鸟。
给出一个函数:def kooka_counter(laughing),返回小鸟的数量。
例如:HaHaHahahaHaHa分段为: 男 HaHaHa女 haha 男HaHa,所以这是3只。返回是3。
给出测试代码,test.py请去33,34题中下载。
test.assert_equals(kooka_counter(""), 0)
test.assert_equals(kooka_counter("hahahahaha"), 1)
test.assert_equals(kooka_counter("hahahahahaHaHaHa"), 2)
test.assert_equals(kooka_counter("HaHaHahahaHaHa"), 3)
test.assert_equals(kooka_counter("hahahahahahahaHaHa"), 2)
**** Hidden Message ***** 本帖最后由 2012277033 于 2017-5-7 00:50 编辑
def kooka_counter(laughing):
import re
return len(re.split('(?:Ha)+',laughing))+len(re.split('(?:ha)+',laughing))-2 用字符串方法写一个
def kooka_counter(laughing):
count = 0
while laughing != '':
pref = 'ha' if laughing[:2] == 'ha' else 'Ha'
laughing = laughing.lstrip(pref)
count += 1
return count 冬雪雪冬 发表于 2017-5-7 09:16
用字符串方法写一个
第四行写的太烂了。改为:
pref = laughing[:2] 急啊急啊
xiaopingzi1995 发表于 2017-5-8 09:43
急啊急啊
急什么呢?急着看答案啊 666
我这是作弊了么。。。
def xn(s='HahahahaHa'):
c=s.replace('a','')
sw,sl=0,0
for i in c:
if i!=sw:
sl+=1
sw=i
return sl
print(xn("HaHaHahahaHaHa")) 原来楼主也是把a剔除了先。。。 余欲渔 发表于 2017-5-10 11:01
原来楼主也是把a剔除了先。。。
我们俩的这个有点点像。不过还是你的简单点点。 1 这道题明明答过了,回帖不见了··· ···
应该就是问你字符串“Ha”首字母发生了几次大小写变化+1
def kooka_counter(s):
string = s.replace("a","")
num = 0 # 变化次数
for i in range(len(string)-1):
if string != string:
num += 1
return 0 if len(s)==0 else num+1 # 空字符串的情况
试下用字符串的 find 方法递归计算数值
def kooka_counter2(s):
if len(s) == 0:
return ""
else:
counter = {"Ha":0, "ha":0}
word = ["Ha","ha"]
i = word.index(s[:2])
def kc(s, i):
num = s.find(word)
if num == -1:
return sum(counter.values())
else:
counter] += 1
return kc(s,(i+1)%2)
return kc(s,i) solomonxian 发表于 2017-6-30 18:09
这道题明明答过了,回帖不见了··· ···
应该就是问你字符串“Ha”首字母发生了几次大小写变化+1
因为论坛回档了,所以不用觉得自己穿越了。 def fun(temp):
m=0
s=0
n=0
temp=temp.replace('a','')
if 'H' not in temp or 'h' not in temp:
return 1
for i in temp:
if i=='H':
m+=1
if m>=3 and s==1:
n+=1
m=0
if i=='h':
s+=1
if s>=2 and m==1:
n+=1
s=0
if m>1:
n+=1
return n
if __name__=='__main__':
print(fun('HaHaHahahaHaHa')) 终于看到我会的了,只要统计Ha与ha的间隔然后+1,就是总体数字啦~~~
相当于6段有5个间隔。
def kooka_counter(laughing):
return (laughing.count('Haha')+laughing.count('haHa')+1)
l="hahahahahaHaHaHaHaHaHahahaHaHaHaHaHahahaHaHa"
print(kooka_counter(l))
编程新血 发表于 2017-11-28 19:15
终于看到我会的了,只要统计Ha与ha的间隔然后+1,就是总体数字啦~~~
相当于6段有5个间隔。
应该不会那么惨吧,前面还是有很多题目都是比较简单的。 import itertools
print(len()) 我只想坦诚的说两个字:不会 def kooka_counter(laugh):
a = laugh.split('a')
count = 0
for i in range(len(a)-1):
if a == a:
count = count
else:
count += 1
return count
n = raw_input('shuru: ')
print kooka_counter(n) def kooka_counter(laughing):
counter = 0
while laughing:
a = laughing[:2]
laughing = laughing.lstrip(a)
counter += 1
return counter
lst = ['', 'hahahahaha', 'hahahahahaHaHaHa', 'HaHaHahahaHaHa', 'hahahahahahahaHaHa']
for i in lst:
print(kooka_counter(i))
页:
[1]
2