鱼C论坛

 找回密码
 立即注册
查看: 2518|回复: 35

[技术交流] Python:每日一题 204

[复制链接]
发表于 2018-8-31 10:33:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-9-3 19:59 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
range函数大家都很熟悉,下面我们做一个字符串的range函数,其参数的意义与range相似,参数1为起始字符,参数2为结束字符(不包括),参数3为步长。可以仅有一个参数,即结束字符(缺省起始字符为'A',步长为1),可以仅有2个参数,起始字符和结束字符(缺省步长为1)。
返回的是一个字符串仅可以包含'A'~'Z' 'a'~'z'这52个英文字母。例如:
  1. >>> strrange('z')
  2. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy'
  3. >>> strrange('e')
  4. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcd'
  5. >>> strrange('Z', 'g')
  6. 'Zabcdef'
  7. >>> strrange('A', 'Z', 3)
  8. 'ADGJMPSVY'
  9. >>> strrange('m', 'M', -5)
  10. 'mhcXSN'
  11. >>> strrange('m', 'M')
  12. ''
复制代码

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2018-8-31 11:08:27 | 显示全部楼层
本帖最后由 塔利班 于 2018-8-31 11:19 编辑
  1. def strrange(*p):
  2.     step=1
  3.     if len(p)==1:
  4.         start='A'
  5.         end=p[0]   
  6.     elif len(p)==2:
  7.         start,end=p
  8.     else:
  9.         start,end,step=p
  10.     s='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  11.     m=s.index(start)
  12.     n=s.index(end)
  13.     return s[m:n:step]
复制代码

默认参数必须在后边,先写了蠢方法

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 11:23:06 | 显示全部楼层
本帖最后由 Wangzy1025 于 2018-8-31 16:35 编辑
  1. def strrange(*args):
  2.     word_list = [chr(x) for x in range(65, 91)] + [chr(x) for x in range(97, 123)]
  3.     if len(args) == 1:
  4.         return ''.join(x for x in word_list[:word_list.index(args[0])])
  5.     elif len(args) == 2:
  6.         return ''.join(x for x in word_list[word_list.index(args[0]):word_list.index(args[1])])
  7.     elif len(args) == 3 and args[2]:
  8.         return ''.join(x for x in word_list[word_list.index(args[0]):word_list.index(args[1]):args[2]])
  9.     else:
  10.         print('参数错误')


  11. print(strrange('z'))
  12. print(strrange('e'))
  13. print(strrange('Z', 'g'))
  14. print(strrange('A', 'Z', 3))
  15. print(strrange('m', 'M', -5))
  16. print(strrange('m', 'M'))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 11:35:20 | 显示全部楼层
本帖最后由 JessiFly 于 2018-8-31 11:41 编辑
  1. def strrange(*params):
  2.     a2z = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  3.     length = len(params)
  4.     if length == 1:
  5.         stop = a2z.find(params[0])
  6.         return a2z[:stop]
  7.    
  8.     elif length == 2:
  9.         start = a2z.find(params[0])
  10.         stop = a2z.find(params[1])
  11.         if start >= stop:
  12.             return ''
  13.         else:
  14.             return a2z[start:stop]
  15.         
  16.     elif length == 3:
  17.         start = a2z.find(params[0])
  18.         stop = a2z.find(params[1])
  19.         step = params[2]
  20.         if step == 0:
  21.             raise ValueError('第3个参数不能为0!')
  22.         return a2z[start:stop:step]

  23.     elif length == 0:
  24.         raise TypeError('请输入1至3个参数!')
  25.         
  26.     else:
  27.         raise TypeError('您不能输入多于3个参数!')

  28.    
  29.    
  30. if __name__ == '__main__':
  31.     print(strrange('z'))
  32.     print(strrange('e'))
  33.     print(strrange('Z', 'g'))
  34.     print(strrange('A', 'Z', 3))
  35.     print(strrange('m', 'M', -5))
  36.     print(strrange('m', 'M'))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 11:37:15 | 显示全部楼层
