#输入某年某月某日,判断这一天是这一年的第几天?
#斐波那契数列[0,1,1,2,3,5,8,13...]
li = [0,1]
for i in range(2,15):
# li[i] = li[i-1] + li[i-2]
li.append(li[i-1] + li[i-2])
print(li)
#乘法表
for i in range(1,10):
# print() 下面的print也可以放在这里 还可以直接不输入空-‘’
for j in range(1,i+1):
print("%s*%s=%s"%(i,j,i*j),end=' ')
print('')
#打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
#例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000):
for j in range(1,10):
# j*100+j*10+j=i
for k in range(0,10):
for l in range(0,10):
if i == j ** 3 + k ** 3 + l ** 3 and i == j * 100 + k * 10 + l:
# if i==j**3 + k**3 + l**3 and i==j*100+k*10+l and j!=0:
print(i)
for n in range(100,1000):
i = n/100
j = n/10%10
k = n/10
if n == (i ** 3 + j ** 3 + k ** 3):
print(n)
#14
#将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
m = input("请输入一个正整数:")
n = int(m)
print("{}=".format(n),end='')
if n in [1]:
print("{}".format(n),end='')
while n not in [1]: #循环保证递归
for k in range(2,n+1):
if n%k==0:
n=int(n/k)
if n==1:
print(k)
else:
print("{}*".format(k),end='')
break #跳出循环 确保每次k从2开始循环 不然k会每次都增加1
#暂停一秒输出,并格式化当前时间。
import time
# print(time.time()) #时间戳 1559124252.7110486
# print(time.localtime(time.time())) #结构化时间
# print(time.gmtime(time.time())) #结构化时间
print(time.strftime('%Y-%M-%D %H:%M:%S',time.localtime(time.time())))
# 暂停一秒
time.sleep(1)
print(time.strftime('%Y-%M-%D %H:%M:%S',time.localtime(time.time())))
17输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
s = input("请输入:")
# print(s[1])
# print(len(s))
# alpha,digit,space,other = 0
l=alpha=digit=space=other = 0
while l < len(s):
if s[l].isalpha():
alpha += 1
# l += 1
elif s[l].isdigit():
digit += 1
# l += 1
elif s[l].isspace():
space += 1
# l += 1
else:
other += 1
# l += 1
l += 1
print("字母%s 数字%s 空格%s 其他%s"%(alpha,digit,space,other))
18求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
from functools import reduce
a = int(input("输入a:"))
n = int(input("输入n:"))
li = []
Tn = 0
Sn = 0
for i in range(0,n):
Tn = Tn + a
a *= 10
li.append(Tn)
Sn = reduce(lambda x,y:x+y,li)
# Sn = lambda x,y:x+y,li
print("Sn=",Sn)
19一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
sum = 0
for i in range(0,1001):
sum = 0 #每换一个i sum必须从0开始
li=[]
for j in range(1,i):
if i%j == 0:
sum = sum + j
li.append(j)
# if sum == i:
# print(i, li) #输出结果有24 [1, 2, 3, 4, 6, 8] 很明显少了12 因为j=8时已经满足sum = i,j不再增加
if sum == i: #所以得等到所有j遍历完再判断sum
print(i,li) #输出结果不再有24 有0[] 哈哈哈哈xswl 改i范围 从1开始 不能改j为从0开始 除数不能为0
# break
20一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
from functools import reduce
li = [100]
def ball_hei(n):
hei = 100 / (2**n)
for i in range(1,n):
# meter = 100 / (2**i)
# li.append(meter*2)
li.append(100/i)
# print(hei,li)
sum = reduce(lambda x,y:x+y,li)
print("第%s次反弹高度为%s米,落地时经过%s米"%(n,hei,sum))
ball_hei(10)
22两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
D = ['x','y','z']
for i in D:
if i != 'x' and i != 'z':
# C.append(i)
print("c --",i)
D.remove(i)
# print(D)
for j in D:
if j != 'x':
print("a --", j)
D.remove(j)
print("b --",D[0])
for a in ['x','y','z']:
for b in ['x', 'y', 'z']:
for c in ['x', 'y', 'z']:
if(a!=b)and(b!=c)and(c!=a) and (a!='x') and (c!='x') and (c!='z'):
print( 'a--%s,b--%s,c--%s' %(a,b,c))
23 打印出如下图案(菱形):
s = '*'
n = int(input("输入层数(奇数):"))
for i in range(1,n+1,2):
t = (n-i)//2
print(' '*t + s*i + ' '*t)
for i in reversed(range(1,n-1,2)):
t = (n-i)//2
print(' '*t + s*i + ' '*t)
s = '*'
for i in range(1, 8, 2):
print((s*i).center(7))
for i in reversed(range(1, 6, 2)):
print((s*i).center(7))
24 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
from functools import reduce
b = 2
a = 1
s = 0
li = []
for i in range(1,21):
# s += b / a
li.append(b / a)
b,a = a+b,b
print(li)
print(reduce(lambda x,y:x+y,li))
# print(s)
25 利用递归方法求5!
sum = 0
def Jiech(n):
if n == 1:
sum = 1
else:
sum = n * Jiech(n-1)
return sum
print(Jiech(5))
30 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
s = input("请输入一个5位数:")
flag = 1
for i in range(len(s)):
if s[i] != s[-i-1]: #要验证不满足的 如果验证满足的 有一位对称则会判定为回文 比如 12341
flag = 0
break
if flag:
print("是回文")
else:
print("不是回文")
#输入某年某月某日,判断这一天是这一年的第几天?
#斐波那契数列[0,1,1,2,3,5,8,13...]
li = [0,1]
for i in range(2,15):
# li[i] = li[i-1] + li[i-2]
li.append(li[i-1] + li[i-2])
print(li)
#乘法表
for i in range(1,10):
# print() 下面的print也可以放在这里 还可以直接不输入空-‘’
for j in range(1,i+1):
print("%s*%s=%s"%(i,j,i*j),end=' ')
print('')
#打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
#例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000):
for j in range(1,10):
# j*100+j*10+j=i
for k in range(0,10):
for l in range(0,10):
if i == j ** 3 + k ** 3 + l ** 3 and i == j * 100 + k * 10 + l:
# if i==j**3 + k**3 + l**3 and i==j*100+k*10+l and j!=0:
print(i)
for n in range(100,1000):
i = n/100
j = n/10%10
k = n/10
if n == (i ** 3 + j ** 3 + k ** 3):
print(n)
#14
#将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
m = input("请输入一个正整数:")
n = int(m)
print("{}=".format(n),end='')
if n in [1]:
print("{}".format(n),end='')
while n not in [1]: #循环保证递归
for k in range(2,n+1):
if n%k==0:
n=int(n/k)
if n==1:
print(k)
else:
print("{}*".format(k),end='')
break #跳出循环 确保每次k从2开始循环 不然k会每次都增加1
#暂停一秒输出,并格式化当前时间。
import time
# print(time.time()) #时间戳 1559124252.7110486
# print(time.localtime(time.time())) #结构化时间
# print(time.gmtime(time.time())) #结构化时间
print(time.strftime('%Y-%M-%D %H:%M:%S',time.localtime(time.time())))
# 暂停一秒
time.sleep(1)
print(time.strftime('%Y-%M-%D %H:%M:%S',time.localtime(time.time())))
输出指定格式的日期
# 37 对10个数进行排序
li = []
for i in range(5):
# li.append(input("请输入一个数:")) #分不清0,1,10的顺序
li.append(int(input('输入一个数字:\n')))
li.sort()
print(li)
li = []
n = 1
while n < 5:
li.append(int(input("请输入一个数:"))) #不加int就分不清['10', '0', '11', '2'] --> ['0', '10', '11', '2']
n+=1
print(li)
for i in range(4):
for j in range(i+1,4):
if li[i] > li[j]:
li[i],li[j]=li[j],li[i]
print(li)
# 38 求一个3*3矩阵主对角线元素之和
li = []
sum = 0
for i in range(3):
li.append([])
for j in range(3):
li[i].append(int(input("请输入第%s行第%s个数字:"%(i+1,j+1))))
# if i == j:
# sum += li[i][j]
for i in range(3):
sum += li[i][i]
print(li,"\n",sum)
# 41 42 43不明觉厉
# 49 使用lambda来创建匿名函数
MAXIMUM = lambda x, y: (x > y) * x + (x < y) * y
MINIMUM = lambda x, y: (x > y) * y + (x < y) * x
if __name__ == '__main__':
a = 10
b = 20
print( 'The largar one is %d' % MAXIMUM(a, b))
print('The lower one is %d' % MINIMUM(a, b))
# 76 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
def add(n):
sum = 0
# n = int(input("输入一个数:"))
if n%2 == 0:
for i in range(2,n+1,2):
sum += 1/i
else:
for i in range(1,n+1,2):
sum += 1/i
return sum
# print(add(int(input("输入一个数:"))))
if __name__ == '__main__':
n = int(input("输入一个数:"))
print(add(n))
# 大神666
print(sum([1/i for i in range(int(input('Enter another integer:')), 0, -2)])
# 78 找到年龄最大的人,并输出
s = 0
K = ''
person = {"li":18,"wang":50,"zhang":20,"sun":22}
for k,v in person.items():
# print(k,v)
# print(type(v))
if v > s:
s = v
K = k
print(s,K)
person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
m = 'li'
for key in person.keys():
if person[m] < person[key]:
m = key
print('%s,%d' % (m, person[m]))
# 83 求0—7所能组成的奇数个数。
a1-a8可以取0-7这个八个数字,首位数字不为0。
即一个a为4种(个位),另一个7种(首位),
从该数为一位数到该数为8位数开始统计奇数的个数:
1.当只有一位数时也就是该数的最后一位,奇数个数为4
2.当该数为两位数时,奇数个数为4*7=28
3.当该数为三位数时,奇数个数为:4*8*7=224
8.当该数为八位数时,奇数个数为:4*8*8*8*8*8*8*7(依次为最后一位到第一位)
sum = 32
s = 0
for i in range(3,9):
s = 28*(8**(i-2))
sum += s
print("%s位数%s个,总共奇数%s个"%(i,s,sum))
# 85 输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
a = 9
count = 1
# x = 1
n = int(input("请输入一个奇数:"))
# while x:
while 1:
if a%n == 0:
print(count)
# x = 0
break
else:
a = a*10+9
count += 1
# x = 1
# 97 从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止
import sys,time
n = input("输入:\n")
f = open('f1.txt','r+')
for i in n:
if i != '#':
f.write(i)
else:
break
f.write('\n')
for i in range(20):
print(f.readline())
sys.stdout.flush()
time.sleep(1)
f.close()
来源:oschina
链接:https://my.oschina.net/u/4412725/blog/3514380