鱼C论坛

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

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

[复制链接]
发表于 2017-8-27 19:21:46 | 显示全部楼层
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by lightwave on 2017/8/27


def sort_func(x):
    ord_x = ord(x)
    return ord_x if ord_x <= ord('Z') else ord(x.upper()) + 0.1


content = input('请输入内容:')
new_content = ''.join(sorted(content, key=sort_func))
print("排序后内容:", new_content)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-18 15:35:38 | 显示全部楼层
a = 'easqWAwaeq'
print(a)
print(''.join(sorted(a, key=lambda x:ord(x.lower())*2+x.islower())))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-21 22:15:40 | 显示全部楼层
# all the char change to lowercase, then sort the string
def SortString(string):
    LowerString = string.lower()
    StrList = list(LowerString)
    StrList.sort()
    LowerString = "".join(StrList)
    
    return LowerString

# Find the uppercase in the original string;
# Conversion the lowercase to uppercase in the new string if it is uppercase in the original string    
def MainFunction(string):
    # sort the original string
    NewString = SortString(string)

    for i in range(len(string)):
        if True == string[i].isupper():
            tmp = string[i].lower()
            index = NewString.find(tmp)
            NewString = NewString.replace(NewString[index], NewString[index].upper(), 1)
    return NewString

OriginalString = 'eaAsqWAwaeqwerQwqRRRRRRRRRRRertwer'
print MainFunction(OriginalString)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 09:47:33 | 显示全部楼层
def fun(temp):
    items=list(str(e) for e in temp)
    result=[]
    array=['A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n'
           ,'O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z']

    for each in array:
        if each in items:
            num=items.count(each)
            for a in range(0,num):
                result.append(each)
    print(result)

if __name__=='__main__':
    test=str(input("输入一串字母混合大小写"))
    fun(test)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 14:13:59 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

感觉这个写的太棒了。。。。
我之前的思路是准备把所有字符转换成ASCII之后比较大小。但是没想到还能进行+True or False这种。。。太牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-20 16:40:57 | 显示全部楼层
a = sorted('easqWAwaeq')
a.remove('W')
a.append('W')
b = ''.join(a)
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-20 17:55:08 | 显示全部楼层
求鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 06:12:33 | 显示全部楼层
##按AaBbCc.....格式生成字符串
s2=''
for i in range(26):
    s2+=chr(65+i)+chr(97+i)
##统计在给出的字符串中出现的次数,存到结果。
r=''
s='easqWAwaeq'
for i in s2:
    su=s.count(i)
    r+=i*su
print(s)
print(r)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 08:58:55 | 显示全部楼层
看看 哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 09:53:36 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

你的方法很好,但我有一点不明白,为什么在函数返回的时候要有*2,不要我觉得也可以啊,求解释?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 11:14:13 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

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

使用道具 举报

发表于 2018-3-11 11:58:54 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

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

使用道具 举报

发表于 2018-3-11 11:59:25 | 显示全部楼层
鱼币,,,,,啊哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 12:28:24 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

太厉害了,我都没看懂咋回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 09:51:17 | 显示全部楼层
a = 'easqWAwaeq'
def sortedString(string):
    string = sorted(string)
    upperChars = [i for i in string if i.isupper()]
    lowerChars = [i for i in string if i.islower()]
    for upperChar in upperChars:
        for i in range(len(lowerChars)):
            if upperChar.lower() <= lowerChars[i]:
                lowerChars.insert(i, upperChar)
                break
        else:
            lowerChars.append(upperChar)
    return ''.join(lowerChars)
        

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

使用道具 举报

发表于 2018-3-15 15:30:08 | 显示全部楼层
我爱 小甲鱼  我爱小甲鱼 我需要鱼币  学习 课后作业  零基础啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 13:33:35 | 显示全部楼层

def Rank(string):
        r = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
        list_r = []
        list_r1 = []
        result = ''
        for each in string:
                if each in r:
                        list_r.append([r.find(each),each])
        list_r.sort()
        for each in list_r:
                list_r1.append(each[1])
        for each in list_r1:
                result += each
        print(result)
       
       
       
       
Rank('easqWAwaeq')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 22:03:27 | 显示全部楼层
import random, string

lstr = random.sample(string.ascii_letters, 20)
print("原字符顺序:{0}".format(''.join(lstr)))
print("新排序字符:{0}".format(''.join(sorted(lstr, key=lambda x: ord(x.upper()) + ord(x.lower())))))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-11 16:50:32 | 显示全部楼层
'''
一个字符串仅包含大小写字母,现在要将其排序成一个新的字符串
次序为从a到z,且相同的大写和小写字母排在一起,大写在小写前。
如原字符串为'easqWAwaeq',排序后为'AaaeeqqsWw'
'''
def sortfunc(s):
    n=ord(s)
    if n<97:
        return n+32-0.5
    else:
        return n

def sortstr(mystr):
    return ''.join(sorted(mystr,key=sortfunc))

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

使用道具 举报

发表于 2018-4-11 17:04:17 | 显示全部楼层
def fun(s1):
    s2 = list(s1)
    s2.sort()

    if s2[0].isupper():
        count = len(s2)
        for i in range(0, count):
            for j in range(i + 1, count):
                if s2[i].isupper() ^ s2[j].isupper():
                    if ord(s2[j]) - ord(s2[i]) < 32:
                        s2[i], s2[j] = s2[j], s2[i]
                else:
                    if ord(s2[j]) < ord(s2[i]):
                        s2[i], s2[j] = s2[j], s2[i]
                
    return ''.join(s2)
        
        
s1 = 'easqWAwaeq'
print(fun(s1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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