第一题:
题目描述:
输入一个大于1的整数n
对1到n的所有数字进行编码:
①其中遇到3的倍数输出 Fizz
②其中遇到5的倍数输出 Buzz
③其中遇到3和5的倍数输出 FizzBuzz
输入样例1:5
输出样例1:
1 2 Fizz 4 Buzz
输入样例2:100
输出样例2:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
处理程序:
1 # *** 数据输入 *** # 2 n = int(input()) 3 # *** 数据处理 *** # 4 for i in range(1, n+1): 5 if i%3 == 0 and i%5 == 0: 6 print('FizzBuzz') 7 elif i%3 == 0: 8 print('Fizz') 9 elif i%5 == 0: 10 print('Buzz') 11 else: 12 print(i)
第二题:
题目描述:
输入一段字符串,对字符串中的元素进行加密处理,
①a-y所有的字母向后移动一位,例如c-d,f-g
②加密后的字母如果是元音字母(a,e,i,o,u),则转变成大写字母(A.E.I.O.U)
③如果遇到字母z,则移动到a
④遇到其他所有字符则不做变化
上面4个条件全部满足
输出加密优化后的字符串
输入样例1:
funz times*3!
输出样例1:
gvOA Ujnft*3!
处理程序:
1 # *** 辅助函数 *** # 2 # ord('z') == 122 chr(122+1) == '{' 3 VOW_NAMESPACE = {'e': 'E', 'i': 'I', 'o': 'O', 'u': 'U', '{': 'A'} 4 5 6 # *** 数据输入 *** # 7 str_line = input() 8 9 # *** 数据处理 *** # 10 str_out = '' 11 12 for i in str_line: 13 if 97 <= ord(i) <= 122: # ①所有的小写字母向后移动一位ASCII码 14 str_mid = chr(ord(i) + 1) 15 if str_mid in VOW_NAMESPACE.keys(): # ②如果属于需要优化成元音大写的字符进行调整 16 str_mid = VOW_NAMESPACE[str_mid] 17 str_out += str_mid 18 else: # ③其他非小写字符直接接入字符串中 19 str_out += i 20 21 print(str_out)
第三题:
有一个只含有0,1的长方形表格(正方形也是特殊的长方形)
其中各个格子中有0、有1
找出其中最大的一个正方形,其中的所有格子全部都为1
输出这个正方形的面积(一个格子代表1个单位的面积)
输入样例1:0111,1111,1111,1111
输出样例1:9
输入样例2:10100,10111,11111,10010
输出样例2:4
输入样例3:11111,11111,11111,11111,11111
输出样例3:25
处理程序:
1 # *** 辅助函数 *** # 2 def graph_split(graph, y_line, x_line): # 对原始的矩形进行切分,x_line 开头index&结尾index都包含在内 3 [y_start, y_end] = y_line 4 [x_start, x_end] = x_line 5 graph_mid = graph[y_start:y_end + 1] 6 return [gra[x_start: x_end + 1] for gra in graph_mid] 7 8 9 def sum_graph(graph): # 计算图谱的有效面积,统计1的个数 10 sum_now = 0 11 for i in graph: 12 sum_now += sum(i) 13 return sum_now 14 15 # *** 数据输入 *** # 16 str_line = input().split(',') 17 graph = [] 18 for i in range(len(str_line)): 19 d0_mid = [] 20 for j in range(len(str_line[i])): 21 d0_mid.append(int(str_line[i][j])) 22 graph.append(d0_mid) 23 # print(graph) 24 25 # *** 数据处理 *** # 26 X, Y = len(graph[0]), len(graph) 27 length = min(X, Y) 28 state = 1 29 30 for i in range(length,0,-1): # 边长由大到小变化 31 if state == 0: 32 break 33 for j in range(0, X - i + 1): # 从左往右 34 if state == 0: 35 break 36 for k in range(0, Y - i + 1): # 从上往下 37 y_line = [k, k+i-1] 38 x_line = [j, j+i-1] 39 graph_mid = graph_split(graph, y_line, x_line) 40 sum_out = sum_graph(graph_mid) 41 42 if int(i*i) == int(sum_out): # 必须要手动跳出,要不然没办法从while中跳出 43 print(sum_out) 44 state = 0 45 break