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
python判断语句练习题
发布时间 2023-03-27 21:13:31作者: jormen