美文网首页
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题

    NO.33函数,所有因子之和 NO.34 数字对调 NO.35 输出反素数,不应该分批次生成列表,很难操作,应该一...

  • 2021-03-15锦学长之50题

    NO.53集合 关于集合的处理,一般都是先按照list做,做完之后再使用set转换 NO.53读写文件 在使用op...

  • 2021-03-14锦学长之50题

    NO.47xml or html的解析 ?懒惰匹配+(*相当于+,但在匹配字符时比+更好)+() NO.48 方差...

  • 2021-03-10钱学长之50题

    pycharm在有代码处可以加断点点击debug 甲虫标志后即可运行,左侧可以选择文件NO.14 去重+排序 NO...

  • 2021-03-08钱学长之50题

    NO.1商和余数 NO.2名字长度 NO.3计算桶数 python常量,需要带着math的包 NO.4 两点之间的...

  • 2021考研政治备考经验

    题型分布: 选择题(50分)+分析题(50分); 选择题34题:单选(16题共16分)+多选(17题共34分); ...

  • 12月第二周总结

    本周做了七套英语真题,平均50分左右,四套政治模拟题,正确率百分之50左右,做社会工作真题 下周计划,英语重点写写...

  • 50题

    问题及描述:--1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Snam...

  • 宠物生病后,我终于知道养宠物的苦了

    Caring for a Sick Pet Can Really Drain You 2021-03-13 357...

  • 完整版丨2018年1-4月雅思口语题库

    1月进入变题季,雅思口语题库进行50%的内容更新。 50%的新题的构成为: 旧题回库题及旧题改编题(30%) 全新...

网友评论

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

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