python练习100例(前50例)

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

            list = [1,2,3,4]
            sum=0
            for i in list:
                for j in list:
                    for z in list:                 #分别从百位,十位,个位中取数
                        if i != j and  j!=z and i!=z:  #满足互不相同条件
                            print(i*100+j*10+z)
                            sum+=1
            print("可以组成这样的数字有",sum,"个")

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,求
应发放奖金总数?

       p = int(input("请输入当月利润(万元):"))
       m = 0
       if p<=10:
       m = p*0.1
       elif p>10 and p<=20:
       m=10*0.1+(p-10)*0.075
       elif p>20 and p<=40:
       m=10*0.1+10*0.075+(p-20)*0.05
       elif p>40 and p<=60:
       m=10*0.1+10*0.075+20*0.05+(p-40)*0.03
       elif p>60 and p<=100:
       m=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015
       else:
       m=10*0.1+10*0.075+20*0.005+20*0.03+40*0.015+(p-100)*0.01
       print("应发放奖金数为:",m)

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

         m = n = 0
         for i in range(2,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
            if(m**2-268) == (n**2-100):
                print(m**2-268)

4.输入某年某月某日,判断这一天是这一年的第几天?

         list1=[0,31,29,31,30,31,30,31,31,30,31,30,31]
         list2=[0,31,28,31,30,31,30,31,31,30,31,30,31] #建立闰年平年每月的天数列表
         sum = 0
         year = int(input("请输入年份:"))
         month = int(input("请输入月份:"))
         day = int(input("请输入日期:"))
         if (year %4==0 and year %100!=0) or year % 400==0:
             for i in range(1,month):
                 sum = sum +list1[i]
             sum += day            #累计循环加入天数
         else:
             for i in range(1,month):
                 sum = sum +list2[i]
         sum += day
         print("这天是一年中的第",sum,"天")

5.输入三个整数x,y,z,请把这三个数由小到大输出。

        x = int(input("请输入x的值"))
        y = int(input("请输入y的值"))
        z = int(input("请输入z的值"))
        if x>=y:
            if x>=z and y>=z:
                print("由小到大输出为:",z,y,x)
            elif x>=z and z>=y:
                print("由小到大输出为:",y,z,x)
            else:
                print("由小到大输出为:",y,x,z)
         else:
            if y>=z and x>=z:
                print("由小到大输出为:",z,x,y)
            elif y>=z and z>=x:
                print("由小到大输出为:",x,z,y)
            else:
                print("由小到大输出为:",x,y,z)

6.斐波那契数列

        n =int (input("请输入需求数:"))
        def f(n):
           if n==0:
               return 0
           elif n==1:
               return 1
           else:
               return f(n-1)+f(n-2)         #递归调用原函数
        print("对应的斐波那契数列为:",f(n))

7.将一个列表的数据复制到另一个列表中。

          list1=[1,2,3,4]
          list2=list1
          print(list1)

8.输出 9*9 乘法口诀表。

    for i in range(1,10):
        print(" ")
        for j in range(1,10):
            print("%d*%d=%d "%(i,j,i*j))     

9.暂停一秒输出。

        import time
        time.sleep(1)
        print("暂停了一秒偶")

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

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

         m =int(input("请输入值:"))
         def func(n):
         if n==1:
             return 1
         if n==2:
             return 1
         else:
             return func(n-1)+func(n-2)
         print("该月份兔子有",func(m),"只")

12.判断101-200之间有多少个素数,并输出所有素数。

         di = 2
         for i in range(101, 201):
             while (i % di != 0 and di < i-1):
                 di += 1
             if i == di + 1:
                 print(i)
             di = 2

13.打印出所有水仙花数

        for i in range(100,1000):
            b=i//100
            s=i//10%10
            g=i%100              #取百位,十位,个位数字 
            if(b**3+s**3+g**3 == i):       #判断该数字是否满足条件
                print(i)

14.将一个正整数分解质因数。例如:输入90,打印出90=233*5

       n = int(input("请输入数字:"))
       i = 2
       while(n>=2):
           if n%i==0:
               n=n/i
               print(i)
               i=2
           else:
               i +=1

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

       score = int(input("请输入成绩:"))
       if score >= 90:
           grade = "A"
       elif score >=60 and score <=89:
           grade = "B"
       else:
           grade ="C"
       print("%d属于%s"%(score,grade))

16.输出指定格式的日期。

        import datetime
        if __name__ == '__main__':
            print(datetime.date.today().strftime("%d %m %Y"))  #格式化输出当前日期
            oneday = datetime.date(2018,1,2)         #创建时间日期对象
            print(oneday.strftime("%d %m %Y"))
            nextday = oneday + datetime.timedelta(days=1)
            print(nextday.strftime("%d %m %Y"))         #日期算术运算
            oneday = oneday.replace(year=oneday.year+1)
            print(oneday.strftime("%d %m %Y"))        #日期替换

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

       str= input("请输入字符串:")
       english = 0
       space = 0
       number = 0
       char1 = 0                 #建立每种字符的统计器
       for i in range(0,len(str)):      #判断每个字符的类型
           if str[i]>'0' and str[i]<'9':
               number+=1
           elif str[i]>'A' and str[i]<'z':
               english+=1
           elif str[i] ==' ':
               space+=1
           else:
               char1+=1
       print("数字有",number,"个","英文字母有",english,"个","空格有",space,"个","其他字符有",char1,"个") 

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

      n = int(input("请输入数字:"))
      a = int(input("请输入a的值:"))
      sum = a
      var = a
      for i in range(1,n):
          var = var + a*(10**i)   #var变量存储每个值
          sum = sum+ var          #sum累计求和
      print(sum)

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

  for i in range(1,1000):
      t =i           #记下变量
      sum = 0        #统计和
      var = 2
      while var < i:          #找出该数的因子
          if i%var == 0:
              sum += var
              var += 1
          else:
              var += 1
          if sum+1 == t:
              print(t)

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

    sum = 0
    var = 100
    for i in range(1,11):
        var = var/2
        sum = sum+var+var*2
    print("共经过",sum,"第10次反弹",var)

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

         sum = 1
         for i in range(1,10):
             sum =(sum+1)*2
         print(sum)

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

23.打印出如下图案(菱形):
*






          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("\n")                  #打印前四行
          for i in range(3):
              for j in range(i + 1):
                  stdout.write(' ')
              for k in range(4 - 2 * i + 1):
                  stdout.write('*')
              print("\n")                   #打印后三行

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

       def fen(n):
           if n==1:
               return 1
           if n==2:
               return 2
           else:
               return fen(n-1)+fen(n-2)     #定义求分母的函数
       sum = 0
       for i in range(1,21):
           sum = sum + fen(i+1) / fen(i)    #累加前20项的和
       print(sum)

25.求1+2!+3!+…+20!的和。

         def j(n):
             if n == 1:
                 return 1
             else:
                 return n*j(n-1)             #定义求阶乘的函数
         sum =0
         for i in range(1,21):
             sum+=j(i)                       #累加1到20的阶乘
         print(sum)

26.利用递归方法求5!。

                       def j(n):
                           if n == 1:
                               return 1
                           else:
                               return n*j(n-1)   #定义求阶乘的方法
                       print(j(5))

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

                     def pr(str,l):
                         if l == 0:
                             return
                         print(str[l-1])
                         pr(str,l-1)              #定义反向输出函数,两个参数控制
                     str1 =input("请输入5个字符:")
                     l = len(str1)
                     pr(str1,l)                #输入字符串,调用反向输出函数

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

                  def func(n):
                      if n == 1:
                          return 10
                      else:
                          return func(n-1)+2          #定义递归函数
                  print(func(5))                       #调用递归函数输出结果

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

            n = int(input("请输入一个不多于5位的正整数"))
            a =n//10000
            b =n//1000%10
            c =n//100%10
            d =n%100//10
            e =n%10                  #取个十百千万位的数字
            if n >=10000:
                print("该数是5位数")
                print(e,d,c,b,a)
            elif n>=1000:
                print("该数是4位数")
                print(e,d,c,b)
            elif n>=100:
                print("该数是三位数")
                print(e,d,c)
            elif n>=10:
                print("该数是两位数")
                print(e,d)
            else:
                print("该数是两位数")
                print(e)                                          #判断位数,并逆序输出

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

        n =int(input("请输入一个五位数:"))
        a = n//10000
        b = n//1000%10
        c = n//100%10
        d=n%100//10
        e =n%10               #取个十百千万位数字
        if a==e and b==d:
            print("该数是回文数")
        else:
            print("该数不是回文数")           #判断逻辑条件是否为回文数

31请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
monday tuesday Wednesday thursday friday saturday sunday

str1 = input("请输入第一个字母:")
if str1 =='m':
   print("这天是星期一")
elif str1 == 'w':
    print("这天是星期三")
elif str1 == 'f':
    print("这天是星期五")
elif str1 =='t':
    str2= input("请输入第二个字母:")
    if str2 =='u':
        print("这天是星期二")
    elif str2== 'h':
        print("这天是星期四")
    else:
        print("输入有误")
elif str1 =='s':
    str2= input("请输入第二个字母:")
    if str2 =='u':
        print("这天是星期天")
    elif str2== 'a':
        print("这天是星期六")
    else:
        print("输入有误")

32.按相反的顺序输出列表的值。

list = [1,2,3,4,5]
l =len(list)                                          #取列表长度
while l :
    print(list[l-1])                                #依次从后位向前位打印
    l = l-1

33.按逗号分隔列表。

L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)             #  join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
print s1

