上篇文章分享了一些入门算法题,如果没有看过的可以去看一下上一篇文章,这篇文章囊还是分享一些我精选的入门算法程序,废话不多说,上代码!
"""
实心矩形
"""
raw=int(input("请输入行数:"))
for x in range(raw):
print (" * "*x)
"""
空心矩形
"""
raw=int(input("请输入行数:"))
for x in range(raw):
for y in range(raw):
if x==0 or x==(raw-1) or y==0 or y==(raw-1):
print(" * ",end="")
else:
print(" ",end="")
print("")
"""
空心三角形
"""
for x in range(1,10):
print ((9-x)*" ",end="")
for y in range(2*x-1):
if y==0 or y==2*x-2 or x==9:
print("*",end="")
else:
print(" ",end="")
print()
"""
实心菱形
"""
for i in range(1,8,2):
print (' '*(4-(i+1)/2)+'*'*i)
for i in range(5,0,-2):
print (' '*(4-(i+1)/2)+'*'*i)
"""
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
"""
up = 2.0
down = 1.0
result = 0.0
for i in range(0,20):
result = result+up/down
up = up+down
down = up-down
print ('%f'%result)
"""
倒序输出字符串
"""
def output(s,length):
if length==0:
return
print (s[length-1],end="")
output(s,length-1)
s = input('输入字符串:')
length = len(s)
output(s,length)
'''
演示lambda的使用。
'''
MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y
MINIMUM = lambda x,y : (x > y) * y + (x < y) * x
a = 10
b = 20
print ('The largar one is %d' % MAXIMUM(a,b))
print ('The lower one is %d' % MINIMUM(a,b))
"""
假如你要为一个应用搞限时促销,生成激活码(或者优惠券),请用 Python 如何生成 200 个激活码
(或者优惠券)。激活码的格式为asqE-9xRK-lqWU-QkMT
要求1:使用随机生成时,生成数字概率为1/5,大写字母和小写字母概率各为2/5
要求2:200个激活码,他们各不相同
"""
def creat_key(key_num):
from random import randint
res = []
for t in range(key_num): #一共生成激活码的次数
key = '' #空激活码
for i in range(16): #激活码一共16个字符(除去分隔符)
if i %4==0:
key+='-'
choice = randint(1,5) #1->随机出一个数字,[2,3]->随机出一个大写字母,[4,5]->随机出一个小写字母
if choice == 1:
key += str(randint(0,9))
elif 1<choice<=3:
key += chr(randint(ord('A'),ord('Z')))
else:
key += chr(randint(ord('a'), ord('z')))
res.append(key[1:])#去掉开头的分隔符
return res
res = creat_key(200)
print(res)
"""
猜数字游戏
"""
import random
answer = random.randint(1,100) #正确答案
times = 0 #猜的次数
while True:
guess = int(input('请输入你猜测的数:'))
times +=1
if guess == answer:
print(f'回答正确,一共猜测{times}次') #f字符串,把需要填入的变量用{}括起来就行了,比较直观
break
elif guess < answer:
print('小了')
else:
print('大了')
"""
设计一个函数装饰器,这个装饰器可以记录任意函数单次调用的运行时间。
如果函数的运行时间小于1秒,就不输出其运行时间,否则输出此函数的运行时间
"""
import time
def deco(func):
def wrapper(*args,**kwargs):
start = time.time()
res = func(*args,**kwargs)
time_used = time.time()-start
if time_used >=1:
print(f'{func.__name__}函数运行时间为1s及以上')
return time_used
return wrapper
@deco
def f1(a):
print(a)
time.sleep(2) #让f1运行时间保存2秒
@deco
def f2(a):
print(a)
f1(1) #只有f1会额外输出时间为1s及以上
f2(2)
"""
凯撒密码的加密方法是:每当你想要加密一段文字时,你需要选择一个移位值 S,
它是一个0到25之间的整数。然后,你把文字中的每一个字母用S个位置之后的字母
替换(假设S=1,那么A就用B替换)。如果位置超过了Z,那么就要从A开始继续数
"""
def get_keywords(code,step):
res = ''
for c in code:
if c == ' ':
res+=' '
elif c.isupper():
res+=chr((ord(c)-ord('A')+step)%26+ord('A'))
else:
res+=chr((ord(c)-ord('a')+step)%26+ord('a'))
return res
print(get_keywords('Ifsf up tubz',25))
print(get_keywords('Here to stay',1))
"""
N个人围坐一圈数数,每个人标一个号,从一开始数,数到三的人出去,循环数数,求得出列序号顺序
"""
n=int(input("输入人数:"))
lst=[]
def move(array,m):
print (m)
if m==0:
return array
return array[-m:]+array[0:len(array)-m]
for x in range(1,n+1):
lst.append(x)
while len(lst)>2:
y=len(lst)%3
print ("y=%s"%y)
lst2=[]
for x in range(1,len(lst)//3+1):
print ("出队:%s"%lst[3*x-1])
lst2.append(lst[3*x-1])
for x in lst2:
for h in range(1,len(lst)):
if lst[len(lst)-h]==x:
print ("删除的是:",lst[len(lst)-h])
del lst[len(lst)-h]
print (lst)
lst=move(lst,y)
print (lst)
print (lst[1])
希望这些程序可以帮助到初学python的你,以后有时间会继续更新的