python100道上机题-Python100道练习题(不定期更新中)

# 100道练习题

"""

2020.7.9 笔记

"""

"""

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

"""

def exercise_1():

arr = []

for i in range(1, 5):

for j in range(1, 5):

for k in range(1, 5):

num = i * 100 + j * 10 + k

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

arr.append(num)

print(len(arr), arr)

# exercise_1()

"""

本题可以直接使用Python自带的排列函数

itertools:combinations 组合,permutations 排列, combinations_with_replace 放回式组合, product 笛卡尔积

"""

def exercise_1_1():

import itertools

temp = list(itertools.permutations([1, 2, 3, 4], 3))

arr = [t[0] * 100 + t[1] * 10 + t[0] for t in temp]

print(len(arr), arr)

# exercise_1_1()

"""

题目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,求应发放奖金总数?

解析:此类问题可以用数轴方法解决。

"""

def exercise_2():

money = int(input("Please input:"))

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

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

bonus = 0

for i in range(len(arr)):

if money > arr[i]:

bonus += (money - arr[i]) * rat[i]

money = arr[i]

print(bonus)

# exercise_2()

"""

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

分析:考虑区间

m + 100 >= 0,m >= -100

(x + 1)^2 - x^2 = 168,得x = 83.5,上界为84,可以取7000

"""

def exercise_3():

import math

for i in range(-100, 7000):

m = math.sqrt(i + 100)

n = math.sqrt(i + 100 + 168)

if m % 1 == 0 and n % 1 == 0:

print(i)

# exercise_3()

def exercise_3_1():

arr = []

res = []

for i in range(84):

arr.append(i ** 2)

for elem in arr:

if elem + 168 in arr:

res.append(elem - 100)

print(len(res), res)

# exercise_3_1()

"""

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

分析:Python有时间元组

tm_year 年

tm_mon 月(1~12)

tm_mday 日(1~31)

tm_hour 时(0~23)

tm_min 分(0~59)

tm_sec 秒(0~61, 60或61是闰秒)

tm_wday 星期(0~6, 0是周一)

tm_yday 第几天(1~366)

tm_isdst 夏令时

"""

def exercise_4():

import time

data = input('Please input data(ex.2018-1-1)')

res = time.strptime(data, '%Y-%m-%d') # 格式化

print(res.tm_yday)

# exercise_4()

"""

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

分析:排序,对于三个数可以直接判断,sorted()函数即可,此题略。

"""

"""

题目006:斐波那契数列,根据定义计算即可,略

"""

"""

题目007:将一个列表的数据复制到另一个列表中。

分析:注意列表的复制

"""

def exercise_7():

a = [1, 2, 3]

b = a[:]

c = a # 注意区别

a[0] = 4

print(id(a), id(b), id(c), sep=' ')

print(a, b, c, sep=' ')

# exercise_7()

"""

题目008:输出乘法口诀表

分析:略

"""

def exercise_8():

for i in range(1, 10):

for j in range(1, 10):

if j <= i:

st = '{%d} * {%d} = {%d}' % (j, i, j * i)

print('%-20s' % st, end=' ')

print('')

# exercise_8()

def exercise_8_1():

for i in range(1, 10):

for j in range(1, i + 1):

print("{0} * {1} = {2}".format(j, i, i * j), end=" ")

print('')

# exercise_8_1()

"""

题目9:暂停1秒输出

"""

def exercise_9():

import time

a = time.time()

time.sleep(1)

b = time.time()

print(b - a)

# exercise_9()

"""

题目10:暂停1秒输出,并格式化时间

"""

def exercise_10():

import time

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

print(a)

time.sleep(1)

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

print(b)

# exercise_10()

"""

题目011:古典问题:

有一对兔子,

从出生后第3个月起每个月都生一对兔子,

小兔子长到第三个月后每个月又生一对兔子。

假如兔子都不死。

问每个月的兔子总数为多少?

分析:斐波那契数列的变种

"""

def exercise_11():

month = input("Please input the number of mouths:")

m_1 = 1

m_2 = 0

m_3 = 0

for i in range(1, int(month) + 1): # 注意mouth的类型

m_3 += m_2

m_2 = m_1

m_1 = m_3

print(i, m_1 + m_2 + m_3)

# exercise_11()

"""

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

"""

def exercise_12():

import math

arr = []

for i in range(101, 201):

flag = False

for j in range(2, int(math.sqrt(i)) + 1):

if i % j == 0:

flag = False

break

else:

flag = True

if flag:

arr.append(i)

print(len(arr), arr)

# exercise_12()

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值