Day5作业-2019/07/26

作业1

1.已知一个数字列表,求列表中心元素。

num_list = [12, 34, 5, 76, 87, 90, 3, 6]
if len(num_list) & 1 == 0:
    print(num_list[(len(num_list) // 2) - 1], num_list[len(num_list) // 2])
else:
    print(num_list[len(num_list) // 2])

2.已知一个数字列表,求所有元素和。

num_list = [12, 34, 5, 76, 87, 90, 3]
sum1 = 0
for num in num_list:
    sum1 += num
print(sum1)

3.已知一个数字列表,输出所有奇数下标元素。

num_list = [12, 34, 5, 76, 87, 90, 3, 6]
for index in range(1, len(num_list), 2):
    print(index, num_list[index])
# print(num_list[1::2])

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

num_list = [12, 34, 5, 76, 87, 90, 3, 6, 7, 45]
for num in num_list:
    if num & 1:
        print(num, end=' ')

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

num_list = [12, 34, 5, 76, 87, 90, 3, -5]
for x in range(len(num_list)):
    num_list[x] *=  2
print(num_list)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = ['张三', '李四', '大黄', '张三'] -> names = ['张三', '李四', '大黄']

names = ['张三', '李四', '张三', '王五', '赵六', '钱七', '孙八',\
         '李四', '吴十', '赵六']
new_names = []
for name in names:
    if name not in new_names:
        new_names.append(name)
names = new_names
print(names)

7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表

例如: list1 = [97, 98, 99] -> list1 = ['a', 'b', 'c']

num_list = [97, 34, 33, 76, 87, 90, 102, 50, 69, 45]
index = -1
for num in num_list:
    index += 1
    num_list[index] = chr(num_list[index])
print(num_list)

8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

num_list = [69, 85, 76, 79, 87, 90, 97, 71]
max_num = num_list[0]
min_num = num_list[0]
for num in num_list:
    if num > max_num:
        max_num = num
    if num < min_num:
        min_num = num
num_list.remove(min_num)
num_list.remove(max_num)
print(num_list)
sum1 = 0
count = 0
for num1 in num_list:
    count += 1
    sum1 += num1
average = sum1 / count
print(average)

9.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']

list_1 = [1, '我', 20, 'abc', -8, 20]
list_2 = ['他', 45, 67, 'abc', 12, 1]
list_3 = []
for element in list_1:
    for element_2 in list_2:
        if element == element_2:
            list_3.append(element)
print(list_3)

10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

num_list = [69, 34, 123, 76, 87, 90, 211, -5]
max_num = num_list[0]
for num in num_list[1:]:
    if num > max_num:
        max_num = num
print(max_num)

11.获取列表中出现次数最多的元素

例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

nums = [5, 4, 67, 1, 87, 90, 1, 67, 45, 1, 90, 103, -45, 90, 86, 90]
index1 = 0      # 出现次数最多的元素的下标
max1 = 0        #最大的元素出现次数
for i in range(len(nums)):
    count = 0   #每一个元素出现的次数
    for j in range(i+1, len(nums)):
        if nums[i] == nums[j]:
            count += 1
    if count > max1:
        max1 = count
        index1 = i
print(nums[index1])

作业二

1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

paper_height = 0.00008
count = 0
while True:
    paper_height *= 2
    count += 1
    if paper_height >= 8848.13:
        break
print(count)
  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n = int(input('请输入月份:'))
n2 = 0
n1 = 1
current = 1
for x in range(1, n):
    current = n2 + n1
    n2 = n1
    n1 = current
print('第%d个月数量是%d' % (n, current))
  1. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
list1 = []
def prime_factor(num):
    while True:
        for i in range(2, num+1):
            if num % i == 0:
                num = int(num / i)
                list1.append(i)
                break
        if num == 1 or list1 == []:
            break
n = int(input('输入一个整数:'))
prime_factor(n)
print('%d=' % n, end='')
for x in range(len(list1)):
    print(list1[x], end='')
    if x == len(list1)-1:
        print('')
    else:
        print('*', end='')
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m, n = int(input('m=')), int(input('n='))
max_num = 1
for x in range(2, min(m, n)+1):
    if m % x == 0 and n % x == 0:
        max_num = x
min_num = int(m * n / max_num)
print('最大公约数:', max_num)
print('最小公倍数:', min_num)
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for i in range(2, 1001):
    list1 = [1]
    for x in range(2, i // 2 + 1):
        if i % x == 0:
            list1.append(x)
    if sum(list1) == i:
        print(i, '是完数')

6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
y, m, d = int(input('年份:')), int(input('月份:')), int(input('日子:'))
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
    month[1] = 29
sum_day = sum(month[0:m-1]) + d
print(sum_day)
  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num = int(input('请输入4位整数:'))
list_num = [num // 1000, num // 100 % 10, num % 100 // 10, num % 10]
for x in range(4):
    list_num[x] = (list_num[x] + 5) % 10
list_num = list_num[::-1]
print(list_num[0] * 1000 + list_num[1] * 100 + list_num[2] * 10 + list_num[3])
  1. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

    6 =1* 2*3 -> 丑数

    2 = 1*2 -> 丑数

    7 = 1*7 -> 不是丑数

    1, 2, 3, 4, 5, 6, 8,9,10, 12 ….

nums = [2, 3, 5]
def ugly(m):
    list1 = []
    flag = True
    if m == 1:
        flag = True
    else:
        while True:
            for i in range(2, m+1):
                if m % i == 0:
                    m = int(m / i)
                    list1.append(i)
                    break
            if m == 1 or list1 == []:
                break
        if list == []:
            flag = False
        else:
            for x in list1:
                if x not in nums:
                    flag = False
    return flag
n = int(input('输入需要查看的第几个丑数:'))
num = 1
count = 0
while True:
    if ugly(num):
        count += 1
    if count == n:
        break
    num += 1
print('第%d个质数是:' % n, num)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • work1 1.已知一个数字列表,求列表中心元素。 2.已知一个数字列表,求所有元素和。 3.已知一个数字列表,输...
    Lis_reak阅读 2,415评论 0 0
  • 1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? h = 0.08n...
    扎克chen阅读 2,985评论 0 1
  • 1.已知一个数字列表,求列表中心元素。 2.已知一个数字列表,求所有元素和。 3.已知一个数字列表,输出所有奇数下...
    容荔阅读 3,369评论 0 0
  • 1.已知一个数字列表,求列表中心元素。 2.已知一个数字列表,求所有元素和。 3.已知一个数字列表,输出所有奇数下...
    Ed97001阅读 1,690评论 0 0
  • 為什麼不行?你有什麼事嗎?能不能提早? 對於這樣的問題,社會教育我們不能隨心所欲的回答:因為我不想。 總是必須絞盡...
    陳群阅读 1,079评论 0 0