python判断语句练习题
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