Pythond的源码来解决题目,难不难?

112 阅读2分钟

注意:我用的python3.7,大家如果用Python3.0以下的版本,请记得在print去掉()哦!

![](https://upload-images.jianshu.io/upload_images/24896955-091958abbe3f3bb2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

**题目:企业发放的奖金根据利润提成。**利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

方法一: 这种方法是我用数学的原理做的,就是把每种情况都列出一个表达式,最后简化表达式,然后直接根据输入的利润 I 来计算表达式的值,也就是奖金总数。就是把奖金叠加起来,具体算法还是要在纸上计算,这种方法适用于初学编码的人,比如我,用最笨的数学思路解决问题,就是说在数学上你是按照什么方法做的,然后把他转化成代码,就比较容易理解了。

-- coding: UTF-8 --

while True:

I = input("pls input the lirun:")

if I <= 10:

a = I * 0.01

print (a)

elif I <= 20 and I > 10:

b =0.25 + I * 0.075

print b

elif I <= 40 and I > 20:

c = 0.75 + I * 0.05

print (c)

elif I <= 60 and I > 40:

d = 0.95 + I * 0.03

print (d)

elif I <= 60 and I > 100:

e = 2 + I * 0.015

print (e)

else:

f = 2.95 + I * 0.01

print (f)

3.题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

程序分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。这里要用到数学中的开方函数 sqrt。

-- coding: UTF-8 --

import math

for i in range(10000):

x = int(math.sqrt(i + 100))

y = int(math.sqrt(i + 268))

if (x * x == i + 100) and (y * y == i + 268):

print (i)