需求1:接收变量 k a b
s = '51 5000 10000'
a = s.split()
print(a)
li = []
for item in s.split():
li.append(int(item))
print(li)
k,a,b = li
print(k,a,b)
['51', '5000', '10000']
[51, 5000, 10000]
51 5000 10000
===========将for语句改为列表生成式============
li = [int(item) for item in s.split()]
print(li)
k, a, b = li
print(k, a, b)
[51, 5000, 10000]
51 5000 10000
需求2:生成一个列表,列表的元素分别为[ 1 ** 1 2 ** 2 9 ** 9 ]
li = []
for i in range(1, 10):
li.append(i ** i)
print(li)
[1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489]
=============将for语句改为列表生成式============
print([i ** i for i in range(1, 10)])
[1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489]
print([i ** i for i in range(1, 10) if i % 2 == 0])
[4, 256, 46656, 16777216]
需求3: 找出1~10之间的所有偶数
print([i for i in range(0,11,2) ])
[0, 2, 4, 6, 8, 10]
需求4:s1 = ‘ABC’ s2=‘123’ 输出:A1 B2 C3
s1='ABC'
s2='123'
y=(zip(s1,s2))
for i in y:
print(''.join(i),end=' ')
['A1', 'B2', 'C3']
print([''.join(i) for i in y ])
['A1', 'B2', 'C3']
需求5:s1=‘ABC’ s2=‘123’ 输出:A1 A2 A3 B1 B2 B3 C1 C2 C3
s1='ABC'
s2='123'
print([i + j for i in 'ABC' for j in '123'])
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
需求6:将嵌套列表去嵌套,变成一个列表
[
[1,2,3],
[4,5,6], —————->[1,2,3,4,5,6,7,8,9]
[7,8,9]
]
li = [
[1,2,3],
[4,5,6],
[7,8,9]
]
resli = []
for i in li:
for j in i:
resli.append(j)
print(resli)
================改为列表生成式============
print([j for i in li for j in i])
====chain()可以把一组迭代对象串联起来,形成一个更大的迭代器=====
from itertools import chain
print(list(chain(*li)))
————————–练习——————————
找出1~10之间的所有偶数,
并且返回一个列表(包含以这个偶数为半径的园的面积)
import math
#方法1:
li = []
for r in range(2, 11, 2):
li.append(math.pi * r * r)
print(li)
#方法2:
print([math.pi * r * r for r in range(2, 11, 2)])
#方法3:
def square(r):
"""
求以r为半径的圆
:param r:半径
:return:
"""
res = math.pi * r * r
return res
print([square(i) for i in range(2,11,2)])
#找出1~100之间的所有素数 (列表生成式 + 函数)
def isPrime(num):
for i in range(2,num):
if num % i == 0:
return False
else:
return True
print([i for i in range(2,101) if isPrime(i)])
——————练习——————-
题目需求: 对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如: f(13) = 1**2 + 3**2 = 10 f(207) = 2**2 + 0**2 + 7**2 = 53 下面给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b, 且k*f(n)=n 输入: 第一行包含3个正整数k,a, b, k>=1, a,b<=10**18, a<=b; 输出: 输出对应的答案; 范例: 输入: 51 5000 10000 输出: 3
def f(n):
a=0
m=str(n)
for i in m:
a += int(i) ** 2
return a
three=input('请输入三个整数,并用空格隔开:')
threes=three.split(' ')
x=int(threes[0])
y=int(threes[1])
z=int(threes[2])
sum=0
if x>=1 and y<=z<=10**18 :
for i in range(y,z+1):
if x*f(i)==i :
sum+=1
print(sum)
else:
print('请重新输入数据!!')
———————–练习———————-
(2018-腾讯-在线编程题)
- 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7)) - 输入描述:
输入包括一个整数n,(3 ≤ n < 1000) - 输出描述:
输出对数 - 示例1 :
输入:
10
输出:
2
def sushu(n): for i in range(2,n): if n%i==0: return False else: return True def add(n): sum=0 for i in range(2,int(n/2)+1): if sushu(i) and sushu(n-i): sum+=1 return sum nmb=int(input('请输入一个小于1000的正整数:')) print(add(nmb))
# num = int(input('N:'))
# # 1.判断2~num之间有多少个质数
# def isPrime(num):
# for i in range(2,num):
# if num % i == 0:
# return False
# else:
# return True
#
# primeli = [i for i in range(2,101) if isPrime(i)]
# print(primeli)
#
# # 判断素数列表 primeli中有多少个素数等于num
# primePairCount = 0
#
# """
# 1.先从列表中拿出两个数
# 2.判断两个数之和是否等于num
# """
# # for item1 in primeli:
# # for item2 in primeli:
# # if item1 + item2 == num and item1 <= item2:
# # primePairCount += 1
# # print(primePairCount)
#
# # [2,3,5,7] 2 ===10-2 3==10-3 5 ===10-5 7 ==10-7
#
# for item1 in primeli:
# if (num - item1) in primeli and item1 <= num-item1:
# primePairCount += 1
# print(primePairCount)
———————练习———————
列表的字符串的大写改成小写,不是字符串的去掉
li = ['hello','World',16,67,12.3,False,'Apple']
print([s.lower() for s in li if isinstance(s,str)])
----------------OR----------------------
print([s.lower for s in li if type(s)==str])
———————–练习———————–
找出/var/log目录中,所有以.log结尾的文件名或者目录名
import os
print(os.listdir('/var/log'))
#print(os.system('pwd'))
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])