'''1、「ksljj!@kkk122$ (sfsf*kjk<12abd/kk}xyz」,以字串中所有相鄰的字母整體為列表元素,生成乙個列表;'''
s = "ksljj!@kkk122$ (sfsf*kjk<12abd/kk}xyz"
#方法一:正則
import re
print(re.findall(r'[a-za-z]+',s))
#方法二:將不是字母的字元替換再split()切割
new_list =
for i in s:
if i.isalpha():
else:
print(''.join(new_list).split())
#方法三:笨辦法,遍歷
import string
new_list = s[:]
result =
while len(new_list)>0:
for i in range(len(new_list)):
if new_list[i] not in string.ascii_letters or i ==len(new_list)-1:
if i ==len(new_list)-1:#找到最後都是字母的時候全部複製
result[-1] = new_list[:]
new_list=
else:
for j in range (i+1,len(new_list)):
if new_list[j].isalpha():
new_list = new_list[j:]
break
break
print(result)
'''2、構造乙個字典,key為9,7,5,3,1,value為乙個包含兩位小數的浮點數,且返回所有key、value項的和'''
import random
#生成由浮點數組成的values列表
values_list =
keys_list = [9,7,5,3,1]
for i in range(len(keys_list)):
#遍歷生成字典
d = {}
for i in range(len(keys_list)):
d[keys_list[i]] = values_list[i]
print('生成的字典為:',d)
#求所有key、value項的和
print('所有key、value項的和為:',sum(values_list)+sum(keys_list))
'''3、求10000以內所有是素數且是閏年的數的和'''
import math
def is_prime(n):
if n<=0:
return false
elif n ==1:
return false
elif n == 2:
return true
else:
for i in range(2,int(math.sqrt(n))+1):
if n%i ==0:
return false
return true
prime_numbers_list =
for i in range(1,10000):
if is_prime(i):
print('10000以內所有的素數為:',prime_numbers_list)
leap_years_list =
for i in range(1,10000):
if (i%4 ==0 and i%100!=0)or i%400==0 :
print('10000以內所有的閏年為:',leap_years_list)
'''4、定義乙個函式,形參包含字典引數、預設引數,返回所有傳入引數組成字串;'''
def func(x,y,i=0,**kwgs):
result =
for k,v in kwgs.items():
return ''.join(result)
print(func(1,2,3,s='abc',l='d'))
print(func(1,2,s='abc',l='d'))
'''5、乙個字典key是人名、value是年齡,找出其中年齡最大的人'''
d=
max_value=max(d.values())
keys_list =
for k,v in d.items():
if v == max_value:
print('年齡最大的人是:',keys_list)
'''6、定義函式,使用者輸入n個字串,輸出排好序的字串'''
def sort_str(sentense):
a_list = list(sentense)
a_list.sort()
return(''.join(a_list))
input_data = input('input a sentenses:')
print(sort_str(input_data))
'''7、乙個列表的元素均是字串,求其中長度最小的字串'''
a_list = ['a','andje','cptbtptp','2','abc']
new_list = sorted(a_list,key=len)
print(list(filter(lambda x:len(x) == len(new_list[0]),new_list)))
'''8、找出乙個字串中,重複出現的字母和出現次數'''
a = "aasmr3idd4bgs7dlsf9eaf"
d = {}
for i in a:
if a.count(i)>1:
d[i] = a.count(i)
print(d)
'''9、刪除字串中的重複字元(重複字元只保留乙個)'''
a = "aasmr3idd4bgs7dlsf9eaf"
b=for i in a:
if i not in b:
print(''.join(b))
'''10、定義乙個函式,形參定義為可變引數,返回所有傳入引數的數字和;使用者鍵盤輸入乙個整數n,隨機生成n個三位數,利用定義的函式求隨機生成的n個數字的和'''
import random
def get_sum(*args):
result = 0
for i in args:
if isinstance(i,(int,float)):
result +=i
return result
input_num = int(input('輸入乙個整數:'))
num_list =
for i in range(input_num):
#利用解包
print(get_sum(*num_list))
python3每日十題(四)
1 輸入乙個正整數,輸出該正整數的階乘的值 思路 用遞迴實現,也可以用reduce或者遍歷 def prime n if n 1 return 1 else return n prime n 1 input num int input 輸入乙個正整數 print d的階乘為 d input num,...
LeetCode每日十題 陣列(四)
這次 只通過了一半多的用例,不是因為有bug,而是思路錯了,這裡是不能用二分法的,因為整個序列不滿足單調性。雖然在初始排序的時候控制了負數和正數的區別,但在while迴圈裡還是用了二分法。當然可以不用二分法,既然都寫到這了,直接比較就行,可是這樣複雜度就高了,也意味著這種方法行不通。看了解答,用的是...
leetCode每日十題 棧(難度 困難)
因為寫的十棧裡面的題目,所以剛開始在想用棧來寫的時候,是真的一點思路沒有。琢磨著各種可以取到高分的情況,發現那是一環扣著一環,每次決定都受之後分數序列的影響,既然如此,便想到用遞迴來寫 呸,看題解的 說實話,遞迴這東西是真的巧妙啊,你不用去討論如何才能取最大,你只需要告訴計算機,我就是要去最大,然後...