Python练习题

这篇具有很好参考价值的文章主要介绍了Python练习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

if __name__ == '__main__':
    count = 0
    for i in range(1,5):
        for j in range(1,5):
            for k in range(1,5):
                #if(i!=j and j!=k and k!=i):
                if (i!=j) and (j!=k) and (k!=i):
                    count = count +1
                    num = i*100 + j*10 + k
                    print(num)
                    #print('{}'.format(i) + '{}'.format(j) + '{}'.format(k))
    print(count)

使用 permutations函数

import itertools
if __name__ == '__main__':
    items = "1234"
    count = 0
    for item in itertools.permutations(items, 3):
        count += 1
        if count % 4:
            print("".join(item), end=" | ")
        else:
            print("".join(item))
    print(count)

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

import math
if __name__ == '__main__':
    for i in range(100000):
        x = int(math.sqrt(i + 100))
        y = int(math.sqrt(i + 168))
        if (x * x == (i + 100)) and (y * y == (i + 168)):
            print(i)

    for i in range(100000):
        if math.sqrt(i + 100) - math.floor(math.sqrt(i + 100)) == 0:
            if math.sqrt(i + 168) - math.floor(math.sqrt(i + 168)) == 0:
                print(i)

【程序 4】
题目:输入某年某月某日,判断这一天是这一年的第几天?

注意:闰年:能被4整除但是不能被一百整除 2、能被四百整除。
闰年的2月份有29天,平年的2月份只有28天。

if __name__ == '__main__':
    year = int(input("please input year:"))
    month = int(input("please input month:"))
    day = int(input("please input day:"))
    sum = 0
    mon = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
    if 0 <= month <= 12:
        sum = sum + mon[month - 1]
    else:
        print("month error!")
    sum = sum + day
    if (year % 400 == 0) or ((year % 100 != 0) and (year % 4 == 0)):
        if month > 2:
            sum = sum + 1
    print("it is %dth day.", sum)

【程序 5】
题目:输入三个整数 x,y,z,请把这三个数由小到大输出。

if __name__ == '__main__':
    x = int(input("please input x:"))
    y = int(input("please input y:"))
    z = int(input("please input z:"))
    if(x>y):
        if(y>z):
            print(z,y,x);
        else:
            if(x>z):
                print(y,z,x);
            else:
                print(y,x,z);
    else:
        if(x>z):
            print(z,x,y);
        else:
            if(z>y):
                print(x,y,z);
            else:
                print(x,z,y);
#方法二
    if y > x:
        if z > y:
            z, x = x, z
        else:
            if x > z:
                y, x = x, y
            else:
                x, y, z = y, z, x
    else:
        if z > x:
            x, y, z = z, x, y
        else:
            if z > y:
                z, y = y, z
    print(z, y, x)

【程序 8】
题目:输出 9*9 口诀表。

if __name__ == '__main__':
    for i in range(1, 10):
        for j in range(1, i+1):
            print("{0}*{1}={2:<4}".format(i, j, i*j), end='')
        print()
    print()
#方式二
    thisList = [0] * 9
    for inedx in range(9):
        thisList[inedx] = list('0' for _ in range(9))

    for i in range(1, 10):
        for j in range(1, i + 1):
            thisList[i - 1][j - 1] = "{0}*{1}={2:<4}".format(j, i, i * j)

    for i in range(9):
        for j in range(9):
            if (thisList[j][i] != '0'):
                print(thisList[j][i], end='')
            elif (thisList[j][i] == '0'):
                print(str(' ' * 8), end='')
        print()
1*1=1   
2*1=2   2*2=4   
3*1=3   3*2=6   3*3=9   
4*1=4   4*2=8   4*3=12  4*4=16  
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  

1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9   
        2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
                3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
                        4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
                                5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
                                        6*6=36  6*7=42  6*8=48  6*9=54  
                                                7*7=49  7*8=56  7*9=63  
                                                        8*8=64  8*9=72  
                                                                9*9=81

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

