分享

爆肝三万多字带你吃透python最经典基础案例100题❤️【内含题目和程序实现】❤️【python初学者必备】❤️

 zhulin1028 2021-12-29

 前言:

本文为最最基础的python基础题目和答案,适合python初学者使用,可以当作python入门工具书,虽然不具有高深的技术,但是都是企业用的频率最高的,这也是学好Python的必经之路。希望收藏、关注、点赞哦。

如果此文章能帮助到你或者你学到了一点点东西,希望你能给个关注、点赞和评论。期待您的三连。你的关注、点赞和评论对我来说就是我写下去的动力。


Python 练习实例1

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

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

程序源代码:

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

        

Python 练习实例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,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

程序源代码:

i = int(raw_input('jinglirun:'))

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

Python 练习实例3

题目:一个正整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

程序分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:

程序源代码:

import math

for i in range(10000):

    x = int(math.sqrt(i+100))

    y = int(math.sqrt(i+268))

    if(x * x == i + 100)and(y * y == i + 268):

        print i

Python 练习实例4

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

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一天:

程序源代码:

year = int(raw_input('year:\n'))

month = int(raw_input('month:\n'))

day = int(raw_input('day:\n'))



months = (0,31,59,90,120,151,181,212,243,273,304,334)

if 0 < month <= 12:

    sum = months[month - 1]

else:

    print 'data error'

sum += day

leap = 0

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

    leap = 1

if (leap == 1)and (month > 2):

    sum += 1

print 'it is the %dth day.'% sum

Python 练习实例5

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

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

程序源代码:

l = []

for i in range(3):

    x = int(raw_input('integer:\n'))

    l.append(x)

l.sort()

print l

Python 练习实例6

题目:斐波那契数列。

程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

在数学上,费波那契数列是以递归的方法来定义:

def fib(n):

    a,b = 1,1

    for i in range(n-1):

        a,b = b,a+b

    return a



print fib(10)

Python 练习实例7

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

程序分析:使用列表[:]。

程序源代码:

a = [1,2,3]

b = a[:]

print b

Python 练习实例8

题目:输出 9*9 乘法口诀表。

程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

程序源代码:

for i in range(1,10):

    print

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

        print "%d*%d=%d" % (i,j,i*j),

Python 练习实例9

题目:暂停一秒输出。

程序分析:无。

程序源代码:

import time

myD = {1:'a',2:'b'}

for key,value in dict.items(myD):

    print key,value

    time.sleep(1)

Python 练习实例10

题目:暂停一秒输出,并格式化当前时间。

程序分析:无。

程序源代码:

import time

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

time.sleep(1)

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

Python 练习实例11

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

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

程序源代码:

f1 = 1

f2 = 2

for i in range(1,22):

    print '%12ld %12ld' % (f1,f2),

    if (i % 3) == 0:

        print ''

    f1 = f1 + f2

    f2 = f1 + f2

Python 练习实例12

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

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。      

程序源代码:

h = 0

leap = 1

from math import sqrt

from sys import stdout

for m in range(101,201):

    k = int(sqrt(m + 1))

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

        if m%i == 0:

            leap = 0

            break

    if leap == 1:

        print '%-4d' % m

        h += 1

        if h%10 == 0:

            print''

    leap = 1

print 'The total is %d' % h

Python 练习实例13

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

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

程序源代码:

for n in range(100,1000):

    i = n/100

    j = n / 10 % 10

    k = n % 10

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

        print n

Python 练习实例14

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

程序源代码:

def reduceNum(n):

    print '{} ='.format(n),

    if not isinstance(n,int) or n <= 0:

        print 'please'

        exit(0)

    elif n in [1]:

        print '{ }'.format(n)

    while n not in [1]:

            for index in xrange(2,n+1):

                if n % index == 0:

                    n /= index

                    if n == 1:

                        print index

                    else:

                        print'{}*'.format(index),

                    break



reduceNum(90)

reduceNum(100)

