2019-07-28

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)
  1. 古典问题:有一对兔子,从出生后第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=" ")
  1. 将一个正整数分解质因数。例如:输入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)
  1. 输入两个正整数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
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如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)
  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容