本帖最后由 拉了盏灯 于 2018-8-31 11:44 编辑
  1. def strrange (start,end=None,step=1):
  2.     if end==None:
  3.         end=start
  4.         start='A'
  5.     l=[chr(i) for i in range(65,123) if chr(i).isalpha()]
  6.     print(''.join(l[l.index(start):l.index(end):step]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 11:52:59 | 显示全部楼层
def strrange(start,end,step):
    start = 'A'
    step = 1
    a = ord(start)
    b = ord(end)
    if 90 <= b <=96 or b >= 123 or b < 60:
        print('输入错误,已超出函数范围')
    else:
        for i in range(a,b + 1,step):
            if 65 <= i <= 90 or 97 <= i <= 122:
                print(chr(i))
            
start = 'A'
end = ''
step = 1
start = input('请输入函数起始值(默认为‘A’,可跳过):')
end = input('请输入函数结束值:')
step = input('请输入函数循环步长(默认为1,可跳过)')
strrange(start,end,step)
#刚学小甲鱼的python,弄这个我差点没死,(滑稽.jpg)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-31 12:49:07 | 显示全部楼层
  1. >>> def strrange(start, end=None, step=1):
  2.         s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  3.         if end==None:
  4.                 start, end = 'A',start
  5.         i = s.index(start)
  6.         j = s.index(end)
  7.         t = range(i,j,step)
  8.         r = ''.join(s[x] for x in t)
  9.         return r

  10. >>> strrange('z')
  11. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy'
  12. >>> strrange('e')
  13. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcd'
  14. >>> strrange('Z','g')
  15. 'Zabcdef'
  16. >>> strrange('A','z',3)
  17. 'ADGJMPSVYbehknqtw'
  18. >>> strrange('A','Z',3)
  19. 'ADGJMPSVY'
  20. >>> strrange('m','M',-5)
  21. 'mhcXSN'
  22. >>> strrange('m','M')
  23. ''
  24. >>>
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

头像被屏蔽
发表于 2018-8-31 13:51:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-31 14:17:49 | 显示全部楼层
x0 = input('请输入起始字母:')
y0 = input('请输入终止字母:')
z0 = int(input('请输入步长:'))
def strrange(x0, y0, z0):
    x1 = ord(x0)
    y1 = ord(y0)
    List0 = []
    for i in range(x1, y1, z0):
        List0.append(chr(i))
    print(List0)


if __name__ == '__main__':
    strrange(x0, y0, z0)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1 不支持1~2参数

查看全部评分

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

使用道具 举报

发表于 2018-8-31 14:23:28 | 显示全部楼层
好像想太多了
  1. def strrange(*args):

  2.     L = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  3.     flag  = True
  4.    
  5.     def isvalid_alpha(x):
  6.         x = str(x)
  7.         if x.isupper():
  8.             return ord(x)-65
  9.         elif x.islower():
  10.             return ord(x)-71
  11.         nonlocal flag
  12.         flag = False
  13.         return flag
  14.         
  15.     def isvalid_digit(x):
  16.         if isinstance(x,int):
  17.             return x
  18.         nonlocal flag
  19.         flag = False
  20.         return flag

  21.     if len(args) == 3:
  22.         x = isvalid_alpha(args[0])
  23.         y = isvalid_alpha(args[1])
  24.         z = isvalid_digit(args[2])
  25.         if flag:
  26.             L = L[x:y:z]
  27.             if len(L):
  28.                 print( L )
  29.             else:
  30.                 print("''")
  31.         else:
  32.             print('Invalid input:\n    Expected arguments are [startpoint, endpoint, steps)')

  33.     elif len(args) == 2:
  34.         x = isvalid_alpha(args[0])
  35.         y = isvalid_alpha(args[1])
  36.         if flag:
  37.             L = L[x:y]
  38.             if len(L):
  39.                 print( L )
  40.             else:
  41.                 print("''")
  42.         else:
  43.             print('Invalid input:\n    Expected arguments are [startpoint, endpoint)')

  44.     elif len(args) == 1:
  45.         y = isvalid_alpha(args[0])
  46.         if flag:
  47.             print( L[:y] )
  48.         else:
  49.             print('Invalid input:\n    Expected arguments are [endpoint)')
  50.     else:
  51.         print('Invalid input: too many arguments')
复制代码

测试结果:
  1. >>> strrange('z')
  2. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy
  3. >>> strrange('e')
  4. ABCDEFGHIJKLMNOPQRSTUVWXYZabcd
  5. >>> strrange('Z','g')
  6. Zabcdef
  7. >>> strrange('Z','A')
  8. ''
  9. >>> strrange('A','z',3)
  10. ADGJMPSVYbehknqtw
  11. >>> strrange('m','M',-5)
  12. mhcXSN
  13. >>> strrange('m','M',3)
  14. ''
复制代码

安全检查:
  1. >>> strrange(5)
  2. Invalid input:
  3.     Expected arguments are [endpoint)
  4. >>> strrange('1',2)
  5. Invalid input:
  6.     Expected arguments are [startpoint, endpoint)
  7. >>> strrange(1,'2',3)
  8. Invalid input:
  9.     Expected arguments are [startpoint, endpoint, steps)
  10. >>> strrange(1,2,3,4)
  11. Invalid input: too many arguments
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 14:51:52 | 显示全部楼层
本帖最后由 archlzy 于 2018-8-31 14:59 编辑
  1. def strrange(*input_str):
  2.     """input_strrange(stop) -> strange form A to stop
  3.     strrange(start,stop[, step]) -> strange form start to stop [by step]
  4.     strrange(start,stop[, step(step<0)]) -> strange form stop to start [by step]"""
  5.     alphabet_str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  6.     if len(input_str) not in [1,2,3]: raise TypeError
  7.     elif len(input_str) == 1:
  8.         if input_str[0] not in alphabet_str: raise TypeError
  9.         return ''.join([alphabet_str[i] for i in range(alphabet_str.index(input_str[0]))])
  10.     elif len(input_str) == 2:
  11.         if (input_str[0] or  input_str[1]) not in alphabet_str: raise TypeError
  12.         return ''.join([alphabet_str[i] for i in range(alphabet_str.index(input_str[0]), alphabet_str.index(input_str[1]))])
  13.     elif len(input_str) == 3:
  14.         if (input_str[0] or  input_str[1]) not in alphabet_str or not(0 <= abs(input_str[2]) <= len(alphabet_str)): raise TypeError
  15.         if input_str[2] < 0 : alphabet_str = alphabet_str[::-1]
  16.         return ''.join([alphabet_str[i] for i in range(alphabet_str.index(input_str[0]), alphabet_str.index(input_str[1]), abs(input_str[2]))])
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 15:04:51 | 显示全部楼层
def strrange(*arg):
        s='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'       
        if len(arg)==1:
                start,end,step='A',arg[0],1
        elif len(arg)==2:
                start,end,step=arg[0],arg[1],1       
        elif len(arg)==3:
                start,end,step=arg[0],arg[1],arg[2]
        else:
                return 'Error'
        if not str(start) in s or not str(end) in s:
                return 'Error'
        return ''.join(s[i] for i in range(s.index(start),s.index(end),step))

print(strrange('z'))
print(strrange('e'))
print(strrange('Z', 'g'))
print(strrange('A', 'Z', 3))
print(strrange('m', 'M', -5))
print(strrange('m', 'M'))
print(strrange(1,2,3))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 15:32:25 | 显示全部楼层
  1. def a204(end,start=None,step=1):
  2.     s='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  3.     if step>0:
  4.         if start==None:
  5.             end2=s.index(end)
  6.             return s[:end2]
  7.         else:
  8.                 start2=s.index(end)
  9.                 end2=s.index(start)
  10.                 return s[start2:end2:step]
  11.     else:
  12.         c=list(s)
  13.         c.reverse()
  14.         s=''.join(c)
  15.         start2=s.index(end)
  16.         end2=s.index(start)
  17.         step=abs(step)
  18.         return s[start2:end2:step]
  19.    
  20. print(a204('z'))
  21. print(a204('e'))
  22. print(a204('Z', 'g'))
  23. print(a204('A', 'Z', 3))
  24. print(a204('m', 'M', -5))
  25. print(a204('m', 'M'))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 15:46:15 | 显示全部楼层
def strrange(*args):
    tmp=len(args)
    if tmp==1:
        start='A'
        end=args[0]
        stew=1
    elif tmp==2:
        start=args[0]
        end=args[1]
        stew=1
    elif tmp==3:
        start=args[0]
        end=args[1]
        stew=args[2]
    else:
        raise TypeError
    string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    startindex=int(string.find(start))
    endindex=int(string.find(end))
    return string[startindex:endindex:int(stew)]
#傻瓜加懒人写法,等鱼友精品答案学习学习

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 16:20:29 | 显示全部楼层
  1. import re
  2. def strrange(*args ):
  3.     letter = re.compile(r'[a-zA-Z]')
  4.     str1 = ''
  5.     if len(args) == 0:
  6.         return '请输入参数'
  7.     elif len(args) == 1 and re.search(letter,str(args)):
  8.         for x in range(ord('A'),ord(args[0])):
  9.             if re.search(letter,str(chr(x))):
  10.                 str1 += str(chr(x))
  11.         return str1
  12.     elif len(args) == 2 and re.search(letter,args[0])\
  13.                         and re.search(letter,args[1])\
  14.                         and len(args[0]) == 1\
  15.                         and len(args[1]) == 1:
  16.         if ord(args[0]) < ord(args[1]):
  17.             for x in range(ord(args[0]),ord(args[1])):
  18.                 if re.search(letter,str(chr(x))):
  19.                     str1+= str(chr(x))
  20.             return str1
  21.         else:
  22.             return '\'\''
  23.     elif len(args) == 3 and re.search(letter,args[0])\
  24.                         and re.search(letter,args[1])\
  25.                         and len(args[0]) == 1\
  26.                         and len(args[1]) == 1\
  27.                         and type(args[2]) == int:
  28.         if ord(args[0]) < ord(args[1]) and args[2] > 0:
  29.             for x in range(ord(args[0]),ord(args[1]),args[2]):
  30.                 if re.search(letter, str(chr(x))):
  31.                     str1 += (str(chr(x)))
  32.             return str1
  33.         elif ord(args[0]) < ord(args[1]) and args[2] <= 0:
  34.             return '\'\''
  35.         elif ord(args[0]) > ord(args[1]) and args[2] >= 0:
  36.             return '\'\''
  37.         elif ord(args[0]) > ord(args[1]) and args[2] < 0:
  38.             for x in range(ord(args[0]),ord(args[1]),args[2]):
  39.                 if ord(args[0]) >= ord('a') and ord(args[1]) <= ord('Z'):
  40.                     if x >= ord('a'):
  41.                         if re.search(letter, str(chr(x))):
  42.                             str1 += (str(chr(x)))
  43.                     else:
  44.                         if re.search(letter, str(chr(x))):
  45.                             str1 += (str(chr(x-1)))
  46.                 elif ord(args[0]) <= ord('Z') :
  47.                     str1 += (str(chr(x)))
  48.             return str1
  49.     else:
  50.         return '输入错误'
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 16:52:58 | 显示全部楼层
  1. def strrange(*args):
  2.     strs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  3.     l = len(args)
  4.     if l == 1:
  5.         return strs[:strs.index(args[0])]
  6.     elif l == 2:
  7.         return strs[strs.index(args[0]):strs.index(args[1])]
  8.     elif l == 3:
  9.         return strs[strs.index(args[0]):strs.index(args[1]):args[2]]
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 20:53:36 | 显示全部楼层
  1. def strrange(first='A',last=None,step=1):
  2.     result=''
  3.     strt='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  4.     if last==None:
  5.         last=first
  6.         first='A'
  7.    
  8.     index_first=strt.find(first)
  9.     index_last=strt.find(last)
  10.     if step==1:
  11.         result=strt[index_first:index_last]
  12.     else:
  13.         if index_last-index_first>0:
  14.       
  15.             for i in range(index_last-index_first):
  16.                 if i%step==0:
  17.                     result+=strt[i+index_first]
  18.         else:
  19.             for i in range(0,index_last-index_first,-1):
  20.                 if i%step==0:
  21.                     result+=strt[i+index_first]
  22.     return result
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-31 21:35:20 | 显示全部楼层
def fun(string):
    temp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        
    return temp.index(string)

def strrange(end,star="A",step=""):
    a=fun(star)
    b=fun(end)
    temp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    result=""
    while 1:
        if step=="":
            if a<b:
                step=1
            elif a>b:
                step=-1
            result+=temp[a]
            a+=step
            if a==b:
                break
        elif step>0:
            result+=temp[a]
            a+=step
            if a>b or a==b:
                break
        else:
            result+=temp[a]
            a+=step
            if a<b or a==b:
                break
    return result

strrange(star='m',end= 'M', step=-5)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1 有错误

查看全部评分

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

使用道具 举报

发表于 2018-8-31 22:09:04 From FishC Mobile | 显示全部楼层
def strrange(*num):
        n=len(num)
        index_=list(num)
        if n==1:
                end1=index_[0]
                if ord(end1) in range(ord('A'),ord('Z')+1):
                        for i in range(ord('A'),ord(end1)):
                                print(chr(i),end='')
                elif ord(end1) in range(ord('a'),ord('z')+1):
                        for i in range(ord('A'),ord('Z')+1):
                                print(chr(i),end='')
                        for i in range(ord('a'),ord(end1)):
                                print(chr(i),end='')
                else:
                        print("输入错误2,请重新输入:")
        if n==2:
                start2=index_[0]
                end2=index_[1]
                if start2>end2:
                        print("输入错误1,请重新输入:")
                elif (ord(start2) in range(ord('A'),ord('Z')+1)) & (ord(end2) in range(ord('A'),ord('Z')+1)):
                        for i in range(ord(start2),ord(end2)):
                                print(chr(i),end='')
                elif (ord(start2) in range(ord('a'),ord('z')+1)) & (ord(end2) in range(ord('a'),ord('z')+1)):
                        for i in range(ord(start2),ord(end2)):
                                print(chr(i),end='')
                elif (ord(start2) in range(ord('A'),ord('Z')+1))& (ord(end2) in range(ord('a'),ord('z')+1)):
                        for i in range(ord(start2),ord('Z')+1):
                                print(chr(i),end='')
                        for i in range(ord('a'),ord(end2)):
                                print(chr(i),end='')
                else:
                        print("输入错误2,请重新输入:")
        if n==3:
                start3=index_[0]
                end3=index_[1]
                diff=index_[2]
                if start3>end3:
                        print("输入错误1,请重新输入:")
                elif (ord(start3) in range(ord('A'),ord('Z')+1)) & (ord(end3) in range(ord('A'),ord('Z')+1)):
                        for i in range(ord(start3),ord(end3),diff):
                                print(chr(i),end='')
                elif (ord(start3) in range(ord('a'),ord('z')+1)) & (ord(end3) in range(ord('a'),ord('z')+1)):
                        for i in range(ord(start3),ord(end3),diff):
                                print(chr(i),end='')
                elif (ord(start3) in range(ord('A'),ord('Z')+1)) & (ord(end3) in range(ord('a'),ord('z')+1)):
                        for i in range(ord(start3),ord('Z')+1,diff):
                                print(chr(i),end='')
                        for i in range(ord('a'),ord(end3),diff):
                                print(chr(i),end='')
                else:
                        print("输入错误2,请重新输入:")
               

点评

strrange('m', 'M', -5),strrange('m', 'M) 出错  发表于 2018-9-3 20:16

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1 strrange('m', 'M', -5),strrange('m', 'M.

查看全部评分

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

使用道具 举报

发表于 2018-8-31 23:23:41 | 显示全部楼层
  1. def strrange(*args):
  2.     if len(args) == 1:
  3.         start, end, step = 65, ord(args[0]), 1
  4.     elif len(args) == 2:
  5.         (start, end), step =tuple(map(lambda x:ord(x), args)), 1
  6.     elif len(args) == 3:
  7.         (start, end), step = tuple(map(lambda x: ord(x),args[:2])), args[2]
  8.     else:
  9.         return ""
  10.     code = [i for i in range(65, 123) if i not in range(91, 97)]
  11.     # 以上预处理,以下约束
  12.     if not( start in code and end in code) or (start>end) is (step>0):
  13.         return ""
  14.     # 以上约束,以下函数开始
  15.     output, cursor = [], 0
  16.     code = [i for i in code if start<=i<=end] if step > 0 else list(reversed([i for i in code if end<=i<=start]))
  17.     while abs(cursor)<len(code)-1:
  18.         output.append(chr(code[cursor]))
  19.         cursor += abs(step)
  20.     return "".join(output)
复制代码
  1. if __name__ == '__main__':
  2.     print(strrange('z'))
  3.     print(strrange('e'))
  4.     print(strrange('Z', 'g'))
  5.     print(strrange('A', 'Z', 3))
  6.     print(strrange('m', 'M', -5))
  7.     print(strrange('m', 'M'))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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