Python 练习实例15

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析:程序分析:(a>b)?a:b这是条件运算符的基本例子。

程序源代码:

score = int(raw_input('input score:\n'))

if score >= 90:

    grade = 'A'

elif score >= 60:

    grade = 'B'

else:

    grade = 'C'



print '%d belongs to %s' % (score,grade)

Python 练习实例16

题目:输出指定格式的日期。

程序分析:使用 datetime 模块。

程序源代码:

import datetime

if __name__ == '__main__':

    print(datetime.date.today().strftime('%d/%m/%Y'))

    miyazakiBirthDate = datetime.date(1941,1,5)

    print(miyazakiBirthDate.strftime('%d/%m/%Y'))

    miyazakiBirthDate = miyazakiBirthDate + datetime.timedelta(days=1)

    print(miyazakiBirthDate.strftime('%d/%m/%Y'))

    miyazakiBirthDate = miyazakiBirthDate.replace(year=miyazakiBirthDate.year+1)

    print(miyazakiBirthDate.strftime('%d/%m/%Y'))



Python 练习实例17

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:利用while语句,条件为输入的字符不为'\n'。

程序源代码:

import string

s = raw_input('input a string:\n')

letters = 0

space = 0

digit = 0

others = 0

for c in s:

    if c.isalpha():

        letters += 1

    elif c.isspace():

        space += 1

    elif c.isdigit():

        digit += 1

    else:

        others += 1

print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)

Python 练习实例18

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

程序分析:关键是计算出每一项的值。

程序源代码:

Tn = 0

Sn = []

n = int(raw_input('n = :\n'))

a = int(raw_input('a = :\n'))

for count in range(n):

    Tn = Tn + a

    a = a * 10

    Sn.append(Tn)

    print Tn



Sn = reduce(lambda x,y : x + y ,Sn)

print Sn

Python 练习实例19

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

程序分析:请参照程序Python 练习实例14

程序源代码:

from sys import stdout

for j in range(2,1001):

    k = []

    n = -1

    s = j

    for i in range(1,j):

        if j % i == 0:

            n += 1

            s -= i

            k.append(i)



    if s==0:

         print j

         for i in range(n):

             stdout.write(str(k[i]))

             stdout.write(' ')

         print  k[n]

Python 练习实例20

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

程序分析:

程序源代码:

tour = []

height = []



hei = 100.0

tim = 10



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

    if i==1:

        tour.append(hei)

    else:

        tour.append(2*hei)

    hei/=2

    height.append(hei)



print('tour = {0}'.format(sum(tour)))

print('height = {0}'.format(height[-1]))

Python 练习实例21

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

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

程序源代码:

x2 = 1

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

    x1 = (x2+1)*2

    x2 = x1

print x1

Python 练习实例22

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

程序源代码:

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\t c-- %s'%(chr(i),chr(j),chr(k))


                        

Python 练习实例23

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

   *
  ***
 *****
*******
 *****
  ***
   *

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

程序源代码:

from sys import stdout

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 练习实例24

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

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

程序源代码:

a = 2.0

b = 1.0

s = 0.0

for n in range(1,21):

    s += a / b

    b,a = a , a+b

print s



s = 0.0

for n in range(1,21):

    s += a / b

    b,a = a , a + b

print s

Python 练习实例25

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

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

程序源代码:

s = 0

l = range(1,21)

def op(x):

    r = 1

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

        r *= i

    return r

s = sum(map(op,l))

print '%d'%s

Python 练习实例26

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

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

程序源代码:

def fact(j):

    sum = 0

    if j == 0:

        sum = 1

    else:

        sum = j*fact(j-1)

    return sum



for i in range(5):

    print '%d!=%d'%(i,fact(i))

Python 练习实例27

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

程序分析:无。

程序源代码:

def output(s,l):

    if l==0:

        return

    print (s[l-1])

    output(s,l-1)

    

s = raw_input('Input a string:')

l = len(s)

output(s,l)

Python 练习实例28

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

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

程序源代码:

