Page 1:
1.已知一个数字列表,求列表中心元素。
if common_list_len%2:
print("中心元素是:%s"%common_list[common_list_len//2])
else:
print("中心元素是:%s:%s"%(common_list[common_list_len//2],common_list[common_list_len//2-1]))
2.已知一个数字列表,求所有元素和。
common_list=[23,56,787,56,34,34,23,1232]
list_sum=0
for num in common_list:
list_sum+=num
print("元素和:%s"%list_sum)
3.已知一个数字列表,输出所有奇数下标元素。
common_list=[23,56,787,56,34,34,23,1232]
new_list=[]
for common_list_index in range(len(common_list)):
if common_list_index %2:
new_list.append(common_list[common_list_index])
print(new_list)
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
common_list=[23,56,787,56,34,34,23,1232]
new_list=[]
for num in common_list:
if num%2:
new_list.append(num)
print(new_list)
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
common_list=[23,56,787,56,34,34,23,1232]
def list_mutiply(x):
return x*2
print(list(map(list_mutiply,common_list)))
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = ['张三', '李四', '大黄', '张三'] -> names = ['张三', '李四', '大黄']
names = ['张三', '李四', '大黄', '张三']
new_names=set(names)
print(list(new_names))
names = ['张三', '李四', '大黄', '张三']
for names_index in range(len(names)-1):
for compare_index in range(names_index+1,len(names)):
if names[names_index]==names[compare_index]:
continue
#注意在这里使用pass和break的区别:
#pass/continue:跳过当前代码段,可以去除多余同类项
#break:直接跳出循环,只取出现一次的数
else:
new_names.append(names[names_index])
print(new_names)
7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表
list1=[]
for num in range(0,6536):
list1.append(num)
def cha_trans(x):
return chr(x)
print(list((map(cha_trans,list1))))
8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
list_scores=[12,54,76,87,56,90,9,99,45,342]
list_scores=sorted(list_scores,reverse=True)
list_scores=list(list_scores[1:-1])
list_sum=sum(list_scores)
list_len=len(list_scores)
ave=float(list_sum/list_len)
print(ave)
9.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']
A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C=[]
for i in A:
for j in B:
if i ==j :
C.append(i)
print(C)
10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1]
nums=sorted(nums,reverse=True)
print(nums[0])
nums = [19, 89, 90, 600, 1]
for index in range(len(nums)-1):
for compare in range(index+1,len(nums)):
if nums[index]>=nums[compare]:
pass
else:nums[index],nums[compare]=nums[compare],nums[index]
print(nums)
11.获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3
nums = [1, 2, 3,1,4,2,1,3,7,3,3]
nums_set=set(nums)
nums_list=list(nums_set)
times=[]
for count_num in nums_list:
counter=0
for num in nums:
if count_num==num:
counter+=1
times.append(counter)
max_times=max(times)
for index in range(len(times)):
if max_times==times[index]:
print("出现次数最多的是数字是:%d,出现次数是:%d"%(nums_list[index],max_times))
Page 2.
1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
counter=0
while True:
counter+=1
hight=0.08*(10**-3)*2**counter
if hight>=8848.13:
break
print("对折次数%d"%counter)
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n=int(input("请输入n值(>=3):"))
curr_2=1
curr_1=1
print(curr_2,curr_1,end=" ")
for i in range(0,n-2):
curr=curr_1+curr_2
curr_2=curr_1
curr_1=curr
print(curr,end=" ")
- 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
input_num=int(input("请您输入一个数:"))
Quality_list=[]
for Quality in range(int(input_num),1,-1):
for j in range(Quality-1,1,-1):
if not Quality%j:
break
else:
Quality_list.append(Quality)
factor_list = []
# 输出一个因子的列表
for divisor in Quality_list:
dividend=input_num
while dividend%divisor==0:
factor_list.append(divisor)
dividend //= divisor
# 输出所有的公因子
list1=[str(i) for i in factor_list] #将公因子列表转化为字符串
str1="x".join(list1) #使用字符串方法将x拆入字符串中
print(str1+"=%d"%input_num)
- 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
b_num=int(input("请输入一个数字:"))
nums=[a_num,b_num]
while True:
nums.sort(reverse=True)
nums[0],nums[1]=nums[1],nums[0]-nums[1]
if min(nums)==0:
print("最大公约数是:%d;最大小公倍数:%d"%(max(nums),a_num*b_num/max(nums)))
break
- 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for i in range(2,1001):
jadge_num=[]
for j in range(2,i):
if i%j==0:
shang=i//j
jadge_num.append(shang)
jadge_num.append(j)
if i ==sum(list(set(jadge_num)))+1:
perferct_num.append(i)
print("完数的列表为:",perferct_num)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
year=int(input())
month=int(input())
day=int(input())
print("%d年%d月%d日"%(year,month,day))
month_days=[31,28,31,30,31,30,31,31,30,31,30,31]
if year%4!=0:
day_sum = day
for month_num in range(1,month):
day_sum+=month_days[month_num]
else:
if month>2:
day_sum = day+1
for month_num in range(1,month):
day_sum += month_days[month_num]
else:
day_sum = day
for month_num in range(1, month):
day_sum += month_days[month_num]
print(day_sum)
- 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
new_N=[]
for i in N:
i+=5
i=i%10
new_N.append(i)
new_N[0],new_N[3]=new_N[3],new_N[0]
new_N[1],new_N[2]=new_N[2],new_N[1]
print(new_N)```
2. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数
6 =1* 2*3 -> 丑数
2 = 1*2 -> 丑数
7 = 1*7 -> 不是丑数
1, 2, 3, 4, 5, 6, 8,9,10, 12 ….
#这个程序只能找到前n位数字中所有的丑数;
``` n=int(input("请您输入一个数字"))
chou_num=[]
for input_num in range(1,n):
Quality_list=[]
for Quality in range(input_num,1,-1):
for i in range(Quality-1,1,-1):
if not Quality%i:
break
else:
Quality_list.append(Quality)
div=0
div_list=[]
for Qual in Quality_list:
if not input_num%Qual:
div_list.append(Qual)
div/=Qual
if div in Quality_list:
div_list.append(div)
for i in div_list:
if i not in [2,5,3]:
break
else:
chou_num.append(input_num)
print(chou_num)
#求第N位丑数
def chou_num(x):
while x%2==0:
x//=2
while x%3==0:
x//=3
while x%5==0:
x//=5
return x==1
times=1
q_nums=[]
n=int(input("请您输入第几位丑数"))
while True:
if chou_num(times):
q_nums.append(times)
if n==len(q_nums):
print("第%d个丑数是:%d"%(n,q_nums[n-1]),q_nums)
break
times+=1