python办公实例100例-Python 100例(上)

本文介绍了100个使用Python编程解决的实际问题,包括数字计算、逻辑判断、数据处理、字符串操作、列表操作等多个方面。通过实例1至实例30展示了如何计算无重复三位数的数量、利润提成计算、完全平方数查找、日期处理、斐波那契数列、水印花数、判断素数等,深入浅出地讲解了Python的基本语法和常见问题的解决方案。
摘要由CSDN通过智能技术生成

如果你已经把基础看完,可以尝试一下看看以下例子了,如果不会做也不要紧,你要尝试手动把所有的代码都敲一边。别嫌麻烦,因为都是从麻烦到简单的。

实例1:

题目:有1、2、3、4个数字,能组成多少个相互不同且无重复的三位数?都是多少?

ContractedBlock.gif

ExpandedBlockStart.gif

#!/usr/bin/env python#--*--coding:utf-8 --*--'''可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。'''

for i in range(1,5):

for j in range(1,5):

for k in range(1,5):

if (i != j) and (i != k) and (k != j):

print i, j, k实例1

输出结果:

ContractedBlock.gif

ExpandedBlockStart.gif

1 2 3

1 2 4

1 3 2

1 3 4

1 4 2

1 4 3

2 1 3

2 1 4

2 3 1

2 3 4

2 4 1

2 4 3

3 1 2

3 1 4

3 2 1

3 2 4

3 4 1

3 4 2

4 1 2

4 1 3

4 2 1

4 2 3

4 3 1

4 3 2View Code

实例2:

题目:企业发放的奖金根据利润提成。利润(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%提成,从键盘输入当月利润,求应发放奖金总数?

ContractedBlock.gif

ExpandedBlockStart.gif

#!/usr/bin/env python#--*--coding:utf-8 --*--'''需求:

0-10万提成10%

10-20万提成7.5%

20-40万提成5%

40-60万提成3%

60-100万提成1.5%

100万以上1%

思路:

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

'''注:如果列表的顺序相反,计算结果不一样'''

i = int(raw_input('input:'))

m = [1000000,600000,400000,200000,100000,0]

t = [0.01,0.015,0.03,0.05,0.075,0.1]

r = 0

for s in range(0,6):#循环列表元素数 if i>m[s]:#判断输入的元素 r+=(i-m[s])*t[s]

print (i-m[s])*t[s]

i=m[s]

print rView Code

输出结果:

ContractedBlock.gif

ExpandedBlockStart.gif

输入您的利润:300000

5000.0

7500.0

10000.0

22500.0View Code

实例3:

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该书是多少?

ContractedBlock.gif

ExpandedBlockStart.gif

#!/usr/bin/env python#--*--coding:utf-8 --*--'''需求:判断一个数加100是一个数的完全平方数,加168是另一个数的完全平方数。

思路:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:'''

import math

for i in range(10000):

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

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

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

print iView Code

输出结果:

ContractedBlock.gif

ExpandedBlockStart.gif

156View Code

实例4:

题目:输入某年某年某月某日,判断这一天是这一年的第几天?

ContractedBlock.gif

ExpandedBlockStart.gif

!/usr/bin/env python

#--*--coding:utf-8 --*--'''需求:判断输入的日期是本年的第几天

思路:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊       情况,闰年且输入月份大于3时需考虑多加一天:'''

year = int(raw_input('year: '))

month = int(raw_input('month: '))

day = int(raw_input('day: '))

months = [0,31,59,90,120,151,181,212,243,273,304,334]

if 0 <= month <= 12:#判断输入的月份 sum = months[month - 1]

else:

print 'data error'

sum += day

leap = 0

if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):#判断是平年还是润年 leap = 1

if (leap == 1) and (month > 2):

sum += 1

print 'it is the %dth day.' % sumView Code

输出结果:

ContractedBlock.gif

ExpandedBlockStart.gif

year:

2015

month:

12

day:

13

it is the 347th day.View Code

实例5:

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

ContractedBlock.gif

ExpandedBlockStart.gif

#!/usr/bin/env python#--*--coding:utf-8 --*--'''需求:输入三个整数,有小到大进行排序

思路:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。'''

m = []

for i in range(0,3):

n = int(raw_input('input:'))

m.append(n)

m.sort()#从小到大排序#m.sort(reverse = True)#从大到小排序print mView Code

输出结果:

ContractedBlock.gif

ExpandedBlockStart.gif

input:3

input:7

input:1

[1, 3, 7]View Code

实例6:

题目:斐波那契数列。

ContractedBlock.gif

ExpandedBlockStart.gif

#!/usr/bin/env python#--*--coding:utf-8 --*--'''需求:斐波那契数列:0、1、1、2、3、5、8、13、21、34、……。输出第100个斐波数

思路:根据数列规律可以得出下一个数值都是前两个数值的和'''

'''方法一:'''

def fib(n):

a,b = 1,1

for i in range(n-1):

a,b = b,a+b

return a#返回第100个斐波那契数列print fib(100)

'''方法二:'''

def fib(n):

if n == 1 or n == 2:

return 1

return fib(n-1)+fib(n-2)

print fib(100)#如果输出的结果太大的话会消耗cpu建议小点'''方法三:'''

def fib(n):

if n == 1:

return [1]

if n == 2:

return [1, 1]

fibs = [1, 1]

for i in range(2, n):

fibs.append(fibs[-1] + fibs[-2])

return fibs

#输出前 10 个斐波那契数列print fib(100)View Code

输出结果:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值