大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

跑通代码 理解 自己敲一遍 对照修改 跑通 理解 循环直到完全能自己敲出来并且理解整个代码

自己整理的

 1 while True:
 2     try:
 3         a = input()
 4         a = a.split() #将输入的字符串以空格分开,转为列表
 5         if len(a)>10000 or len(a)==0: #字符串的长度要满足要求
 6             raise Exception
 7         for i in range(len(a)):
 8             b = list(a[i]) #将a中的一个字符串每个字符分开为列表
 9             len_i = len(b) #每个单词的长度
10         #1、先净化每个单词,保正都是由字母组成
11             for j in range(len_i): #对于单词中的每个字符
12                 if(b[j].isupper() == False)  and (b[j].islower() == False):
13                     b[j] = '' #若不是大写或者小写字母,则变为空,不能是空格,空格还是有问题
14             a[i] = ''.join(b) #将净化后的字符,再组成单词
15         c = ' '.join(a) #将单词合并为字符串,也就是重新组成一句话
16         #2、处理每个单词的长度不能超过20个字符
17 
18         d = c.split(' ') #按照空格分开 (原本的句子中的单词空格和非字母字符变为的空格)
19         list1=[]
20         for n in range(len(d)):
21             if 0<len(d[n])<=19:  #字符满足条件的,就直接加入新的列表
22                 list1.append(d[n][:])
23             elif len(d[n])>20:
24                 list1.append(d[n][:19])
25 
26         e = list1[::-1] #逆序
27         print(' '.join(e)) #以空格链接单词,组成新的一句话,重新输出
28     except Exception:
29         print("字符串非空且长度小与10000,请再次输入:")
View Code

 

 

 

 1 ss = input()
 2 ss_list = []
 3 for i in ss:
 4     ss_list.append(i)
 5 print(ss_list)
 6 a=ss_list.sort()
 7 print(a)
 8 ss_new=sorted(ss_list)
 9 for i in ss_new:
10     print(i,end='')
View Code

 参考

 1 while True:
 2     try:
 3         a = input()
 4         a = list(a) #将字符串放入列表中,每个字符为一项
 5         for i in range(len(a)):
 6             a[i] = ord(a[i]) #先转化为ASCLL码
 7         a.sort() #按照ASCLL排序
 8         for i in range(len(a)):
 9             a[i] = chr(a[i]) #再将每个ASCLL还原为字符
