测试点2出现在四舍五入有问题;
使用round()会出现一些问题,因为它并不是我们通常数学上的四舍五入,而是类似于物理实验中的四舍五入;
所以,对于python而言,四舍五入就用下面的方法即可解决。
# 假定你需要对num四舍五入,那么应该是下方这个样子 int(num + 0.5)
num, char = input().split() # 获取输入数据 num = int(num) # 将str型num转化为int型,方便后续计算 line = int(num / 2 + 0.5) # 行是列的一半,而且需要四舍五入 column = num # 列 for i in range(line): # 输出正方形 if i != 0 and i != line - 1: print(char + ' ' * (column - 2) + char) else: print(char * column)
有关更详细的四舍五入可以看我的博客,不过我觉得没必要,四舍五入int( + 0.5)是我觉得用的最顺手的了,其它或多或少不是复杂,就是他不是我们传统意义上的四舍五入。