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?')
网友评论