跑通代码 理解 自己敲一遍 对照修改 跑通 理解 循环直到完全能自己敲出来并且理解整个代码
自己整理的
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,请再次输入:")
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='')
参考
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
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
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]
小甲鱼的实现
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)
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
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
3