列表生成式的练习

1、(2018-腾讯-在线编程题)
- 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
# [2,3,5,7]
- 输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
- 输出描述:
输出对数
- 示例1 :
输入:
    10
输出:
    2

思路:

  1. 先写出判断素数的函数,并且找出所有的素数然后存到一个列表里

  2. 判断哪两个质数之和等于输入的数字,需要注意的是,有的两个一样的质数之和如果等于输入的数字,就会计算两遍

def isprime(num):                               #该函数的作用是,判断一个数字是否是质数
    for i in range(2, num):
        if num % i == 0:
            return False
        elif num == 2:
            return True
    else:
        return True


list = [i for i in range(2, 1000) if isprime(i)] #将1-1000的质数存入到列表里

n = int(input("输入:"))
num = 0
for i in list:
    if n - i in list and i <= n - i:          #进行题目的判断
        num += 1                        #根据质数1+质数2=输入的数  可以想到两种算法
print('输出:')                           #在这里我用了最简单的一种,就是判断number-质数的值
print(num)                             #是否在列表里存在,此时只需要一个循环

2、列表的字符串的大写改成小写,不是字符串的去掉

li = ['hello','Wrold',16,17,18,12.3,False,'Apple']

思路:先进行判断,所有的元素是否是字符串,然后进行小写的转换

s = ['hello','Wrold',16,17,18,12.3,False,'Apple']
s1=[ i.lower() for i in s if isinstance(i,str)] 
               #instance(i,str)  用来判断i是否是字符串,是的话返回True
print(s1)

3、找出/var/log目录中,所有以.log结尾的文件名或者目录名

思路:调用os模块,列出目录下的文件名字,然后用endswith找出以.log结尾的文件

import os
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])

4、判断2-num之间有多少个质数

num=int(input("请输入数字:"))
def find(num):
    for i in range(2,num):
        if num%2==0:
            return False
    else:
        return True
print(len([ i for i in range(2,num+1) if (find(i))]))  

#用len计算列表的长度

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值