Python 练习100实例(21-40)

Python 练习实例21

**题目:**猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

**程序分析:**采取逆向思维的方法,从后往前推断。

python 复制代码
daypeach = []
daypeach.append(1)
curpeaches = lambda x: (x + 1) * 2
for i in range(0, 9):
    daypeach.append(curpeaches(daypeach[i]))
print('第一天共摘了%d个' % daypeach[9])
python 复制代码
def taozi(n):
    if n == 1:
        return 1
    else:
        return (taozi(n-1)+1)*2
print(taozi(10))   #递归思路

Python 练习实例22

**题目:**两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

python 复制代码
for i in range(ord('x'), ord('z') + 1):
    for j in range(ord('x'), ord('z') + 1):
        if i != j:
            for k in range(ord('x'), ord('z') + 1):
                if (i != k) and (j != k):
                    if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
                        print('order is a -- %s\t b -- %s\tc--%s' % (chr(i), chr(j), chr(k)))
                    
python 复制代码
for a in ['x', 'y', 'z']:
    for b in ['x', 'y', 'z']:
        for c in ['x', 'y', 'z']:
            if(a != b) and (b != c) and (c != a) and (a != 'x') and (c != 'x') and (c != 'z'):
                print('a和%s比赛,b和%s比赛,c和%s比赛' % (a, b, c))
                

Python 练习实例23

**题目:**打印出如下图案(菱形):

**程序分析:**先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

python 复制代码
for i in range(4):
    for j in range(2 - i + 1):
        stdout.write(' ')
    for k in range(2 * i + 1):
        stdout.write('*')
    print('')

for i in range(3):
    for j in range(i + 1):
        stdout.write(' ')
    for k in range(4 - 2 * i + 1):
        stdout.write('*')
    print('')
python 复制代码
for i in range(1, 5):
    print(' ' * (4 - i), end="")
    for j in range(1, 2 * i):
        print('*', end="")
    print()
for i in range(3, 0, -1):
    print(' ' * (4 - i), end="")
    for j in range(1, 2 * i):
        print('*', end="")
    print()

Python 练习实例24

**题目:**有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

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

python 复制代码
a = 2.0
b = 1.0
s = 0
for n in range(1,21):
    s += a / b
    t = a
    a = a + b
    b = t
print (s)
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))

Python 练习实例25

**题目:**求1+2!+3!+...+20!的和。

**程序分析:**此程序只是把累加变成了累乘。

python 复制代码
n = 0
s = 0
t = 1
for n in range(1, 21):
    t *= n
    s += t
print('1! + 2! + 3! + ... + 20! = %d' % s)
python 复制代码
n = int(input("Enter a number:"))
s = 0


def cal(n):
    pro = 1
    for i in range(1, n+1):
        pro = pro*i
    return pro


for i in range(1, n+1):
    if i != n:
        print("%d! + " % i, end='')
    else:
        print("%d! = " % i, end='')
    s = s + cal(i)
print(s)

Python 练习实例26

**题目:**利用递归方法求5!。

**程序分析:**递归公式:fn=fn_1*4!

python 复制代码
def Factorial(n):
    if n == 1:
        fn = 1
    else:
        fn = n * Factorial(n - 1)
    return fn
python 复制代码
def fact(j):
    sum = 0
    if j == 0:
        sum = 1
    else:
        sum = j * fact(j - 1)
    return sum


print(fact(5))

Python 练习实例27

**题目:**利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

python 复制代码
def output(s, l):
    if l == 0:
        return
    print(s[l - 1])
    output(s, l - 1)


s = input('Input a string:')
l = len(s)
output(s, l)
python 复制代码
def desc_output(s):
    if len(s) > 0:
        print(s[-1])            # python 负数下标
        desc_output(s[0:-1])


s = input('Input a string:')
desc_output(s)

Python 练习实例28

**题目:**有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

**程序分析:**利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

python 复制代码
def age(n):
    if n == 1: c = 10
    else: c = age(n - 1) + 2
    return c
print (age(5))
python 复制代码
def age(n):
    if n == 1:
        return 10
    if n > 1:
        return (n - 1) * 2 + 10


print(age(5))

Python 练习实例29

**题目:**给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

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

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)

Python 练习实例30

**题目:**一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

python 复制代码
a = int(input("请输入一个数字:\n"))
x = str(a)
flag = True

