作业
1.已知一个数字列表,求列表中心元素
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
s = len(li)
num = int(s/2)
print(li[num])
2.已知一个数字列表,求所有元素和
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
mild = sum(li)
print(mild)
3.已知一个数字列表,输出所有奇数下标元素。
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for index in range(len(li)):
if index & 1 != 0:
print(li[index], end=" ")
print("")
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in li:
if num & 1:
print(num, end=" ")
print("")
5.已知一个数字列表,将所有元素乘二。
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
li_1 = []
for num in li:
num *= 2
li_1.append(num)
print(li_1)
# print(num)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
使用内置函数list(set(列表名))
li_names = [1, 1, 2, 3, 4, 3, 6, 7, 2, 9]
li_2 = list(set(li_names))
print(li_2)
7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表
li_asc = [97, 98, 99, 100]
li_3 = []
for i in li_asc:
i = chr(i)
li_3.append(i)
print(li_3)
8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
# scores = []
# while True:
# score = float(input("请输入得分:"))
# scores.append(score)
# if len(scores) >= 10:
# print(scores)
# break
# # print(max(scores))
# sum1 = 0
# average = 0
# scores.remove(max(scores))
# # print(scores)
# scores.remove(min(scores))
# sum1 = sum(scores)
# # long = len(scores)
# average = sum1 / (len(scores) - 2)
# print(average)
9. 有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']
# li_1 = [1, "a", 4, 9, "b"]
# li_2 = ["a", 8, "b", 3, 1]
# li_3 = []
# for i in li_1:
# for j in li_2:
# if i == j:
# li_3.append(i)
# print(li_3)
10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
# sum_1 = 0
# list_num = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
# for i in list_num:
# if i > sum_1:
# sum_1 = i
# print(sum_1)
11.获取列表中出现次数最多的元素
num_1 = [1, 2, 7, 1, 4, 2, 1, 3, 7, 3, 3, 7, 7]
num_2 = []
for i in num_1:
if i not in num_2:
num_2.append(i)
# print(num_2)
num_3 = 0
for j in num_2:
s = num_1.count(i)
if s > num_3:
num_3 = s
print(i)
num_2 = []
n = 0
for i in num_1:
num_2.append(i)
if i in num_2:
n += 1
for i in num_1:
s = num_1.count(i)
print(s)
print(num_1.count(1))
1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
thickness = 8/100000
n = 0
while True:
if thickness <= 8848.13:
thickness *= 2
n += 1
else:
print(n)
break
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?
n_2 = 1
n_1 = 1
for i in range(3, 21):
n_2, n_1 = n_1, n_2 + n_1
print("第%d个月的兔子总数是%d对:" % (i, n_1))
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = int(input("请输入一个任意正整数:"))
num_1 = num
k = 2
product = []
while num > 1:
if num % k:
k = k + 1
else:
product.append(k)
num = num / k
print(product)
s = []
s = [str(i)for i in product] # 将数据类型列表转换为字符类型的列表
# print(s)
print("{} = {}".format(num_1, "x".join(s)))
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m = int(input("请输入任意正整数:"))
n = int(input("请输入任意正整数:"))
if m > n:
while True:
if m % n != 0:
t_1 = m
m = n
n = t_1 % n
else:
print(n)
break
else:
while True:
if n % m:
t_2 = n
n = m
m = t_2 % m
else:
print(m)
break
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
例如6=1+2+3. 编程 找出1000以内的所有完数
list_sum = []
for i in range(0, 1000):
list_num = []
for j in range(1, i):
if i % j == 0:
list_num.append(j)
if sum(list_num) == i:
# print(list_num)
list_sum.append(i)
print(list_sum)
6.输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,
特殊情况,闰年且输入月份大于3时需考虑多加一天。
years = int(input("请输入年份:"))
mouths = int(input("请输入月份:"))
days = int(input("请输入日期:"))
day_leap = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
day_ord = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if mouths <= 12:
if days <= 31:
if (years % 4 == 0 or years % 100 != 0) and years % 400 == 0:
sum_1 = days
for i in day_leap[:mouths]:
sum_1 += i
else:
sum_1 = days
for i in day_ord[:mouths]:
sum_1 += i
print("这是%d年的第%d天" % (years, sum_1))
else:
print("日期输入错误")
else:
print("月份输入错误")
7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
求输入的四位整数加密后的值
num_s = input("请输入一个四位整数:")
list_s = []
for i in num_s:
list_s.append(i)
# print(list_s)
# list_i = []
list_i = [int(i)for i in list_s] #转换类型
# print(list_i)
# 每位数字+5
list_j = []
for j in list_i:
j += 5
list_j.append(j)
# print(list_j)
# 每位数字 除10去余
list_h = []
for h in list_j:
h = h % 10
list_h.append(h)
print(list_h)
# 交换位置
list_h[0], list_h[3] = list_h[3], list_h[0]
list_h[1], list_h[2] = list_h[2], list_h[1]
print(list_h)
8. 获取第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 = int(input("请输入一个任意整数:"))
num = 0
b = 1
while True:
a = b
if num == n:
print(b - 1)
break
while True:
if a == 1:
num += 1
break
elif a % 2 == 0:
a = a // 2
elif a % 3 == 0:
a = a // 3
elif a % 5 == 0:
a = a // 5
else:
break
b += 1