Python练习

http://www.runoob.com/python/python-100-examples.html

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

分析: 列出所有可能,去掉不满足条件的
#!/usr/bin/env python
# -*- coding: utf-8 -*-

count = 0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if (i != k ) and i !=j and j != k:
                print("%s%s%s" % (i,j,k))
                count += 1
print("总数量: ", count)

企业发放的奖金根据利润提成,具体如下

利润(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,求应发放奖金总数?

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

i = int(input("请输入利润: "))

profit = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.15,0.03,0.05,0.075,0.1]
r = 0
for n in range(0,6):
    if i > profit[n]:
        r += (i - profit[n]) * rat[n]
        i = profit[n]
print("奖金: ",r)

题目:在10000以内的数字找一个正整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

数学上,平方数,或称完全平方数,是指可以写成某个整数的平方的数,即其平方根为整数的数。 例如,9 = 3 × 3,它是一个平方数。 平方数也称正方形数,若n 为平方数,将 n 个点排成矩形,可以排成一个正方形。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import math
for i in range(1,10000):
    #if math.sqrt(i + 100) % 1 ==  math.sqrt(i + 268) % 1:
    if math.ceil(math.sqrt(i + 100)) ==  math.sqrt(i + 100) and math.ceil(math.sqrt(i + 268)) == math.sqrt(i + 268):
        print(i)

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

  1. 年份能被4整除;
  2. 年份若是 100 的整数倍的话需被400整除,否则是平年。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

year = int(input("year: "))
month = int(input("month: "))
day = int(input("day: "))
sum = day

days = [31,28,31,30,31,30,31,31,30,31,30,31]

for i in range(0,month - 1):
    sum += days[i]

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("%s 是闰年" % (year))

print("It is the %sth day of %s/%s/%s" % (sum,year,month,day))

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

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

l = []
for i in range(3):
    x = int(input("请输入一个整数: "))
    l.append(x)
l.sort()
print(l)

斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

递归,输出第n个数

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

def fib(n):
    if n == 0 or n == 1:
        return n
    else :
        return fib(n-2) + fib(n-1)

print(fib(10))

输出一个数列

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

def fib(n):
    if n == 0 :
        return [0]
    if n == 1:
        return [0,1]
    fibs = [0,1]
    for i in range(2,n):
        fibs.append(fibs[i-1] + fibs[i-2])
    return fibs


print(fib(10))
L = [1, 1]
for i in range(10):
    # L.append(L[-2] + L[-1])
    L.append(sum(L[i:]))
print(L)

将一个列表的数据复制到另一个列表中。

使用列表[:]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

a = [1,2,3]
b = a[:]
print(b)
>>> a=[1,2,3]

>>> b=a.copy()
>>> b
[1, 2, 3]

输出 9*9 乘法口诀表。

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

for i in range(1,10):
    print()
    for j in range(1,i+1):
        print(i,"*",j,"=",i*j,"\t",end="")

暂停一秒输出。

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

import time
mydict = {"var1" : 1 , "var2" : 2}
for key,value in dict.items(mydict):
    print(key,value)
    time.sleep(1)

暂停一秒输出,并格式化当前时间。

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

import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))

time.sleep(1)

print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

pass

判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:只能被1和自身整除
#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

l = []
for i in range(101,201):
    count = 0
    for j in range(2,i+1):
        if i % j == 0:
            count += 1
    if count == 1:
        l.append(i)

print(l)
print("素数的数量是: ",len(l))

打印出所有的“水仙花数”

所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

for i in range(100,1000):
    a = i // 100
    b = i // 10 % 10
    c = i % 10
    if (a ** 3 + b ** 3 + c ** 3 == i):
        print(i)

将一个正整数分解质因数。例如:输入90,打印出90=233*5。

pass