鱼C论坛

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

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

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

average_string('one one two')


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

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-8-13 18:58:39 | 显示全部楼层
貌似打很多多馀的代码
number = {'one':1, 'two':2, 'three':3, 'four':4, 'five':5, 'six':6, 'seven':7, 'eight':8, 'nine':9}

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

    if sum/len(num.split()) in mapp:
        return mapp[sum/len(num.split())]
    else:
        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 | 显示全部楼层
def average_string(s):
    a = ['zero','one','two','three','four','five','six','seven','eight','nine']
    b = [i for i in range(0,10)]
    try:
        c = sum([b[a.index(i)] for i in  s.split()]) // len(s.split())
    except ValueError:
        return 'n / a'
    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 | 显示全部楼层
def average_string(str1):
        list1=str1.split(' ')
        list2=[]
        dict1={'one':1,'two':2,'three':3,'four':4,'five':5,'six':6,'seven':7,'eight':8,'nine':9,'ten':10}
        for i in list1:
            if dict1.get(i):
                list2.append(dict1[i])
            else:
                break
        if len(list2)==len(list1):
            print(sum(list2)/len(list1))
        else:
            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 | 显示全部楼层
def average_string(string):
    di = {'zero': 0, 'one' : 1, 'two': 2, 'three':3,
          'four':4, 'five': 5, 'six': 6, 'seven':7,
          'eight': 8, 'nine':9}
    string_list = string.split(" ")
    
    total =0
    for each in string_list:
        if each not in di:
            return 'n/a'
        else:
            total += di[each]
    result = int(total/ len(string_list))
    for key,value in  di.items():
        if(value == result):
            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, 2025-1-17 06:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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