Python 练习题

# -*- coding:UTF-8 -*-

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

for i in range(1,5):

    for j in range(1,5):

        if i!=j:

            for k in range(1,5):

                if k!=i and k!=j:

                    print i,j,k

#求月利润

i = int(raw_input("请输入利润,单位为万元"))

a = [10, 20, 40, 60, 100]

j = 0

k = 0

while i > 0:

    if i>a[j]:

    i -= a[j]

    j += 1

 

# 求输入的日期是一年当中的第几天

year = int(raw_input("输入year\n"))

month = int(raw_input("输入month\n"))

day = int(raw_input("输入day\n"))

m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]

result = 0

if 0 < month <= 12:

    result += m[month - 1]

else:

    print "错误的月份"

if 0 < day < 32:

    result += day

else:

    print "错误的日期"

specialYear = 0

if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):

    specialYear = 1

if specialYear == 1 and month > 2:

    result += 1

print '这是第 %d 天' % result

 

#斐波那契数列

   F0=0 F1=1 FN=F[N-1]+F[N-2]

   # 问题同有一对兔子,从出生后第3个月起

   #  每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,

   #  假如兔子都不死,问每个月的兔子对的总数为多少?

   #  若从兔子出生的j个月开始生兔子,则FN=F[N-1]+F[N-i+1]

def fib(n):

    a, b = 0, 1

    for i in range(n):

        a, b = b, a + b

    return a

print fib(3)

 

#复制列表 暂停5秒  格式化当前时间

import time

a = [1, 2, 3, 4]

b = a[:]

print b

time.sleep(5) #暂停5秒

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

 

#打印水仙花数

n = 100

while n < 1000:

    i = n / 100

    j = (n - i*100) / 10

    k = n - i*100 - j*10

    if n == i**3 + j**3 + k**3:

        print n

    n += 1

 

#分解质因数

def depart(n):

    print '%d = ' % n,

    result = []

    while n > 1:

        for i in range(2, n+1):

          if n % i == 0:

              result.append(i)

              n /= i

              break

    for i in result:

        print i ,

        if i != result[-1]:

            print '*' ,



##调用算法

#depart(90)

 

#完数:值为因子之和  6=1+2+3

for num in range(2, 1000):

    n = num

    result = 1

    for i in range(2, n):

        if n % i == 0:

            result += i



    if result == num:

         print num

 

#从9到1 ,取值

for i in range(9,0,-1):

    print i

 

# 两个乒乓球队进行比赛,各出三人。

# 甲队为a,b,c三人,乙队为x,y,z三人。

# 已抽签决定比赛名单。有人向队员打听比赛的名单。

# a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

x = ['b', 'c']

y = ['a', 'b', 'c']

z = ['b']

s = True

while s:

    if len(x) == 1:

      i = x[0]

      if y.count(i)>0:

          y.remove(i)

      if z.count(i)>0:

          z.remove(i)

    if len(y) == 1:

      i = y[0]

      if x.count(i) > 0:

          x.remove(i)

      if z.count(i) > 0:

          z.remove(i)

    if len(z) == 1:

       i = z[0]

       if y.count(i) > 0:

          y.remove(i)

       if x.count(i) > 0:

          x.remove(i)

    if len(z) == 1 and len(x) == 1 and len(y) == 1:

        s=False

print 'xyz分别对应'+ x[0],y[0],z[0]

 

# 用lambda创建匿名函数 true作为数字使用值为1,false值为0

x = 10

y = 20

MAXIMUM = lambda x, y: (x > y) * x + (x < y) * y

MINIMUM = lambda x, y: (x < y) * x + (x > y) * y

print '最大值为 %d' % MAXIMUM(x,y)

print '最小值为 %d' % MINIMUM(x,y)

 

# 输出随机数

import random

print random.uniform(0,1)

 

# 只在直接执行此文件代码时执行,若被导入到其他模块中则不执行此函数下的代码

# 设置一个低4位全为1,其余全为0的数。可用~(~0<<4)