def age(n):

    if n == 1:c = 10

    else: c = age(n - 1) + 2

    return c

print age(5)

Python 练习实例29

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

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

程序源代码:

x = int(raw_input("please:\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是回文数,个位与万位相同,十位与千位相同。

程序分析:无。

程序源代码:

a = int (raw_input("pleasw:\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 Yes"% a

else:

    print "%d No"% a

Python 练习实例31

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

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

程序源代码:

letter = raw_input("please input:")



if letter == 'S':

    print('please input second letter:')

    letter = raw_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 = raw_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

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

程序分析:无。

程序源代码:

a = ['one','two','three']

for i in a[::-1]:

    print i

Python 练习实例33

题目:按逗号分隔列表。

程序分析:无。

程序源代码:

L = [1,2,3,4,5]

sl = ','.join(str(n) for n in L)

print sl

Python 练习实例34

题目:练习函数调用。

程序分析:无。

程序源代码:

def hello_world():

    print 'Hello world'



def three_hellos():

    for i in range(3):

        hello_world()

if __name__ == '__main__':

    three_hellos()

Python 练习实例35

题目:文本颜色设置。

程序分析:无。

程序源代码:

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 + "writen" + bcolors.ENDC

Python 练习实例36

题目:求100之内的素数。

程序分析:无。

程序源代码:

lower = int(input("min:"))

upper = int(input("max:"))



for num in range(lower,upper + 1):

    if num >1:

        for i in range(2,num):

            if (num % i) == 0:

                break

            else:

                print num

Python 练习实例37

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

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

程序源代码:

if __name__ == "__main__":

    N = 10



    print 'please:\n'

    l = []

    for i in range(N):

        l.append(int(raw_input('please:\n')))

    print

    for i in range(N):

        print l[i]

    print



    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 'last'

    for i in range(N):

        print l[i]

Python 练习实例38

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

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

程序源代码:

if __name__ == '__main__':

    a = []

    sum = 0.0

    for i in range(3):

        a.append([])

        for j in range(3):

            a[i].append(float(raw_input("input num:\n")))

    for i in range(3):

        sum += a[i][i]

    print sum 

Python 练习实例39

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

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

程序源代码:

if __name__ == '__main__':



    a=[1,4,6,9,13,16,19,28,40,100,0]

    print 'original list is:'

    for i in range(len(a)):

        print a[i]

    number = int(raw_input("insert a new number:\n"))

    end = a[9]

    if number > end:

        a[10] = number

    else:

        for i in range(10):

            if a[i]>number:

                temp1 = a[i]

                a[i]=number

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

                    temp2 = a[j]

                    a[j] = temp1

                    temp1 = temp2

                break

    for i in range(11):

        print a[i]

Python 练习实例40

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

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

程序源代码:

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 练习实例41

题目:模仿静态变量的用法。

程序分析:无。

程序源代码:

def varfunc():

    var = 0

    print 'var = %d'%var

    var += 1

if __name__ == '__main__':

    for i in range(3):

        varfunc()



class Static:

    StaticVar = 5

    def varfunc(self):

        self.StaticVar += 1

        print self.StaticVar



print Static.StaticVar

a = Static()

for i in range(3):

    a.varfunc()

Python 练习实例42

题目:学习使用auto定义变量的用法。

程序分析:没有auto关键字,使用变量作用域来举例吧。

程序源代码:

num = 2

def autofunc():

    num = 1

    print 'internal block num = %d' % num

    num += 1

for i in range(3):

    print 'The num = %d' % num

    num += 1

    autofunc()

Python 练习实例43

题目:模仿静态变量(static)另一案例。

程序分析:演示一个python作用域使用方法

程序源代码:

class Num:

    nNum = 1

    def inc(self):

        self.nNum += 1

        print 'nNum = %d' % self.nNum



if __name__ == '__main__':

    nNum = 2

    inst = Num()

    for i in range(3):

        nNum += 1

        print 'The num = %d' % nNum

        inst.inc()

Python 练习实例44 - Python 两个矩阵相加

两个 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 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。

程序源代码:

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)

Python 练习实例45

题目:统计 1 到 100 之和。

程序分析:

程序源代码:

tmp = 0

for i in range(1,101):

    tmp += i

print 'The sum is %d' % tmp

Python 练习实例46

题目:求输入数字的平方,如果平方运算后小于 50 则退出。

程序分析:

程序源代码:

TRUE = 1

FALSE = 0

def SQ(x):

    return x * x

print 'if x <50 ,break'

again = 1

while again:

    num = int(raw_input('please'))

    print 'reault: %d' % (SQ(num))

    if SQ(num) >= 50:

        again = TRUE

    else:

        again = FALSE

        

Python 练习实例47

题目:两个变量值互换。

程序分析:

程序源代码:

def exchange(a,b):

    a,b = b,a

    return (a,b)



if __name__ == '__main__':

    x = 10

    y = 20

    print 'x = %d,y = %d' % (x,y)

    x,y = exchange(x,y)

    print 'x = %d,y = %d' % (x,y)

Python 练习实例48

题目:数字比较。

程序分析:

程序源代码:

i = 10

j = 20

    if i > j:

        print '%d > %d' % (i,j)

    elif i == j:

        print "%d = %d" % (i,j)

    elif i < j:

        print "%d < %d" % (i, j)

    else:

        print 'error'

Python 练习实例49

题目:使用lambda来创建匿名函数。

程序分析:

程序源代码:

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

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



if __name__ == '__main__':

    a = 10

    b = 20

    print 'The largar one is %d' % MAXIMUM(a,b)

    print 'The lower one is %d' % MINIMUM(a,b)

Python 练习实例50

题目:输出一个随机数。

程序分析:使用 random 模块。

程序源代码:

import random


print random.uniform(10,20)

Python 练习实例51

题目:学习使用按位与 & 。

程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1。

程序源代码:

if __name__ == '__main__':

    a = 077

    b = a & 3

    print 'a & b = %d' % b

    b &= 7

    print 'a & b = %d' % b

Python 练习实例52

题目:学习使用按位或 | 。

程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1

程序源代码:

if __name__ == '__main__':

    a = 077

    b = a | 3

    print 'a | b is %d' % b

    b |= 7

    print 'a | b is %d' % b

Python 练习实例53

题目:学习使用按位异或 ^ 。

程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0

程序源代码:

if __name__ == '__main__':

    a =077

    b = a^3

    print 'The a^3=%d' % b

    b^=7

    print 'The a^b =%d'% b

Python 练习实例54

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

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

程序源代码:

if __name__ == '__main__':

    a = int(raw_input('input a number:\n'))

    b = a>>4

    c = ~(~0<<4)

    d = b & c

    print '%o\t%o'% (a,d)

Python 练习实例55

题目:学习使用按位取反~。

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

程序源代码:

if __name__ == '__main__':

    a = 234

    b = ~a

    print 'The a\'s 1 complement is %d' % b

    a= ~a

    print  'the a\'s 2 complement is %d' % a

Python 练习实例56

题目:画图,学用circle画圆形。   

程序分析:无。

程序源代码:

if __name__ == '__main__':

    from Tkinter import *



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

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

    k = 1

    j = 1

    for i in range(0,26):

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

        k+=j

        j+=0.3



    mainloop()

Python 练习实例57

题目:画图,学用line画直线。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    from Tkinter import *



    canvas = Canvas(width=300, height=300, bg='green')

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

    x0 = 263

    y0 = 263

    y1 = 275

    x1 = 275

    for i in range(19):

        canvas.create_line(x0, y0, x0, y1, width=1, fill='red')

        x0 = x0 - 5

        y0 = y0 - 5

        x1 = x1 + 5

        y1 = y1 + 5



    x0 = 263

    y1 = 275

    y0 = 263

    for i in range(21):

        canvas.create_line(x0, y0, x0, y1, fill='red')

        x0 += 5

        y0 += 5

        y1 += 5



    mainloop()

Python 练习实例58

题目:画图,学用rectangle画方形。   

程序分析:

if __name__ == '__main__':

    from Tkinter import *



    root = Tk()

    root.title('Canvas')

    canvas = Canvas(root, width=400, height=400, bg='yellow')

    x0 = 263

    y0 = 263

    y1 = 275

    x1 = 275

    for i in range(19):

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

        x0 -= 5

        y0 -= 5

        x1 += 5

        y1 += 5



    canvas.pack()

    root.mainloop()

Python 练习实例59

题目:画图,综合例子。  

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。。

程序源代码:

if __name__ == '__main__':

    from Tkinter import *

    canvas = Canvas(width = 300,height = 300,bg = 'green')

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

    x0 = 150

    y0 = 100

    canvas.create_oval(x0-10,y0-10,x0+10,y0+10)

    canvas.create_oval(x0 - 20, y0 - 20, x0 + 20, y0 + 20)

    canvas.create_oval(x0 - 50, y0 - 50, x0 + 50, y0 + 50)

    import math

    B = 0.809

    for i in range(16):

        a = 2 * math.pi / 16 * i

        x = math.ceil(x0 + 48 * math.cos(a))

        y = math.ceil(y0 + 48 * math.sin(a) * B)

        canvas.create_line(x0, y0, x, y, fill='red')

    canvas.create_oval(x0 - 60, y0 - 60, x0 + 60, y0 + 60)



    for k in range(501):

        for i in range(17):

            a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k

            x = math.ceil(x0 + 48 * math.cos(a))

            y = math.ceil(y0 + 48 + math.sin(a) * B)

            canvas.create_line(x0, y0, x, y, fill='red')

        for j in range(51):

            a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k - 1

            x = math.ceil(x0 + 48 * math.cos(a))

            y = math.ceil(y0 + 48 * math.sin(a) * B)

            canvas.create_line(x0, y0, x, y, fill='red')

    mainloop()

Python 练习实例60

题目:计算字符串长度。  

程序分析:无。

程序源代码:

sStr1 = 'strlen'

print len(sStr1)

Python 练习实例61

题目:打印出杨辉三角形(要求打印出10行如下图)。  

程序分析:无。

程序源代码:

if __name__ == '__main__':

    a = []

    for i in range(10):

        a.append([])

        for j in range(10):

            a[i].append(0)

    for i in range(10):

        a[i][0] = 1

        a[i][i] = 1

    for i in range(2,10):

        for j in range(1, i):

            a[i][j] = a[i - 1][j - 1] + a[i - 1][j]

    from sys import stdout



    for i in range(10):

        for j in range(i + 1):

            stdout.write(str(a[i][j]))

            stdout.write(' ')

        print

Python 练习实例62

题目:查找字符串。  

程序分析:无。

程序源代码:

sStr1 = 'abcdefg'

sStr2 = 'cde'

print sStr1.find(sStr2)

Python 练习实例63

题目:画椭圆ellipse。 

程序分析:无。

程序源代码:

if __name__ == '__main__':

    from Tkinter import *

    x = 360

    y = 160

    top = y-30

    bottom = y - 30



    canvas = Canvas(width = 400,height = 600,bg = 'white')

    for i in range(20):

        canvas.create_oval(250 - top, 250 - bottom, 250 + top, 250 + bottom)

        top -= 5

        bottom += 5

    canvas.pack()

    mainloop()

Python 练习实例64

题目:利用ellipse 和 rectangle 画图。。 

程序分析:无。

程序源代码:

if __name__ == '__main__':

    from Tkinter import *

    canvas = Canvas(width = 400,height = 600,bg = 'white')

    left = 20

    right = 50

    top = 50

    num = 15

    for i in range(num):

        canvas.create_oval(250 - right,250 - left,250 + right,250 + left)

        canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)

        canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))

        right += 5

        left += 5

        top += 10



    canvas.pack()

    mainloop()

