十二界蓝桥杯青少年Python中级组省赛试题详解——编程题之一
这是Python的整数除法问题。与其它一些语言(例如Java)不同,Python的单斜杠(/)除法不是自适应性的(除法两个操作数全部是整数就采用整除运算),而是都转为浮点数后再相除。那Python有无整除的运算呢?有的,不过需要程序员手动用双斜杠(//)运算符。也就是说,N/7得不到整数商,只有N//7才能得到整数商。
Python的标准输入函数(input)可以有一个提示字符串,也可以没有,但其它一些语言(例如C、Java)的标准输入函数是没有提示符参数的。为了统一,一般的考试都要求不在标准输入函数中有提示符参数。输入提示采用独立的print(提示字符串, end="")语句实现(end=""参数阻止print函数自动换行)。
标准输入函数的返回值是字符串类型,可以用int函数进行类型转换,或用eval转换运算。
程序代码:
运行结果:
拓展阅读:
发生一个公差不是1的等差数列,然后计算数列的和。发生一个等差数列用range函数,前面已经陈述。这里要注意的问题是range的区间是半开的(含头不含尾),因此结束值不能使用N,要用N+1,也要输入公差2参数,即range(1, N+1, 2)。
累计一般使用加法运算赋值号(+=), 例如a+=1和a=a+1的结果是一样的——a值增加1。运算赋值号左边的变量一定要初始化(有一个初始值,没有初始值也要显式赋值0)。a+=1和a=a+1的差别体现在CPU运算上,一般a=a+1需要三个寄存器,分别放置a、1和a+1;而a+=1只要两个寄存器分别放a、1。CPU算法上也是不一样的,总之a+=1比a=a+1更快。
程序代码:
运行结果:
拓展阅读:
Python的乘方运算有三种方法:双乘号(**)、内置函数pow和math模块函数pow,编写下面的代码测试它们。
结果是:
可见,前面两种可以实现整数乘方,后面一种不可以。本题要对乘方值进行判断,最好不使用浮点计算,即用前面两种方法之一。
整除运算(//)得到的是两个整数相除的商,取余运算(%)则得到的是两个整数相除的余数。这样一个3位整数与10的余数就是这个数的个位,商再与10的余数是十位,商除以10的商是百位。
整数的运算结果可以用相等判定符双等号(==)来判定,每相等一次计数器加1,最后打出总数。
程序代码:
运行结果:
下面是另一种算法的程序代码,请在适当的地方加入注释,使代码更加容易被人看懂。
运行结果:

添加 家长论坛微信
全部 0条评论