python判断语句练习题

发布时间 2023-03-27 21:13:31作者: jormen

1.求出1900-2017年之间的普通闰年和世纪闰年,分别放在不同列表中;
 普通闰年:能被4整除,但不能被100整除的年份
 世纪闰年:能被400整除的年份
 i=1900
 list1=[]
 list2=[]
 while i<2018:
     if  i%4==0 and i%100!=0:
         list1.append(i)
     if  i%400==0:
         list2.append(i)
     i+=1

 print('普通闰年是',list1)
 print('世纪闰年',list2)


我的答案
 list1=[]
 list2=[]
 for i in range(1900,2018):
     if i%4==0 and i%100!=0:
         list1.append(i)
     if i%400==0:
         list2.append(i)
 print('普通闰年:',list1)
 print('世纪闰年:',list2)



 2.分析以下数字的规律, 1 1 2 3 5 8 13 21 用Python语言编程实现输出,此为斐波那契数列 (考试题非常多次题目)
 list1=[]
 for i in range(10):
     if  i==0 or i==1:    #前两个数字的值都是1
         list1.append(i)
         # print(list1)
     else:
         list1.append(list1[i-1]+list1[i-2])
 print(list1)



我的答案
 x=input('从5开始,请输入你想输出几次:')
 x=int(x)
 y=0
 i=2
 j=3
 print('1,1,2,3',end=' ')
 while y<x:
     b=i+j
     print(b,end=' ')
     i=j
     j=b
     y+=1



 3.给一组无规律的数据从大到小或从小到大进行排序list1=[2,6,9,10,18,15,1,88,34,22,95]  使用冒泡排序实现
 list1=[2,6,9,10,18,15,1,88,34,22,95]
 # print(len(list1))
 for i in range(len(list1)):     #控制循环次数,取值:0-10
     for j in range(i+1,len(list1)):   #控制循环次数,取值:1-10
         if list1[i]>list1[j]:       #从小到大
             # print(list1)
             list1[i],list1[j]=list1[j],list1[i]            #双向赋值把对应i的值赋给j,把j的值赋给i
             # print(list1)
 print(list1)

解释:
 i=0     j=1,2,3,4,5,6,7,8,9,10
 list1[0]=2
 i=1     j=2,3,4,5,6,7,8,9,10
 list1[1]=6
 ....

 i=9  j=10
 list1[9]=22


 百度的答案
 def bubbleSort(a):
     n = len(a)
     for i in range(n):
         for j in range(0, n - i - 1):
             if a[j] > a[j + 1]:
                 a[j], a[j + 1] = a[j + 1], a[j]
 a = [2,6,9,10,18,15,1,88,34,22,95]
 bubbleSort(a)
 print("排序后的数组:")
 for i in range(len(a)):
     print("%d" % a[i],end=' ')


 4.如有两个list:a =['a','b','c','d','e'],b=[1,2,3,4,5]
 a中的元素作为key,b中的元素作为value合并为字典
 dict1={}
 a =['a','b','c','d','e']
 b=[1,2,3,4,5]
 for i in a:
     for j in b:
         if a.index(i) ==b.index(j):
             dict1.setdefault(i,j)
 print(dict1)


我的答案
 a=['a','b','c','d','e']
 b=[1,2,3,4,5]
 dict1={}
 for i in a:
     for j in b:
         if a.index(i)==b.index(j):
             dict1.setdefault(i,j)
         # elif a.index(i)>b.index(j):
         #     dict1.fromkeys(i)
 print(dict1)




 5.用你熟悉的方法帮我求出6-55之和?
 sum1=0
 for i in range(6,56):
     sum1+=i
 print(sum1)

 sum1=0
 i=6
 while i<56:
     sum1+=i
     i+=1
 print(sum1)

我的答案
 list1=[]
 for i in range(6,56):
     list1.append(i)
 print('6-55之和:',sum(list1))


 6.求出1/1 + 1/3 + 1/5……+1/99的和
 sum1=0
 i=1
 while i<100:
     sum1+=1/i
     i+=2
 print(sum1)
 sum1=0
 for i in range(1,100,2):
     sum1+=1/i
 print(sum1)

我的答案
 i=1
 a=0
 while i<100:
     j=1/i
     i=i+2
     a=a+j
 print(a)




 7.用循环语句,计算2 - 10之间整数的循环相乘的值 (2*3*4*5....10)
 sum1=1
 for i in range(2,11):
     sum1*=i
 print(sum1)

我的答案
 i=2
 a=1
 while i<11:
     a=a*i
     i+=1
 print(a)


 8.用for循环打印九九乘法表
 for i in range(1,10):
     for j in range(1,i+1):
         print(j,'x',i,'=',i*j,end=' ')
     print('\t')               #换列输出   \t或者\n


我的答案
 i=1
 while i<10:
     j=1
     while j<=i:
         print(j,'x',i,'=',i*j,end='  ')
         j+=1
     print()
     i+=1



解释:
  i=1    j=1       1x1
  i=2    j=1,2     2x1  2x2
  i=3    j=1,2,3   1x3  2x3  3x3




 9.字符串aabbcdbaaabc,用熟悉的方法去除ab子串?
 str1='aabbcdbaaabc'
 for i in str1:
     str1=str1.replace('ab','')
 print(str1)


 10.求每个字符串中字符出现的个数如:helloworld
 str1='helloworld'
 # dict1={}
 # for i in str1:
 #     dict1.setdefault(i,str1.count(i))
 # print(dict1)

 for i in set(str1):
     str2=str1.count(i)
     print(i,str2)



 12.水仙花数:一个三位数,其按位立方之和等于该数本身,该数称为水仙花数。求出100-1000之间的水仙花数
 (其实,水仙花数是“自幂数”中的一种;自幂数:一个n位数,其按位数字的n次方之和,等于该数本身。

个位数怎么表示:  abc%10=c  将三位数进行取模10,能得到一个余数,该余数就是个位数
十位数怎么表示:  abc//10%10  将三位数除以10得到一个两位数的浮点数,再取整得到两位数的整数ab,ab取模10,得到余数,这个余数就是十位数
百位数怎么表示:  abc//100%10  将三位数除以100得到一个一位数的浮点数,再取整得到一位整数a,a取模10,得到余数,这个余数就是百位数
153=1*1*1+5*5*5+3*3*3
 for abc in range(100,1001):
     if  (abc%10)**3+(abc//10%10)**3+(abc//100%10)**3==abc:
         print(abc)


我的答案
 1^3 + 5^3 + 3^3 = 153
 i=100
 while i <1000:
     a=i%10
     b=i%100//10
     c=i//100
     if i==a**3+b**3+c**3:
         print(i)
     i+=1