python3每日十題(六)

2021-08-30 15:57:34 字數 3656 閱讀 3665

'''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每日十題 棧(難度 困難)

因為寫的十棧裡面的題目,所以剛開始在想用棧來寫的時候,是真的一點思路沒有。琢磨著各種可以取到高分的情況,發現那是一環扣著一環,每次決定都受之後分數序列的影響,既然如此,便想到用遞迴來寫 呸,看題解的 說實話,遞迴這東西是真的巧妙啊,你不用去討論如何才能取最大,你只需要告訴計算機,我就是要去最大,然後...