for i in range(len(x) // 2):
    if x[i] != x[-i - 1]:
        flag = False
        break
if flag:
    print("%d 是一个回文数!" % a)
else:
    print("%d 不是一个回文数!" % a)

Python 练习实例31

**题目:**请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

**程序分析:**用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。

python 复制代码
letter = input("please input:")
# while letter  != 'Y':
if letter == 'S':
    print('please input second letter:')
    letter = input("please input:")
    if letter == 'a':
        print('Saturday')
    elif letter == 'u':
        print('Sunday')
    else:
        print('data error')

elif letter == 'F':
    print('Friday')

elif letter == 'M':
    print('Monday')

elif letter == 'T':
    print('please input second letter')
    letter = input("please input:")

    if letter == 'u':
        print('Tuesday')
    elif letter == 'h':
        print('Thursday')
    else:
        print('data error')

elif letter == 'W':
    print('Wednesday')
else:
    print('data error')

Python 练习实例32

**题目:**按相反的顺序输出列表的值。

python 复制代码
a = ['one', 'two', 'three']
for i in a[::-1]:
    print(i)

Python 练习实例33

**题目:**按逗号分隔列表。

python 复制代码
L = [1, 2, 3, 4, 5]
s1 = ','.join(str(n) for n in L)
print(s1)

Python 练习实例34

**题目:**练习函数调用。

程序分析: 使用函数,输出三次 RUNOOB 字符串。

python 复制代码
def hello_runoob():
    print('RUNOOB')


def hello_runoobs():
    for i in range(3):
        hello_runoob()


if __name__ == '__main__':
    hello_runoobs()

Python 练习实例35

**题目:**文本颜色设置。

python 复制代码
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'


print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)



# 警告的颜色字体?    # 浅黄色

Python 练习实例36

**题目:**求100之内的素数。

python 复制代码
# 输出指定范围内的素数

# 用户输入数据
lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))

for num in range(lower, upper + 1):
    # 素数大于 1
    if num > 1:
        for i in range(2, num):
            if (num % i) == 0:
                break
        else:
            print(num)
python 复制代码
import numpy as np

num = np.arange(101)
for i in num[1:101]:
    c = 0
    mod1 = [np.mod(i, num[1:101])]
    c = np.count_nonzero(mod1)
    if np.size(mod1) - c <= 2:
        print(i)

Python 练习实例37

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

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

python 复制代码
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])
python 复制代码
n = 0
S = []
T = []
for num in range(1, 11):
    a = int(input("输入: "))
    S.append(a)
for n in range(1, 11):
    b = min(S)
    T.append(b)
    S.remove(b)
print(T)

Python 练习实例38

**题目:**求一个3*3矩阵主对角线元素之和。

**程序分析:**利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

python 复制代码
if __name__ == '__main__':
    a = []
    sum = 0.0
    for i in range(3):
        a.append([])
        for j in range(3):
            a[i].append(float(input("input num:\n")))
    for i in range(3):
        sum += a[i][i]
    print(sum)
python 复制代码
A = {}
for i in range(3):
    for j in range(3):
        A[i, j] = int(input('Enter a number:'))
diag = []
for m in A.keys():
    if m[0] == m[1]:
        diag.append(A[m])
print(sum(diag))

Python 练习实例39

**题目:**有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

**程序分析:**首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

python 复制代码
a = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
b = int(input('输入数字:'))
# 对半查找,提高效率
f0, f1 = 0, len(a) - 1
while f1 - f0 > 1:
    mid = f0 + int((f1 - f0) / 2)
    if a[mid] > b:
        f1 = mid
    else:
        f0 = mid
a.insert(f0 + 1, b)
print(a)

Python 练习实例40

**题目:**将一个数组逆序输出。

**程序分析:**用第一个与最后一个交换。

python 复制代码
if __name__ == '__main__':
    a = [9, 6, 5, 4, 1]
    N = len(a)
    print(a)
    for i in range(len(a) // 2):
        a[i], a[N - i - 1] = a[N - i - 1], a[i]
    print(a)
python 复制代码
b = [15, 55, 668, 88, 99]
print(b[::-1])
相关推荐
Tingjct1 分钟前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
2401_832131953 分钟前
Python单元测试(unittest)实战指南
jvm·数据库·python
猷咪28 分钟前
C++基础
开发语言·c++
IT·小灰灰29 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧31 分钟前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q32 分钟前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳032 分钟前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾32 分钟前
php 对接deepseek
android·开发语言·php
vx_BS8133036 分钟前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_9498683636 分钟前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter