8 #terrible code for i inrange(100): if i % 2 == 0: print('%d is an even number\n'%i) if i % 3 == 0: print('%d can be divided by 3\n'%i) #tell people it's over print('It\'s over')
输出样例
1 2 3 4 5 6 7 8
# terrible code for i inrange(100): if i % 2 == 0: print('%d is an even number\n'%i) if i % 3 == 0: print('%d can be divided by 3\n'%i) # tell people it's over print('It\'s over')
解答
先处理tab,利用str.expandtabs()函数将所有tab替换为 4 个空格。
然后补全空格,先算出行首空格数,然后用str.lstrip()去掉空格再添加空格。
最后补全#后的空格,遍历搜索。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import math n = int(input()) for j inrange(n): line = input() length = len(line) # 替换tab后去掉开头空格 line = line.expandtabs(4).lstrip() # 补全空格 line = " "*math.ceil((length-len(line))/4)*4+line lis = list(line) # 补上第一个#后的空格 for i inrange(len(lis)): if(lis[i] == '#'and i+1 < len(lis) and lis[i+1] != ' '): lis.insert(i+1, ' ') print("".join(lis))
输出和样例一样,一直报PE。
转圈圈
这题总算过了
时间限制: 1000 ms 内存限制: 65536 kb
题目
题目描述
情人节到了(其实是过去了),偷偷送大家一道题。
本题要求你输出一个尺寸为 d×d 的数阵,数字的排列方式是从 1 到 n 循环且顺时针转圈,看样例输出。
n = int(input()) d = int(input()) # d*d列表 a = [[0]*d for i inrange(d)] # 填充方向 direct = 0 # 当前填充坐标 x = 0 y = 0 for i inrange(d*d): a[x][y] = i % n+1 if direct == 0: if y+1 < d and a[x][y+1] == 0: y += 1 else: x += 1 direct = 1 elif direct == 1: if x+1 < d and a[x+1][y] == 0: x += 1 else: y -= 1 direct = 2 elif direct == 2: if a[x][y-1] == 0: y -= 1 else: x -= 1 direct = 3 else: if a[x-1][y] == 0: x -= 1 else: y += 1 direct = 0 for i in a: s = [str(j) for j in i] print(" ".join(s))