import copy
if __name__ == '__main__':
    # 3个月  1成熟  0大  0中  1小
    # 4个月  1成熟  0大  1中  1小
    # 5个月  1成熟  1大  1中  1小
    # 6个月  2成熟  1大  1中  2小
    # 7个月  3成熟  1大  2中  3小
    # 8个月  4成熟  2大  3中  4小
    # 9个月  6成熟  3大  4中  6小
    list = [1, 0, 0, 0]
    list1 = [0, 0, 0, 0]
    sum1 = 0
    x = int(input("请输入月份:"))
    for i in range(x + 1):
        if i < 3:
            sum1 = 1
        else:
            list1[2] = list[3]
            list1[1] = list[2]
            list1[0] = list[1] + list[0]
            list1[3] = list1[0]
            list = copy.copy(list1)
            print("list1:", list1)
            sum1 = sum(list1)
    print("兔子总数为:", sum1)
#斐波那契数列
    month = int(input('繁殖几个月?: '))
    month_1 = 1
    month_2 = 0
    month_3 = 0
    month_elder = 0
    for i in range(month):
        month_1, month_2, month_3, month_elder = month_elder + month_3, month_1, month_2, month_elder + month_3
        print('第%d个月共' % (i + 1), month_1 + month_2 + month_3 + month_elder, '对兔子')

【程序 12】
题目:判断 101-200 之间有多少个素数,并输出所有素数。

素数的定义:只能被1以及自身整除的数
注意!!若x<2,那么x一定不是素数!!,因为最小的素数是2!

if __name__ == '__main__':
    l = []
    for i in range(101, 200):
        for j in range(2, i - 1):
            #能被除了一和自身的数整除,说明不是素数
            if i % j == 0:
                break
        else:
            l.append(i)
    print(l)
    print("总数为:%d" % len(l))

【程序 13】
题目:打印出所有的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个“水仙花数” ,因为 153=1 的三次方+5的三次方+3的三次方。

if __name__ == '__main__':
    count = 0
    for i in range(100, 1000):
        f = i
        # 提取百位数
        a = int(f / 100)
        # 提取十位数
        f -= a * 100
        b = int(f / 10)
        # 提取个位数
        c = f - b * 10

        # 判断是否是水仙花数
        if a ** 3 + b ** 3 + c ** 3 == i:
            print(i,"=","{}**3 + {}**3 + {}**3".format(a,b,c))
            count += 1
    print("共有 %d 个水仙花数" % count)

【程序 14】
题目:将一个正整数分解质因数。例如:输入 90, 打印出 90=233*5 。

def prime_factor(n):
    result = []
    if n <=0:
        return '请输入为正整数!!!'
    if n == 1:
        return '1无法被分解'

    print(n, '=', end="")
    for i in range(2, n + 1):
        while n % i == 0:  # 能除尽就继续除,除不尽就跳到 for 循环除下一个数
            if i == n:
                result.append(i)
                print(i, end="")
                break
            result.append(i)
            print(i, end="*")
            n = n / i
    print('')
    return result

if __name__ == '__main__':
    n = int(input("请输入一个正整数:"))
    print(prime_factor(n))

【程序 19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如 6=1+2+3。编程找出 1000 以内的所有完数。

因子就是所有可以整除这个数的数,不包括这个数自身.因数包括这个数本身而因子不包括

from functools import reduce

def factor(num):
    #target=int(num)
    res=set()
    for i in range(1,num):
        if num%i==0:
            res.add(i)
            res.add(num/i)
    return res

if __name__ == '__main__':
    #方法1
    for m in range(2,1001):
        L = [1]
        for n in range(2,int(m/2)+1):
            if m%n==0:
                L.append(n)
        if m == reduce(lambda x,y:x+y,L):
            print(m)
            print(L)

    print("------方法二------------")
    #方法二
    for i in range(2,1001):
        factors = []
        for j in range(1,i):
            if i%j == 0:
                factors.append(j)
        if sum(factors) == i:
                print(i)
                print(factors)

    print("------方法三-----------")
    #方法三
    for i in range(2,1001):
        if i==sum(factor(i))-i:
            print(i)

【程序 20】
题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?

