|
发表于 2017-8-13 13:36:56
|
显示全部楼层
本帖最后由 Ss_wW 于 2017-8-13 13:47 编辑
- def average_string(string):
- '''return the average of numbers in a string,
- where numbers are in the form of english word, instead of digits'''
- dict1={'zero':0,'one':0,'two':0,'three':0,'four':0,
- 'five':0,'six':0,'seven':0,'eight':0,'nine':0}
- dict2={'zero':0,'one':1,'two':2,'three':3,'four':4,
- 'five':5,'six':6,'seven':7,'eight':8,'nine':9}
- flag=True
- list1=string.split()
- for each in list1:
- if each not in dict1:
- falg=False
- return 'n/a'
- else:
- dict1[each]+=1
- # print('dict1\n',dict1)
- sumvalue=(dict1['zero']*0+dict1['one']*1+dict1['two']*2
- +dict1['three']*3+dict1['four']*4+dict1['five']*5
- +dict1['six']*6+dict1['seven']*7+dict1['eight']*8
- +dict1['nine']*9)
- # Python会将 圆括号,中括号和花括号中的行隐式的连接起来
- # print('sumvalue\n',sumvalue)
- items=sum(dict1.values())
- #print('items\n',items)
- average=sumvalue/items
- #print('average\n',average)
- def num2english(s):
- s_list=list(s)
- for i in range(len(s_list)):
- for each2 in dict2:
- if dict2[each2]==int(s_list[i]):
- s_list[i]=each2
- break
- s_string=''
- for each in s_list:
- s_string=s_string+' '+each
- s_string=s_string.strip()
- return s_string
-
- string2=str(average)
- list2=string2.split('.')
- integral=num2english(list2[0])
- fractional=''
- length=len(list2)
- if length==2:
- fractional=' point '+num2english(list2[1])
- if fractional==' point zero':
- fractional=''
- string3=integral+fractional
- return string3
- return dict1
- print(average_string('ten'),end='\n\n')
- print(average_string('one two three'),end='\n\n')
- print(average_string('five five five'),end='\n\n')
- print(average_string('three five five'),end='\n\n')
- print(average_string('one two three five'),end='\n\n')
-
复制代码 |
评分
-
查看全部评分
|