if __name__=='__main__':

    print ~(-234)

# 正数取反:取反(变成负数),再取补码(负数的补码为除符号位之外的位取反,然后加1)

# 负数取反:先取补码,再取反

 

# 画图

if __name__ == '__main__':

    from Tkinter import *



    root = Tk()

    root.title('Canvas')

    canvas = Canvas(width=800, height=600, bg='yellow')

    #canvas.pack(expand=YES, fill=BOTH)

    x0 = 263

    y0 = 263

    x1 = 275

    y1 = 275

    for i in range(0, 26):

        #canvas.create_oval(310 - k, 250 - k, 310 + k, 250 + k, width = 1)

        canvas.create_rectangle(x0,y0,x1,y1)

        x0 -= 5

        y0 -= 5

        x1 += 5

        y1 += 5



    canvas.pack()

    root.mainloop()

 

##画图

if __name__ == '__main__':



    import math

    from Tkinter import *



    class PTS:

        def __init__(self):

            self.x = 0

            self.y = 0





    points = []





    def LineToDemo():



        screenx = 400

        screeny = 400

        canvas = Canvas(width=screenx, height=screeny, bg='white')



        AspectRatio = 0.85

        MAXPTS = 15

        h = screeny

        w = screenx

        xcenter = w / 2

        ycenter = h / 2

        radius = (h - 30) / (AspectRatio * 2) - 20

        step = 360 / MAXPTS

        angle = 0.0

        for i in range(MAXPTS):

            rads = angle * math.pi / 180.0

            p = PTS()

            p.x = xcenter + int(math.cos(rads) * radius)

            p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)

            angle += step

            points.append(p)

        canvas.create_oval(xcenter - radius, ycenter - radius,

                           xcenter + radius, ycenter + radius)

        for i in range(MAXPTS):

            for j in range(i, MAXPTS):

                canvas.create_line(points[i].x, points[i].y, points[j].x, points[j].y)



        canvas.pack()

        mainloop()





    LineToDemo()

 

# 有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数

if __name__ == '__main__':

    n = int(raw_input('整数n为:\n'))

    m = int(raw_input('整数m为:\n'))

    initial_number = []

    for i in range(n):

        initial_number.append(int(raw_input('输入一个数字\n')))

    print '初始数组为:' , initial_number

    t1 = initial_number[0 : n-m]

    print '数组t1为:' , t1

    t2 = initial_number[n-m : n]

    print '数组t2为:' , t2

    t3 = t2 + t1

    print '数组t3为:' , t3

 

Python 练习题是指设计用来提高编程技能和加深对Python语言理解的编程问题。这些练习题通常涉及不同的Python编程概念和技巧,从基础语法到高级主题都有涵盖。以下是一些常见的Python练习题类型: 1. 基础语法练习:这些练习帮助初学者熟悉Python的基本语法,比如变量声明、数据类型、控制结构(if-else语句、循环)以及函数定义等。 2. 数据结构操作:涉及Python内置的数据结构,如列表(list)、字典(dict)、元组(tuple)和集合(set)的操作练习,包括增删改查等。 3. 面向对象编程:包含类和对象的定义、继承、多态和封装等面向对象编程概念的实践题目。 4. 错误和异常处理:学习如何处理在代码执行过程中可能遇到的错误和异常。 5. 文件操作:练习如何在Python中读写文件,包括文本文件和二进制文件的操作。 6. 模块和包:学习如何导入和使用Python标准库中的模块,以及如何创建和使用自定义包。 7. 高级特性:练习Python的高级特性,比如列表推导式、生成器、装饰器和上下文管理器等。 8. 数据处理:包含使用Python进行数据分析和处理的练习,如使用Pandas库操作数据框(DataFrame)。 9. Web开发基础:涉及使用Flask或Django等框架进行简单的Web应用开发。 10. 测试:编写单元测试来验证代码的正确性。 通过解决这些问题,可以系统地提升Python编程技能,并在实际开发中更加得心应手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值