if __name__ == '__main__':
    poll = 100
    L = []
    a = int(input("请输入次数:"))
    L.append(poll)
    for i in range(1,a):
        poll = round(poll/2,2)
        print("第{}次,{}米".format(i,poll))
        L.append(poll*2)
    poll = round(poll / 2,2)
    L.append(poll)
    print("最后一次,{}米".format(poll))
    print("{}次后,共计{}米".format(a,sum(L)))

【程序 25】
题目:求 1+2!+3!+…+20! 的和

def func(x):
    if x == 1 or x == 0:
        return 1
    else:
        return x * func(x-1)
        
if __name__ == '__main__':
    n = 0
    s = 0
    t = 1
    for n in range(1, 21):
        t *= n
        s += t
    print('1! + 2! + 3! + ... + 20! = %d' % s)
# 递归法
    sum = 0
    for i in range(1, 21):
        sum += func(i)
    print(f"1+2!+3!+...+20! = {sum}")

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

if __name__ == '__main__':
    num = input("请输入一个五位数")
    x = str(num)
    if len(x) != 5:
        print("{}不是一个五位数".format(num))
    else:
        flag = True

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

    #方法二
    a = num[:1]
    b = num[1:2]
    c = num[2:3]
    d = num[3:4]
    f = num[4:5]
    
    if a == f and b == d:
        print("是回文数")
    else:
        print("不是")

【程序 27】
题目:利用递归函数调用方式,将所输入的一个单词或句子,以相反顺序打印出来。

def f(x):
    if x == -1:
        return ''
    else:
        return str[x] + f(x - 1)

if __name__ == '__main__':
    str = input('请输入若干字符:')
    print(f(len(str) - 1))

【程序 33】
题目:学习 gotoxy() 与 clrscr() 函数。

gotoxy()clrscr() 是两个在早期计算机编程中常见的文本界面操作函数,通常用于在文本模式下移动光标和清除屏幕内容。这两个函数在现代编程中不太常见,因为大多数编程任务都是在图形用户界面中完成的。然而,如果你正在使用一种需要控制文本界面的编程语言,这些函数可能会有用。

下面是它们的简单示例,以及它们如何在Python中使用。

gotoxy() 函数

gotoxy() 函数通常用于在文本模式下移动光标到指定的行和列位置。具体的实现方式可能因编程环境而异。

在Python中,你可以使用 ANSI 转义序列来实现类似的效果。以下是一个使用Python的示例代码:

import sys

def gotoxy(x, y):
    print(f"\033[{y};{x}H", end='')

# 使用示例
gotoxy(10, 5)  # 将光标移动到第 10 行,第 5 列
print("Hello, World!")

这里使用 ANSI 转义序列 "\033[y;xH" 来移动光标到指定位置,其中 xy 分别代表行和列。