10         print(''.join(a)) #按要求输出
11     except:
12         break
13 
14 """
15 因为要求以ASCII码从小到大排序,所以考虑先把每一个字符转换为ASCII码,放入一个列表,然后对这个列表进行排序并生成排序后的新列表,
16 最后把新列表中的每一个ASCII码元素转换为字符放入结果列表中,对结果列表元素拼接转换为字符串输出
17 """
18 def func(s):
19     s_lsit=[] # 这个空列表用于装字符串全部转换后的ASCII码
20     for item in s:
21         s_lsit.append(ord(item)) #遍历每一个元素,转换为ASCII码,追加进列表
22         pass
23     news_list=sorted(s_lsit) # ACSII码列表排序
24     res_list=[]# 这个空列表装排序后各个ASCII码转回字符
25     for item in news_list:
26         res_list.append(chr(item))# 遍历每一个ASCII码,转换为字符,追加列表
27         pass
28     print("".join(res_list)) # 将列表打印为字符串
29     pass
30 
31 while True:
32     try:
33         s=str(input())
34         func(s)
35         pass
36     except:
37         break
38 
39 
40 #sorted 排序也是按ASCII码排序
41 while True:
42     try:
43         print(''.join(sorted(input())))
44     except:
45         break
View Code

 

 

 

 

 

 

 

 

 1 #找到值与行列的关系,即 value=(i+j-2)*(i+j-1)/2+j,i,j是所属行与列。然后判定换行的时机,即j=N-i+1时,所属行已排满,换行
 2 while True:
 3     try:
 4         m = int(input())
 5         for i in range(1, m + 1):
 6             for j in range(1, m - i + 2):
 7                 if j == m - i + 1:
 8                     print((i + j - 2) * (i + j - 1) // 2 + j)
 9                 else:
10                     print((i + j - 2) * (i + j - 1) // 2 + j, end=' ')
11     except:
12         break
13 
14 #########################################################3
15 
16 while True:
17     try:
18         n = int(input())
19         number = 0
20         for i in range(n + 1):
21             number += i
22         L = []
23         for i1 in range(n):
24             L.append([])
25 
26         while number > 0:
27             for i2 in range(n):
28                 L[i2].append(str(number - i2))
29             number -= n
30             n -= 1
31 
32         for item in L:
33             print(" ".join(item[::-1]))
34     except:
35         break
36 
37 """
38 咱比较笨,找不到数字之间的规律,只能按照蛇形矩阵本来的规则来。
39 把蛇形矩阵旋转45度其实就是个金字塔,最上面是1,最右下方是最大的数,即10
40 原本:
41 1 3 6 10
42 2 5 9
43 4 8
44 7
45 旋转一下:
46 1
47 2 3
48 4 5 6
49 7 8 9 10
50 list1就是旋转后的矩阵
51 然后可以发现旋转后的矩阵里每一行的最后一个元素,就是蛇形矩阵中第一行的元素,倒数第二个元素就是第二行的,依次类推。
52 """
53 while 1:
54     try:
55         n = int(input())
56         list1 = []
57         for i in range(1,n+1):
58             list1.append([0]*i)
59         a = 0
60         for i in range(n):
61             for j in range(i+1):
62                 a = a + 1
63                 list1[i][j]=a
64         list2,she = [],[]
65         for i in range(1,n+1):
66             for line in list1:
67                 if line:
68                     list2.append(line.pop(-1))
69             she.append(" ".join(map(str,list2)))
70             list2 = []
71         for i in she:
72             print(i)
73     except:
74         break
View Code

 

 

 

 1 while True:
 2     try:
 3         a = 0
 4         b = 1
 5         month = int(input())
 6         if month < 3:
 7             print(1)
 8         else:
 9             for i in range(month):
10                 c = a + b
11                 a = b
12                 b = c 
13             print(a)
14     except:
15         break
16         
17         
18 while True:
19     try:
20         month=int(input())
21         n=month-1
22         def func(n):
23             if n<2:#基线条件
24                 return 1
25             else:#递归条件
26                 return func(n-1)+func(n-2)
27         print(func(n))
28     except:
29         break        
30         
31 import sys
32 for s in sys.stdin:#s=input()读入数据的1行
33     month=int(s)
34     L=[]
35     for i in range(month):
36         if i<2:#前两个月都为1
37             total=1
38             L.append(total)
39         else:
40             total=L[i-1]+L[i-2]#之后均为前两个数的和
41             L.append(total)
42     print(L[-1])#最后的列表L=[1, 1, 2, 3, 5, 8, 13, 21, 34]
View Code

 小甲鱼的实现

 1 ###小甲鱼的递归函数
 2 def fab(n):
 3     if n<1:
 4         print('输入有误!!!')
 5         return -1
 6     if n ==1 or n==2:
 7         return 1
 8     else:
 9         return fab(n-1)+fab(n-2)
10 
11 
12 result =fab(20)
13 
14 if result != -1:
15     print('总共有%d对小兔子诞生!'% result)
16 
17 
18 #小甲鱼的迭代实现
19 def fab(n):
20     a =1
21     b =1
22     if n <1:
23         print("输入有误!")
24         return  -1
25     if n ==1 or n ==2:
26         return 1
27     while(n-2)>0:
28         c =a+b
29         a=b
30         b=c
31         n-=1
32     return c
33 
34 result =fab(-1)
35 
36 if result != -1:
37     print('总共有%d对小兔子诞生!'% result)
View Code

 

 

 

 

 1 while True:
 2     try:
 3         ss = input()
 4         count_Char = 0
 5         count_num = 0
 6         count_null = 0
 7         count_other = 0
 8         for i in range(len(ss)):
 9             if ss[i].isalpha() == True:  # 字母
10                 count_Char += 1
11             elif ss[i].isnumeric()== True: #数字字符
12                 #ss.isdigit() 只包含数字
13                 count_num += 1
14             elif ss[i]==' ': #空格
15                 count_null += 1
16             else:
17                 count_other += 1
18 
19         print(count_Char)  # 字母
20         print(count_num)  # 数字
21         print(count_null)  # 空格
22         print(count_other)  # 其他字符
23     except:
24         break
25 
26 #
27 #
28 while True:
29     try:
30         s=input()
31         l=[0,0,0]
32         for i in s:
33             l[0]+=int(i.isalpha())
34             l[1]+=int(i.isspace())
35             l[2]+=int(i.isnumeric())
36         print(l[0])
37         print(l[1])
38         print(l[2])
39         print(len(s)-l[0]-l[1]-l[2])
40     except:
41         break
View Code

 

 1 import re
 2 while True:
 3     try:
 4         s = input()
 5         print(len(''.join(re.findall(r'[a-zA-Z]+', s))))
 6         print(len(''.join(re.findall(r' ', s))))
 7         print(len(''.join(re.findall(r'\d', s))))
 8         print(len(''.join(re.findall(r'[^a-zA-Z0-9 ]+', s))))
 9     except:
10         break
View Code

 

 

 

 

 

3

posted on 2022-03-29 23:05  pf42280  阅读(50)  评论(0编辑  收藏  举报