python500题:第1章小数运算:玫瑰花圃。
猎风老师的习题课。
下面来看一下小数运算里的最后一道题压轴题:玫瑰花圃。这道题目说有一块n乘n,n是大于等于5的奇数,n乘n的红玫瑰花圃,由它是由n乘n个小正方形花圃组成。现在要求在花圃的最中间一行、最中间一列以及四个顶点种粉色玫瑰,其余的地方是红玫瑰,就这几个地方是粉色玫瑰。
然后他问粉玫瑰占整个玫瑰花围的面积的百分比是多少?举了一个例子,比如n等于5的时候,它的粉玫瑰占比应该是13/25=52%,输入就是一个变量,n代表这个正方形玫瑰花圃的相当于边长一样,要求输出一个百分比比例。
来看一下这张图,这张图就是一个5*5的玫瑰花谱,题目说正中间的一行和正中间的一列以及四个顶角中了粉色的玫瑰,其余的地方是红色的玫瑰。然后他问粉色的玫瑰占整个的面积的比例是多少?
来看一下整个面积的比例,比如这里是一个5*5的,那个小正方形的个数就是25,就25个。然后这个粉色玫瑰是有横过来是一行,然后是5个,竖过来一列也是5个,5+5。因为中间这一块算重复算了一次,要把它减掉,所以要减掉一个,再加上顶点的1234,所以粉色玫瑰的数量应该是13个。
占的比例就用13/25,3除以25,然后得到一个52%的比例,答案就这样来的。
假设它这个边长是n的时候,来算算它的比例应该是多少?总共的小正方形的个数应该是n乘n,因为它是个正方形,就是n的平方,这可以放在分母上,分子就是粉色玫瑰的,它横过来有一行是n个,然后竖过来一列也是n个,这里就有两个n,中间一个是重复算了一次,再把这一个减掉,然后就是再加4个顶角1234,再加一个4。所以最后的结果就是分子是2*n+3,两倍的n减加上一个3,分母就是n的平方,计算一下这个比例就可以了。
但是这个算下来它应该是个小数,要把它变成百分数,之后输出的时候要注意一下,要乘以100,然后单这个百分号可以单独输出一个百分号。
下面来编写一下程序。首先定义一个变量,n是一个整数,代表玫瑰花谱的边长。从键盘输入粉玫瑰的数量,假设建一个变量叫m,它等于多少?是横过来有一个n,竖过来有一个n,所以两倍的n。然后中间有一块是重复算了一次,减掉再加4个顶角,2n减1加4,或者直接写2*n+3也可以。
然后再定义一个变量叫比例,比例就是用分子,分子就是粉玫瑰的数量,m除以分母,分母是n乘n就是n的平方,用括号括起来。然后这个比例因为算下来它是个小数,比如用13除以25,它得到的是0.52,而要变成52.0,要把它先乘以100,这样它会变成52,然后百分号会单独输出。
下面可以打印变量,首先print保留小数点,1位百分号点1f,然后输出比例这个变量,这样比如输入5的时候,实际上就可以输出52.0了。
那这个百分号怎么办?百分号可以后面跟一个百分号字符串,把它放到这个引号里。如果就这样输,它是有一个小错误的。先测一下,比如这里输入一个5,运行自测,看起来好像答案是对的,但是仔细看一下,就会发现52和百分号之间是有空格的,而题目中是紧紧连在一起的,这时候就得修改一下。
把print加一个参数,加一个Sep,参数就是Sep,参数就是间隔,就是指这两个输出的东西之间的间隔,它默认是空格,把它改成不用空格,就直接打一个引号,里面什么也不写就可以了。然后再自测一下,这样就会发现空格就消失了。
递交答案,正确。