clrscr()` 函数

clrscr() 函数通常用于清空屏幕上的所有内容。在Python中,你可以使用以下方法来清空屏幕:

import os

def clrscr():
    if os.name == 'posix':
        os.system('clear')  # 适用于 Linux 和 macOS
    elif os.name == 'nt':
        os.system('cls')  # 适用于 Windows

# 使用示例
clrscr()

【程序 69】
题目:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈子,问最后留下的是原来第几号的那位。

这是一个经典的约瑟夫问题,可以使用循环链表的方式来解决。下面是Python代码示例来求解这个问题:

def find_survivor(n):
    circle = list(range(1, n + 1))
    index = 0  # 用于追踪当前位置

    while len(circle) > 1:
        index = (index + 2) % len(circle)  # 每次报数到3,移动两位
        circle.pop(index)

    return circle[0]

n = int(input("请输入总人数 n: "))
survivor = find_survivor(n)
print(f"最后留下的是原来第 {survivor} 号的那位。")

这段代码首先创建一个包含1到n的列表,表示n个人,然后使用循环模拟报数的过程,每次报数到3,就从列表中删除掉该人。最后,当只剩下一个人时,就是最后留下的人。

这个问题的解法利用了循环链表的思想,确保每次删除的人都是相对于前一个人的下一个人。文章来源地址https://www.toymoban.com/news/detail-475099.html

到了这里,关于Python练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习课后练习题(期末复习题目附答案)

    此为第一章绪论部分 一. 单选题 1. 移动运营商对客户的流失进行预测,可以使用下面哪种机器学习方法比较合适( ) A. 一元线性回归分析 B. 关联方法 C. 聚类算法 D. 多层前馈网络 正确答案: A 2. 下面哪种说法有关机器学习的认识是错误的?( ) A. 高质量的数据、算力和算法对一个机

    2024年02月07日
    浏览(31)
  • 100道软件测试练习题,看看你能有多少分

    软件测试与质量保证-软件测试部分练习题 1单选(2分) 软件测试用例主要由输入数据和_________两部分组成。 A.预期输出结果2.00/2.00 B.测试计划 C.以往测试记录分析 D.测试规则 2单选(2分) 与设计测试用例无关的文档是_________。 A.项目开发计划2.00/2.00 B.源程序 C.需求规格说明书 D

    2024年02月05日
    浏览(27)
  • 10 SQL进阶 -- 综合练习题 -- 10道经典SQL题目,配套数据与解答

    点击下方链接直接下载 创建数据表脚本:http://tianchi-media.oss-cn-beijing.aliyuncs.com/dragonball/SQL/create_table.sql 执行建表语句 执行成功 查看创建的表 点击下方链接直接下载 插入数据脚本:https://tianchi-media.oss-cn-beijing.aliyuncs.com/dragonball/SQL/data.zip 大家下载好脚本后,先在MySQL环境中运

    2024年04月27日
    浏览(31)
  • 数字图像处理练习题

    本习题来自高飞的数字图像处理教程,仅供参考! 1.什么是数字图像? 数字图像是由离散的像素点组成的图像,每个像素点都具有特定的位置和色彩信息。这些像素点按照一定的排列方式构成图像,而图像则可以通过在空间中的不同位置和颜色来表示视觉信息。数字图像通常

    2024年02月02日
    浏览(26)
  • 蓝桥杯官网练习题(幸运数字)

    问题描述 哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如 126 是十进制下的一个哈沙德数,因为 (126)10​mod(1+2+6)=0;126 也是八进制下的哈沙德数,因为 (126)10=(176)8,(126)10mod(1+7+6)=0;同时 126 也是 1616 进制下的哈沙德数,因为 (126)10=(7e)1

    2024年02月09日
    浏览(32)
  • 【Java基础篇】逻辑控制练习题与猜数字游戏

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏 :Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用,数组的使用,类和对象,继承和多态,抽象类和接口等内容 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 判

    2024年02月08日
    浏览(34)
  • JAVA面向对象练习题,课后编程题。题目为:公司员工分为5类,每类员工都有相应的封装类。

    某公司的员工分为5类,每类员工都有相应的封装类,这5个类的信息如下 (1)Employee:这是所有员工的父类。 ①属性:员工的姓名、员工的生日月份。 )方法:getSalary(int month)根据参数月份确定工资。如果该月员工过生日,则公司会额外发放100元。 (2)SalariedEmployee:Employee 

    2024年02月05日
    浏览(38)
  • 模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题

    各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。 我们要想实现某个函数,我们肯定要先知道这个函数的作用是什么,然后我们再根据它的作用来自己实现。我们先来看看stoi函数在库

    2023年04月19日
    浏览(45)
  • python文件练习题

    【问题描述】 从一个文本文件内读入任意多个学生的分数,求出最高分,最低分和平均分存入文件result.txt内。 【输入形式】 一个文件,文件中分数之间由换行隔开,输入的文件名为grade.txt。输入的分数都是整数。 【输出形式】 计算出grade.txt中所有分数的最高分,最低分和

    2024年02月03日
    浏览(33)
  • 【练习题】python列表

    1. 基础题 已知一个数字列表,打印列表中所有的奇数 已知一个数字列表,打印列表中所有能被能被3整除但是不能被2整除的数 已知一个数字列表,计算所有偶数的和 已知一个数字列表,统计列表中十位数是 1 的数的个数 已知一个列表,获取列表中下标为奇数是所有元素(从

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包