美文网首页
2021-03-13锦学长之50题

2021-03-13锦学长之50题

作者: Cipolee | 来源:发表于2021-03-13 22:50 被阅读0次

    NO.33函数,所有因子之和

    def sum_factor(i):
        cnt=0
        for j in range(1,i):
            if(i%j==0):
                cnt+=j
        print(cnt)
    sum_factor(12)
    

    NO.34 数字对调

    def trans_re(i):
        return i[::-1]
    def inputAndOutput_func():
        i=input("请输入一个数字")
        print("输出的数字为{}".format(trans_re(i)))
    inputAndOutput_func()
    

    NO.35 输出反素数,不应该分批次生成列表,很难操作,应该一次打出足够的素数表

    def judge_circle_equal(i):
        if str(i)!=str(i)[::-1]:
            return True
        else:
            return False
        
    def anti_prime_pre30(start_num,end_num,list_prime):
        list_prime_index=[True]*(end_num-start_num)
        for i in range(start_num+2,end_num):
            if(list_prime_index[i-start_num]):
                if judge_circle_equal(i):
                    if(len(list_prime)<30):
                        list_prime.append(i)
                    else:
                        break
    
                t=start_num//i
                en=end_num//i
                    
                for j in range(t,en):
                    list_prime_index[i*j-start_num]=False
        if len(list_prime)==30:
            for i in range(6):
                for j in range(5):
                    print('{:>5}'.format(list_prime[i*5+j]),end='')
                print()
        else:
            anti_prime_pre30(end_num,end_num+500,list_prime)
            
                    
    def print_pre30Prime():
        list_prime=[]
        anti_prime_pre30(0,500,list_prime)
    print_pre30Prime()
    

    NO.36梅森素数

    ==再理解,因为==是对数值的比较,所以print(1.0==1)结果为true

    import math
    def judge():
        num=int(input("请输入一个不大于1000的正整数"))
        mesen=[]
        index_prime=[True]*1005
        for i in range(2,1001):
            if index_prime[i] and math.log2(i+1)==int(math.log2(i+1)):
                mesen.append(i)
            for j in range(2,1001//i):
                index_prime[i*j]=False
        if num in mesen:
            print("yup,here come up",end=' ')
            print(int(math.log2(num+1)))
        for i in mesen:
            print("{:>3}{:>4}".format(int(math.log2(i+1)),i))
            
    judge() 
        
     
    

    输出

    请输入一个不大于1000的正整数7
    here come up
    3
    2 3
    3 7
    5 31
    7 127

    NO.38倒叙输出

    def reverse_words(str_):
        t=str_.split()
        print(" ".join(t[::-1]))
    reverse_words("look this beautiful day!")
    

    NO.39忽略大小写,统计位置字符个数

    易错点字符串的大小写转换

    str类型的count函数,str.count(sub,start,end),同时list中也有count函数,用法类似

    def my_count(str_,pos=0):
        '''
        for i in range(len(str_)):
            if str_[i].isupper():
                str_[i]=str_[i].lower()
                #这种大小写转化是不可取的,因为'str' object does not support item assignment
        '''
        str_=str_.lower()
        if str_[pos].isupper():
            t=str_[pos].lower()
        else:
            t=t=str_[pos]
        return str_.count(t)
                
    my_count("olook this beautifuL  day!",1)
    
    

    NO.40 fibnate数列递归
    list记忆,list=[0,1]

    def fibnate(n,fib_list):
        if n<=len(fib_list):
            return fib_list[n-1]
        else:
            fib_list.append(fibnate(n-1,fib_list)+fibnate(n-2,fib_list))
            return fib_list[-1]
            
    fib_list=[0,1]
    fibnate(16,fib_list)
    

    NO.41 字符串

    def create_new_str(i):
        if len(i)<2:
            return ''
        else:
            return i[:2]+i[len(i)-2:]
    

    NO.42 删除位置为i的字符串

    def dele_n(i,n):
        if len(i)<=0:
            print("输入有错")
            return ''
        if n<0 or n>len(i):
            print("位置错误")
            return ''
        return i[:n-1]+i[n:]
    

    NO.43关于字典的排序,以及字典类的输出,使用join只能把元素的键连接起来
    先用zip将字典转化为双重列表,再排序,可以再次生成字典,使用dict[key]=value添加或者dict.setdefault()

    def count_str(str_):
        dict_str={}
        
        for i in str_:
            dict_str[i]=dict_str.get(i,0)+1
        k=zip(dict_str.keys(),dict_str.values())
        kk=[x for x in k]
        sort_kk=sorted(kk,key=lambda x:x[1],reverse=True)
        #print(sort_kk)
        result_dict={}
        for i in sort_kk:
            result_dict.setdefault(i[0],i[1])
        #dict_str=sorted(dict_str,key=lambda item:item.values())
        flag=True
        for i in result_dict:
            if flag:
                print("'{}':{}".format(i,result_dict[i]),end="")
                flag=False
            else:
                print(",'{}':{}".format(i,result_dict[i]),end='')
    count_str("google.com")
    

    NO.45字符串动词第三人称单数转化

    利用python的判断规则,and短路判断 
    def trans_third_person(i):
        if i[-1]=='y':
            return i[:-1]+'iss'
        elif i[-1] in ['o','s','x','z'] or (len(i)>=2 and i[-2:] in ['ch','sh']):
            return i+'es'
        else:
            return i+'s'
     trans_third_person('ish')
    

    NO.46字符串的检查

    \w表示匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]

    \1,\2表示前一部分的该位置下的()内容
    官方解释:
    \1表示重复正则第一个圆括号内匹配到的内容
    \2表示重复正则第二个圆括号内匹配到的内容

    def check_str(str_):
        cheked_str=re.sub(' +',' ',str_)
        cheked_str=re.sub('([?.:;,!])(\w+)',r'\1 \2',cheked_str)
        return cheked_str
    check_str('asdg     ,we?')
    

    相关文章

      网友评论

          本文标题:2021-03-13锦学长之50题

          本文链接:https://www.haomeiwen.com/subject/hecxcltx.html