Python 练习实例65

题目:一个最优美的图案。  

程序分析:无。

程序源代码:

import math

class PTS:

    def __init__(self):

        self.x = 0

        self.y = 0

points = []



def LineToDemo():

    from Tkinter import *

    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()





if __name__ == '__main__':

    LineToDemo()

Python 练习实例66

题目:输入3个数a,b,c,按大小顺序输出。   

程序分析:无。

程序源代码:

if __name__ == '__main__':

    n1 = int(raw_input('n1 = :\n'))

    n2 = int(raw_input('n2 = :\n'))

    n3 = int(raw_input('n3 = :\n'))



    def swap(p1,p2):

        return p2,p1



    if n1>n2:n1,n2=swap(n1,n2)

    if n1>n3:n1,n3=swap(n1,n3)

    if n2>n3:n2,n3=swap(n2,n3)



    print n1,n2,n3

Python 练习实例67

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

程序分析:无。

程序源代码:

def inp(numbers):

    for i in range(6):

        numbers.append(int(raw_input('please a number:\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)

    arr_max(array)

    arr_min(array)

    print 'result:'

    outp(array)

Python 练习实例68

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

程序分析:无。

程序源代码:

if __name__ == '__main__':

    n = int(raw_input('the total number is:\n'))

    m = int(raw_input('back m:\n'))



    def move(array,n,m):

        array_end = array[n - 1]

        for i in range(n - 1,-1,-1):

            array[i] = array[i - 1]

        array[0] = array_end

        m -= 1

        if m > 0:move(array,n,m)



    number = []

    for i in range(n):

        number.append(int(raw_input('input a number:\n')))

    print 'orignal number:',number



    move(number,n,m)



    print 'after moved:',number

Python 练习实例69

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

程序分析:无。

程序源代码:

if __name__ == '__main__':

    nmax = 50

    n = int(raw_input('please input total number:'))

    num = []

    for i in range(n):

        num.append(i+1)



    i = 0

    k = 0

    m = 0



    while m < n - 1:

        if num[i] != 0:k += 1

        if k == 3:

            num[i] = 0

            k = 0

            m += 1

        i += 1

        if i == n: i + 0



    i = 0

    while num[i] == 0:i += 1

    print num[i]

Python 练习实例70

题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    s = raw_input('please input a string:\n')

    print'the string has %d characters' % len(s)

Python 练习实例71

题目:编写input()和output()函数输入,输出5个学生的数据记录。

程序分析:无。

程序源代码:

N = 3

#stu

# num : string

# name : string

# score[4]:list

student = []

for i in range(5):

    student.append(['','',[]])



def input_stu(stu):

    for i in range(N):

        stu[i][0] = raw_input('input student num:\n')

        stu[i][1] = raw_input('input student name:\n')

        for j in range(3):

            stu[i][2].append(int(raw_input('score:\n')))



def output_stu(stu):

    for i in range(N):

        print '%-6s%-10s' % (stu[i][0],stu[i][1])

        for j in range(3):

            print'%-8d' % stu[i][2][j]



if __name__ == '__main__':

    input_stu(student)

    print student

    output_stu(student)

Python 练习实例72

题目:创建一个链表。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    ptr = []

    for i in range(5):

        num = int(raw_input('please input a number:\n'))

        ptr.append(num)

    print ptr

Python 练习实例73

题目:反向输出一个链表。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    ptr = []

    for i in range(5):

        num = int(raw_input('please input a number:\n'))

        ptr.append(num)

    print ptr

    ptr.reverse()

    print ptr

Python 练习实例74

题目:连接两个链表。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    arrl = (3,12,8,9,11)

    ptr = list(arrl)

    print ptr

    ptr.sort()

    print ptr

Python 练习实例75

题目:放松一下,算一道简单的题目。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    for i in range(5):

        n = 0

        if i != 1:n += 1

        if i == 3:n +=1

        if i == 4:n +=1

        if i != 4:n+=1

        if n == 3:print 64 +i

Python 练习实例76

题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)

程序分析:无。

程序源代码:

def peven(n):

    i = 0

    s = 0.0

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

        s += 1.0/i

    return s



def podd(n):

    s = 0.0

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

        s += 1/i

    return s



def dcall(fp,n):

    s = fp(n)

    return s



if __name__ == '__main__':

    n = int(raw_input('input a number:\n'))

    if n % 2 == 0:

        sum = dcall(peven,n)

    else:

        sum = dcall(podd,n)

    print sum

Python 练习实例77

题目:循环输出列表

程序分析:无。

程序源代码:

if __name__ == '__main__':

    s = ["man","woman","girl","boy","sister"]

    for i in range(len(s)):

        print s[i]

Python 练习实例78

题目:找到年龄最大的人,并输出。请找出程序中有什么问题。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    person = {"1i":18,"wang":50,"zhang":20,"sun":22}

    m = '1i'

    for key in person.keys():

        if person[m]<person[key]:

            m = key



    print '%s,%d' % (m,person[m])


 

Python 练习实例79

题目:字符串排序。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    str1 = raw_input('input string:\n')

    str2 = raw_input('input string:\n')

    str3 = raw_input('input string:\n')

    print str1,str2,str3



    if str1 > str2 :str1,str2 = str2,str1

    if str1 > str3: str1, str3 = str3,str1

    if str2 > str3: str2, str3 = str3,str2



    print 'after being sorted'

    print str1,str2,str3

Python 练习实例80

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

程序分析:无。

程序源代码:

if __name__ == '__main__':

    i = 0

    j = 0

    x = 0

    while (i < 5):

        x = 4 * j

        for i in range(x):

            if (x%4 !=0):

                break

            else:

                i += 1

            x = (x/4) * 5 + 1

        j += 1

    print x

Python 练习实例81

题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

程序分析:无。

程序源代码:

a = 809

for i in range(10,100):

    b = i * a+1

    if b>=1000 and b<=10000 and 8*i<100 and 9*i>=100:

        print b,'/',i,'=809*',i,'+',b%i

Python 练习实例82

题目:八进制转换为十进制

程序分析:无。

程序源代码:

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

Python 练习实例83

题目:求0—7所能组成的奇数个数。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    sum = 4

    s = 4

    for j in range(2,9):

        print sum

        if j <= 2:

            s*=7

        else:

            s*=8

        sum +=s

    print 'sum=%d'%sum

Python 练习实例84

题目:连接字符串。

程序分析:无。

程序源代码:

delimiter = ','

mylist = ['Brazil','Russia','India','China']

print delimiter.join(mylist)

Python 练习实例85

题目:判断一个正整数能被几个9整除。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    zi = int(raw_input('input a number:\n'))

    n1 = 1

    c9 = 1

    m9 = 9

    sum = 9

    while n1 != 0:

        if sum % zi == 0:

            n1 = 0

        else:

            m9 *= 10

            sum += m9

            c9 += 1

    print '%d can be divided by %d 9' % (sum,c9)

Python 练习实例86

题目:两个字符串连接程序。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    a = "acegikm"

    b = "bdfhjlnpq"



    c = a + b

    print c

Python 练习实例87

题目:回答结果(结构体变量传递)。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    class student:

        x = 0

        c = 0

    def f(stu):

        stu.x = 20

        stu.c = 'c'

    a = student()

    a.x = 3

    a.c = 'a'

    f(a)

    print a.x,a.c

Python 练习实例88

题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    n = 1

    while n <= 7:

        a = int(raw_input('input a number:\n'))

        while a < 1 or a > 50:

            a = int(raw_input('inout a number:\n'))

        print a *'*'

        n+=1

Python 练习实例89

题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

程序分析:无。

程序源代码:

from sys  import stdout

if __name__ == '__main__':

    a = int(raw_input('input a number:\n'))

    aa = []

    aa.append(a%10)

    aa.append(a%100/10)

    aa.append(a%1000/100)

    aa.append(a/1000)



    for i in range(4):

        aa[i]+=5

        aa[i]%=10

    for i in range(2):

        aa[i],aa[3-i] = aa[3-i],aa[i]

    for i in range(3,-1,-1):

        stdout.write(str(aa[i]))

Python 练习实例90

题目:列表使用实例。

程序分析:无。

程序源代码:

testList = [10086,'China mobile',[1,2,4,5]]



print len(testList)

print testList[1:]

testList.append('i\'m new here!')



print len(testList)

print testList[-1]

print testList.pop(1)

print len(testList)

print testList



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

print matrix

print matrix[1]

col2 = [row[1] for row in matrix]#get a column from a matrix

print col2

col2even = [row[1] for row in matrix if row[1] % 2 == 0] # filter odd item

print col2even

Python 练习实例91

题目:时间函数举例1。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    import time

    print time.ctime(time.time())

    print time.asctime(time.localtime(time.time()))

    print time.asctime(time.gmtime(time.time()))

Python 练习实例92

题目:时间函数举例2。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    import time

    start = time.time()

    for i in range(3000):

        print i

    end = time.time()



    print end - start

Python 练习实例93

题目:时间函数举例3。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    import time

    start = time.clock()

    for i in range(10000):

        print i

    end = time.clock()

    print 'different is %6.3f' % (end - start)


    

Python 练习实例94

题目:时间函数举例4,一个猜数游戏,判断一个人反应快慢。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    import time

    import random



    play_it = raw_input('do you want to play it.(\'y\' or \'n\')')

    while play_it == 'y':

        c = raw_input('input a character:\n')

        i = random.randint(0, 2 ** 32) % 100

        print 'please input number you guess:\n'

        start = time.clock()

        a = time.time()

        guess = int(raw_input('input your guess:\n'))

        while guess != i:

            if guess > i:

                print 'please input a little smaller'

                guess = int(raw_input('input your guess:\n'))

            else:

                print 'please input a little bigger'

                guess = int(raw_input('input your guess:\n'))

        end = time.clock()

        b = time.time()

        var = (end - start) / 18.2

        print var

        # print 'It took you %6.3 seconds' % time.difftime(b,a))

        if var < 15:

            print 'you are very clever!'

        elif var < 25:

            print 'you are normal!'

        else:

            print 'you are stupid!'

        print 'Congradulations'

        print 'The number you guess is %d' % i

        play_it = raw_input('do you want to play it.')

Python 练习实例95

题目:字符串日期转换为易读的日期格式。

程序分析:无。

程序源代码:

from dateutil import parser

dt = parser.parse('Aug 28 2015 12:00AM')

print dt

Python 练习实例96

题目:计算字符串中子串出现的次数。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    str1 = raw_input('input a string:\n')

    str2 = raw_input('input a sub string:\n')

    ncount = str1.count(str2)

    print ncount


    

Python 练习实例97

题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    from sys import stdout

    filename = raw_input('input a file name:\n')

    fp = open(filename,"w")

    ch = raw_input('input string:\n')

    while ch != '#':

        fp.write(ch)

        stdout.write(ch)

        ch = raw_input('')

    fp.close()

Python 练习实例98

题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    fp = open('test.txt','w')

    string = raw_input('please input a string:\n')

    string = string.upper()

    fp.write(string)

    fp = open('test.txt','r')

    print fp.read()

    fp.close()

Python 练习实例99

题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。

程序分析:无。

程序源代码:

if __name__ == '__main__':

    import string

    fp = open('test1.txt')

    a = fp.read()

    fp.close()



    fp = open('test2.txt')

    b = fp.read()

    fp.close()



    fp = open('test3.txt','w')

    l = list(a+b)

    l.sort()

    s = ''

    s = s.join(l)

    fp.write(s)

    fp.close()

Python 练习实例100

题目:列表转换为字典。

程序分析:无。

程序源代码:

i = ['a','b']

l = [1,2]

print dict([i,l])

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多