34.练习函数调用。

def func1():
    print("我是第一个函数")
def func2():
    func1()
    print("我是第二个函数")
if __name__=='__main__':
    func2()

35.文本颜色设置。

class bcolors:
    HEADER = '\033[95m'                       #书写格式:\033[显示方式;前景色;背景色m+结尾部分:\033[0m
    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)

36.求100之内的素数。

for i in range(1,100):
    div = 2
    while(div<i-1):
        if (i % div) == 0:
            break
        else:
            div =div +1
    if(div+1==i):
        print(i)

37.对10个数进行排序。

list=[0,0,0,0,0,0,0,0,0,0]                               #初始化列表
for i in range(10):
    list[i]=int(input("请输入数字:"))
list.sort()                                                        #调用列表排序算法
print(list)

38.求一个3*3矩阵主对角线元素之和。

list =[]
sum =0
for i in range(3):
    list.append([])
    for j in range(3):
        list[i].append(int(input("请输入数字:")))              #双重循环输入二维矩阵的值
for i in range(3):
    sum +=list[i][i]                                                     #累加对角线元素和
print(sum)

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

a =[1,3,5,7,9,11,13,15,17,19,0]         #设置0标志位
number = int(input("请输入要插入的数字:"))
if number>a[9]:
    a[10]=number                             #大于最高位,直接放在最后面
