PAT (Basic Level) Practice 1036 跟奥巴马一起编程 Python解法 | 您所在的位置:网站首页 › 美国总统像小丑 › PAT (Basic Level) Practice 1036 跟奥巴马一起编程 Python解法 |
目录
一、题目二、输入输出三、样例四、题目分析
一、题目
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧! 二、输入输出输入格式: 输入在一行中给出正方形边长 N(3≤N≤20)和组成正方形边的某种字符 C,间隔一个空格。 输出格式: 输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。 三、样例输入样例: 10 a 输出样例: aaaaaaaaaa a a a a a a aaaaaaaaaa 四、题目分析这道题目原理很简单,但是拐了个弯。 1.思路看似简单,但初次编写代码可能会陷入坑中:四舍五入陷阱(以下为仅使用round函数): WA代码: a = input().split() N, C = int(a[0]), a[1] for i in range(round(N/2)): for j in range(N): if ((i!=0) and i!=(round(N/2)-1)) and ((j!=0) and (j!=N-1)): print(end=' ') else: print(str(C),end='') print("")2.正解: 先回顾Python round()函数,python3(注意python2 和 3的round()是不一样的,这里仅以python3作说明)中round()对浮点数的取舍遵循的是“四舍六入五平分”,“五平分”就是根据取舍的位数前的小数奇偶性来判断,奇偶平分,符合公平性原则(四舍五入不是公平的),这样一来也就保证了在数据量较大的情况下,筛选数据的真实性。 因此利用该特性,编写一个万能四舍五入式即可。 AC代码: def new_round(a, b): if isinstance(a, float): if str(a)[::-1].find('.') |
CopyRight 2018-2019 实验室设备网 版权所有 |