鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 78(答题领鱼币)

[复制链接]
发表于 2017-8-13 15:50:17 | 显示全部楼层
本帖最后由 slayercjc 于 2017-8-14 08:26 编辑
  1. def average_string(s):
  2.     s = s.split(' ') #接受输入的字符串以空格分开成数组
  3.     N = ['zero','one','two','three','four','five','six','seven','eight','nine']
  4.     l = []
  5.     t = []
  6.     for i in s:             #把用户输入的字符串拼接成数组后循环
  7.         if i in N:          #如果输入的数值在N数组里就追加到t变量
  8.             t.append(i)
  9.     if len(t) < len(s):    #如果t数组的长度小于s数组的长度就说明有问题,就输出'n/a',否则继续执行else
  10.         print('n/a')
  11.     else:
  12.         for i in s:                #循环s数组,得到对应N数组的键
  13.             l.append(N.index(i))
  14.         e  = sum(l)//len(l)        #求出平均值(整数形式)
  15.         print(e)                #根据键得到相应的英文字符串

  16. average_string('one one two')
复制代码



想了半天,把代码写的简单明了些。。。希望多加点分。。。。

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 18:58:39 | 显示全部楼层
貌似打很多多馀的代码

  1. number = {'one':1, 'two':2, 'three':3, 'four':4, 'five':5, 'six':6, 'seven':7, 'eight':8, 'nine':9}

  2. def average_string(num):
  3.     sum = 0
  4.     mapp = {1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine'}
  5.    
  6.     for i in range(len(num.split())):
  7.         sum += number[num.split()[i]]

  8.     if sum/len(num.split()) in mapp:
  9.         return mapp[sum/len(num.split())]
  10.     else:
  11.         return 'n/a'
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 18:58:59 | 显示全部楼层
shinemic 发表于 2017-8-13 09:16
def average_string(s):
    num_map = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4,
       ...

大神永远是我们学习的榜样!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 21:31:05 | 显示全部楼层
def averge_string(string):
    num={'zero':0,'one':1,'two':2,'three':3,'four':4,'five':5,'six':6,'seven':7,'eight':8,'nine':9}
    l=string.split(' ')
    str1=['zero','one','two','three','four','five','six','seven','eight','nine']
    sum=0
    for i in l:
        if i not in str1:
            return 'n/a'
            break
        else:
            sum+=num[i]
    return   str1[int(sum/len(l))]     
print(averge_string('one two three'))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 21:38:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-14 09:15:02 | 显示全部楼层
  1. def average_string(s):
  2.     a = ['zero','one','two','three','four','five','six','seven','eight','nine']
  3.     b = [i for i in range(0,10)]
  4.     try:
  5.         c = sum([b[a.index(i)] for i in  s.split()]) // len(s.split())
  6.     except ValueError:
  7.         return 'n / a'
  8.     return a[c]
复制代码


我的老惨了

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 09:27:35 | 显示全部楼层
看看大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 09:40:12 | 显示全部楼层
看看题主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 16:22:03 | 显示全部楼层
瞄一眼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 06:40:40 | 显示全部楼层
def average_string(a):
    dicts = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9, 'ten': 10}
    temp = a.split(' ')
    tmp_int = 0
    try:
        for i in temp:
            tmp_int += dicts[i]
        tmp_int = tmp_int / len(temp)
        temp = dicts.items()
        keys = []
        values = []
        for key, value in temp:
            keys.append(key)
            values.append(value)
        if (tmp_int in values):
            tmp_int = values.index(tmp_int)
        else:
            print('n/a')
        print("average_string :%s" % keys[tmp_int])
    except:
        print('n/a')

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 11:15:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-15 11:30:07 | 显示全部楼层
哎呦不错哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 11:30:47 | 显示全部楼层
  1. def average_string(str1):
  2.         list1=str1.split(' ')
  3.         list2=[]
  4.         dict1={'one':1,'two':2,'three':3,'four':4,'five':5,'six':6,'seven':7,'eight':8,'nine':9,'ten':10}
  5.         for i in list1:
  6.             if dict1.get(i):
  7.                 list2.append(dict1[i])
  8.             else:
  9.                 break
  10.         if len(list2)==len(list1):
  11.             print(sum(list2)/len(list1))
  12.         else:
  13.             print('n/a')
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 14:55:12 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-15 20:41:08 | 显示全部楼层
def average_string(str):
        for i in range(1,9):
                b=str.split()
                One=b.count('one')
                Two=b.count('two')
                Three=b.count('three')
                Four=b.count('four')
                Five=b.count('five')
                Six=b.count('six')
                Seven=b.count('seven')
                Eight=b.count('eight')
                Night=b.count('night')
                c=One+Two+Three+Four+Five+Six+Seven+Eight+Night
                if c==0:
                        return n/a
                else:
                        d=(One*1+Two*2+Three*3+Four*4+Five*5+Six*6+Seven*7+Eight*8+Night*9)/c
                        if int(d)-d==0:
                                return d
                        else:
                                return n/a

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4 为...你...鼓...掌...

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 21:07:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-15 21:43:43 | 显示全部楼层
  1. def average_string(string):
  2.     di = {'zero': 0, 'one' : 1, 'two': 2, 'three':3,
  3.           'four':4, 'five': 5, 'six': 6, 'seven':7,
  4.           'eight': 8, 'nine':9}
  5.     string_list = string.split(" ")
  6.    
  7.     total =0
  8.     for each in string_list:
  9.         if each not in di:
  10.             return 'n/a'
  11.         else:
  12.             total += di[each]
  13.     result = int(total/ len(string_list))
  14.     for key,value in  di.items():
  15.         if(value == result):
  16.             return key
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-16 10:47:00 | 显示全部楼层

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-16 11:16:10 | 显示全部楼层
能问个问题么?py文件为什么双击打不开?但是可以在CMD中运行。 双击编写好的pygame小游戏就可以直接打开一个窗口。 双击其他py文件却打不开,不知道是为什么? 还请小甲鱼解惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-16 22:11:28 From FishC Mobile | 显示全部楼层
def average_string(string):
  dic=dict(zip(('one','two','three','four','five','six','seven','eight','nine','ten'),range(1,11)))
  lst=string.split(' ')
  res=0
  for i in lst:
    tmp=dic.get(i,0)
    if not tmp: return 'n/a'
    res+=tmp
  return res/len(lst)
   
print(average_string('one two three'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 04:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表