程序员的知识教程库

网站首页 > 教程分享 正文

python入门难?几个练习实例 全会就入门了

henian88 2024-09-11 03:45:37 教程分享 9 ℃ 0 评论

第一个

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

程序分析

可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列

后再去 掉不满足条件的排列。

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
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 (i,j,k)

以上实例输出结果为:

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 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%提成,从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴

来分界,定位。

程序源代码:

#!/usr/bin/python3
 
i = int(input('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
    if i>arr[idx]:
        r+=(i-arr[idx])*rat[idx]
        print ((i-arr[idx])*rat[idx])
        i=arr[idx]
print (r)

以上实例输出结果为:

净利润:120000
1500.0
10000.0
11500.0

第三个

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

程序分析:

假设该数为 x。

1、则:x + 100 = n2, x + 100 + 168 = m2

2、计算等式:m2 - n2 = (m + n)(m - n) = 168

3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数

5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1

7、接下来将 i 的所有数字循环计算即可。

程序源代码

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for i in range(1,85):
    if 168 % i == 0:
        j = 168 / i;
        if  i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :
            m = (i + j) / 2
            n = (i - j) / 2
            x = n * n - 100
            print(x)

以上实例输出结果为:

-99
21
261
1581

第四个

题目:八进制

转换为十进制

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
if __name__ == '__main__':
    n = 0
    p = raw_input('input a octal number:\n')
    for i in range(len(p)):
        n = n * 8 + ord(p[i]) - ord('0')
    print n

以上实例输出结果为:

input a octal number:
122
82

第五个

题目:取一个整数a从右端开始的4?7位。

程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个第4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
if __name__ == '__main__':
    a = int(input('input a number:\n'))
    b = a >> 4
    c = ~(~0 << 4)
    d = b & c
    print ('%o\t%o' %(a,d))

以上实例输出结果为:

input a number:
9
11    0

第六个

题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
def inp(numbers):
    for i in range(6):
        numbers.append(int(raw_input('输入一个数字:\n')))
p = 0
 
def arr_max(array):
    max = 0
    for i in range(1,len(array) - 1):
        p = i
        if array[p] > array[max] : max = p
    k = max
    array[0],array[k] = array[k],array[0]
def arr_min(array):
    min = 0
    for i in range(1,len(array) - 1):
        p = i
        if array[p] < array[min] : min = p
    l = min
    array[5],array[l] = array[l],array[5]
 
def outp(numbers):
    for i  in range(len(numbers)):
        print numbers[i]
 
if __name__ == '__main__':
    array = []
    inp(array)        # 输入 6 个数字并放入数组
    arr_max(array)    # 获取最大元素并与第一个元素交换
    arr_min(array)    # 获取最小元素并与最后一个元素交换
    print '计算结果:'
    outp(array)

以上实例输出结果为:

输入一个数字:
1
输入一个数字:
2
输入一个数字:
3
输入一个数字:
7
输入一个数字:
9
输入一个数字:
8
计算结果:
9
2
3
7
8
1

第七个

题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
if __name__ == "__main__":
    N = 10
    # input data
    print ('请输入10个数字:\n')
    l = []
    for i in range(N):
        l.append(int(input('输入一个数字:\n')))
    print
    for i in range(N):
        print (l[i])
    print
 
    # 排列10个数字
    for i in range(N - 1):
        min = i
        for j in range(i + 1,N):
            if l[min] > l[j]:min = j
        l[i],l[min] = l[min],l[i]
    print ('排列之后:')
    for i in range
(N):
        print (l[i])

以上实例输出结果为:

请输入10个数字:

输入一个数字:
5
输入一个数字:
3
输入一个数字:
23
输入一个数字:
67
输入一个数字:
2
输入一个数字:
56
输入一个数字:
45
输入一个数字:
98
输入一个数字:
239
输入一个数字:
9

5
3
23
67
2
56
45
98
239
9

排列之后:
2
3
5
9
23
45
56
67
98
239

第八个

两个 3 行 3 列的矩阵

,实现其对应位置的数据相加,并返回一个新矩阵:

X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]

Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]

程序分析:创建一个新的 3 行 3 列的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
 
Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]
 
result = [[0,0,0],
         [0,0,0],
         [0,0,0]]
 
# 迭代输出行
for i in range(len(X)):
   # 迭代输出列
   for j in range(len(X[0])):
       result[i][j] = X[i][j] + Y[i][j]
 
for r in result:
   print(r)

执行以上代码,输出结果如下:

[17, 15, 4]
[10, 12, 9]
[11, 13, 18]

第九个

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序

打印出各位数字。

程序分析:学会分解出每一位数。

程序源代码:


#!/usr/bin/python
 
x = int(input("请输入一个数:\n"))
a = x // 10000
b = x % 10000 // 1000
c = x % 1000 // 100
d = x % 100 // 10
e = x % 10
 
if a != 0:
    print ("5 位数
:",e,d,c,b,a)
elif b != 0:
    print ("4 位数:",e,d,c,b)
elif c != 0:
    print ("3 位数:",e,d,c)
elif d != 0:
    print ("2 位数:",e,d)
else:
    print ("1 位数:",e)

以上实例输出结果为:

请输入一个数:
3472
4 位数: 2 7 4 3

第十个

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列

的前20项之和。

程序分析:请抓住分子与分母的变化规律。

程序源代码:

#!/usr/bin/python
 
from functools import reduce
 
a = 2.0
b = 1.0
l = []
l.append(a / b)
for n in range(1,20):
    b,a = a,a + b
    l.append(a / b)
print (reduce(lambda x,y: x + y,l))

以上实例输出结果为:

32.6602607986

对python感兴趣的或者想学习python小伙伴可以私聊我大家一起交流学习 分享学习经验

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表