else:
    for i in range(10):
        if(number<a[i]):                              #小于某一位,从那位开始依次向后移动一位
            temp1=a[i]
            a[i]=number
            for j in range(i+1,11):
                temp2=a[j]
                a[j]=temp1
                temp1=temp2
            break
print(a) 

40.将一个数组逆序输出。

list =[1,3,5,7,9]
l=len(list)
while l:
    print(list[l-1])
    l-=1

41.模仿静态变量的用法。

class Static:
    StaticVar = 0
    def varfunc(self):
        self.StaticVar += 1
        print (self.StaticVar)

print (Static.StaticVar)
a = Static()
for i in range(3):
    a.varfunc()

42.学习使用变量作用域的用法:

num =0
def func():
    num=1
    print("调用函数后",num)
    num+=1
for i in range(3):
   print("主程序",num)
   num+=1
   func()

43.学习使用变量作用域的用法2:

class S:
    snum=1
    def func(self):
        self.snum+=1
        print("调用类的函数后:",self.snum)
snum = 0
s = S()
for i in range(3):
    snum+=1
    print("主程序的数字:",snum)
    s.func()

44.两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:

a = []
for i in range(3):
    a.append([])
    for j in range(3):
        a[i].append(int(input("请输入第一个矩阵的值")))                 #第一个矩阵赋值
b = []
for i in range(3):
    b.append([])
    for j in range(3):
        b[i].append(int(input("请输入第二个矩阵的值")))                 #第二个矩阵赋值
c=[]
for i in range(3):
    c.append([])
    for j in range(3):
        c[i].append(a[i][j]+b[i][j])                                 #两个矩阵对应位置相加
print(c)

45.统计 1 到 100 之和。

sum = 0
for i in range(101):
    sum+=i
print(sum)

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

while True:
    n = int(input("请输入数字:"))
    n2 = n**2
    print(n2)
    if n2<50:
        break

47.两个变量值互换。

n1=1
n2=2
temp =n1
n1 = n2
n2 = temp
print(n1,n2)

48.数字比较。

a = int(input("请输入A的值:"))
b = int(input("请输入B的值:"))
if a>b:
    print("a大于b")
elif a==b:
    print("a等于b")
else:
    print("a小于b")

49.使用lambda来创建匿名函数

MAX = lambda x,y:(x>y)*x+(x<y)*y
MIN = lambda x,y:(x>y)*y+(x<y)*x
a=1
b=2
print(MAX(a,b))
print(MIN(a,b))

50.输出一个随机数

import random
n=random.choice(range(100))
print(n)

猜你喜欢

转载自blog.csdn.net/qq_35076836/article/details/82666933
今日推荐