Python 练习
2017-12-12 本文已影响0人
Modelstrategy
# 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
number_list = []
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if (i!=j) and (k !=i) and (k!= j) and ( k != i):
number_list.append(k*100 + j*10 + i)
print(len(number_list))
for num in number_list:
print(num, end = " ")
# 题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
# 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
profit = 120000
num_axis = [1000000, 600000, 400000, 200000, 100000, 0]
rate = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
bonus = 0
for i in range(0, 6):
if profit > num_axis[i]:
bonus += (profit - num_axis[i]) * rate[i]
profit = num_axis[i]
print(bonus)
# 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
# 不会做!滚!
# 输入某年某月某日,判断这一天是这一年的第几天?
year = int(input('year\n'))
month = int(input('month\n'))
day = int(input('day\n'))
day_counter = 0
long_month = [12, 10, 8, 7, 5, 3, 1]
for i in range(0, 7):
if month >= long_month[i]:
if month > 2: # 判断是否已过二月 如果没有过二月不需要判断是否为闰年
if year % 4 != 0: # 判断是否为闰年
day_counter = (6 - i) * 31 + (month - (6 - i) - 2) * 30 + 28 + day
break
else:
day_counter = (6 - i) * 31 + (month - (6 - i) - 2) * 30 + 29 + day
break
else:
day_counter += (month - 1) * 30 + day
break
print(day_counter)
# 输入三个整数x,y,z,请把这三个数由小到大输出。
# 排序?
my_list = []
for i in range(0, 3):
number = int(input())
my_list.append(number)
length = len(my_list)
for i in range(length):
for j in range(length - 1):
if my_list[j] > my_list[j+1]:
my_list[j], my_list[j + 1] = my_list[j + 1], my_list[j]
print(my_list)
# 斐波那契数列
def fib(n):
if n == 1 or n == 2:
return 1
else:
return fib(n-1) + fib(n-2) # wow!
print(fib(10))
# 题目:将一个列表的数据复制到另一个列表中。
new_list = my_list[:]
print('new list ', new_list)
new_new_list = my_list.copy()
print('new new list ', new_new_list)
# 题目:输出 9*9 乘法口诀表。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in numbers:
for j in numbers:
print(i, '*', j, "=" , i*j, '\n', end = '',)
# 暂停一秒输出,并格式化当前时间。
import time
while 1:
fmt = 'Es ist %Y-%B-%d, %A , Örtliche Zeit: %p %H:%M:%S'
print(time.strftime(fmt, time.localtime()))
time.sleep(1)
# 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
# 问每个月的兔子总数为多少
# 判断101-200之间有多少个素数,并输出所有素数。
num = 0
for i in range(101, 201):
for j in range(1, i - 1):
if i / j == 0:
break
else:
num+=1
print(num)
# 输出指定格式的日期。
from datetime import datetime
my_birth = datetime(2001, 1, 1)
format = '%d/%m/%Y'
print(my_birth.strftime(format))
# 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# isspace, isdigit, isalpha 方法
string = input('你看心情随便按')
space_num = 0
digit_num = 0
alpha_num = 0
others_num = 0
for single in string:
if single.isalpha():
alpha_num += 1
elif single.isspace():
space_num += 1
elif single.isdigit():
digit_num += 1
else:
others_num += 1
print('space: %d digit: %d alpha %d, and others: %d' % (space_num, digit_num, alpha_num, others_num))
# 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
n = int(input('how many number should be added? \n'))
s = int(input('what number should be put into the list? \n'))
sL = []
temp = 0
from functools import reduce
for i in range(n):
temp += s
s = s * 10
sL.append(temp)
print(temp)
sum = reduce(lambda x,y : x + y, sL)
print(sum)
# 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
tour, height, times, current_height = [], [], 10, 100
for time in range(1, times + 1):
if time == 1:
tour.append(current_height)
else:
tour.append(2 * current_height)
current_height /= 2
print('total distance: %d' % sum(tour)) # 有错的
print('last time height: %d' % current_height) # 也是有错的
print('total distance: %f' % sum(tour)) # correct
print('last time height: %f' % current_height) # correct
# 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
peach_num = 1
for day in range(10, 1, -1):
temp = ( peach_num + 1 ) * 2
peach_num = temp
print(peach_num)
# 用递归重写
def peach_counter(day):
if day == 10:
return 1
else:
return (peach_counter(day + 1) + 1) * 2
print(peach_counter(1))