实例002:"个税计算"
题目: 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
利用解数学题的方式来处理程序.
让程序完成程序擅长的事情,循环及计算.
涉及知识点
1.for循环
2.二维数组
#数据初始化
profit=int(input('Show me the money: '))
bonus=0
thresholds=[[0, 100000], [100000, 200000], [200000, 400000], [400000, 600000], [600000, 1000000],[1000000, profit]]
rates=[0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
#逻辑代码
for i in range(len(thresholds)):
if profit>=thresholds[i][1]:
bonus += (thresholds[i][1]-thresholds[i][0]) * rates[i]
else:
profit = profit - thresholds[i][0]
bonus = bonus + profit * rates[i]
break
print(bonus)
实例003:"完全平方数"
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
涉及知识点:
1.切记要让程序自己完成所有计算,写代码是一个翻译的过程,不是计算的过程.
2.math,round,sqrt
import math
for x in range(0,10000):
if (round(math.sqrt(x+100))-math.sqrt(x+100))==0 and (round(math.sqrt(x+168))-math.sqrt(x+168)==0):
print(x)
break
实例005:"三数排序"
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
input(),输入的都是字符串,如果是比较数字,需要用int()转换成数字类型,不然会比较字符串对应的ascii码.
用append方法在列表中新增数据.
#数据初始化,用循环初始化列表.
raw=[]
for i in range(3):
x = input("please input a number")
raw.append(int(x))
print(raw)
#核心方法是用一个数和其他数比较大小,第一次选出最小的一个放在第一位,第二次选出次小的,以此类推.
#需要注意的是,选出最大的后,这个最大的值不应该再作为比较的对象.
for x in range(len(raw)):
for y in range(x,len(raw)):
if int(raw[x])>int(raw[y]):
raw[x],raw[y] = raw[y],raw[x]
print(raw)
#方法二,直接调用内置函数
print(sorted(raw))
实例006:斐波那契数列
题目:1,1,2,3,5...
if 判断是没有break的,只有循环才有.
p = input("please input a number ")
p = int(p)
raw=[1,1]
if p<=2:
print(raw[0:p])
else:
for i in range(p-2):
raw.append(raw[i] + raw[i+1])
print(raw[0:p])
实例008
题目:输出九九乘法表
9行,所以重复9次,从1到9,即i in range(1,9+1)
列与行的关系是列=行,即j in range(1,i+1)
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%2ld '%(i,j,i*j),end='')
print()
实例011
题目 有一对兔子,从出生后第4个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
i = int(input("繁殖几个月? "))
i = i//3
print("现在有%d只兔子"%(2**(i+1)))
实例012:100到200的素数
题目 判断101-200之间有多少个素数,并输出所有素数。
可以直接用公式.
也可以逆向思维,用去除法.
#定义一个计算x内素数的函数
def primes(x):
a = []
b = []
#生成一个范围内的数列
for i in range(1,x+1):
b.append(i)
#print(b)
#生成一个范围内的合数
for i in range(2, x):
for j in range(i, x):
if j*i<=x:
a.append(j*i)
#print(a)
#列表a除重
##转换成列表达到除重,再转换回来
a = list(set(a))
#print(a)
#把合数去除,剩余质数
for i in range(len(a)):
b.remove(a[i])
#print(len(b))
#print(b)
return b
b = primes(100)
a = primes(200)#
#print(b)
#print(a)
for i in range(len(b)):
a.remove(b[i])
print(len(a))
print(a)
实例013:所有水仙花数
题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
刚刚开始没想到str也是list.
两种方法都可以,后面那个简单一些.
a = []
b = []
for i in range(100,1000):
a.append(i)
for i in range(len(a)):
b = list(str(a[i]))
if (int(b[0]))**3+(int(b[1]))**3+(int(b[2]))**3 == a[i]:
print(a[i])
for i in range(100,x+1):
s = str(i)
one = int(s[0])
ten = int(s[1])
hun = int(s[2])
if i == one**3 + ten**3 + hun**3:
print(i)