题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?

for a in range(1,5):
for b in range(1,5):
for c in range(1,5):
for d in range(1,5):
if(a!=b and a!=c and a!=d and b!=c and b!=d and c!=d):
print(a,b,c,d)
运行结果
python算法题
注意:
  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

2 题目:打印出国际象棋图
python算法题
分析:行为0-7,列为0-7,当行列之和为奇数时为黑色

python算法题

import sys
for i in range(8):
for j in range(8):
if (i + j) % 2 != 0:
print(chr(219),end='')
print(chr(219),end='')
else: print(' ',end='')
print('\n',end='')
python算法题
3题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
判断是否为字母:str.isspace
判断是否为空格:str.isalpha
判断是否为数字:str.isdigit
判断是否为其他字符:前三种都不是就是其他字符
输入:str = input('please input a string:\n')

space =0
digit=0
alpha=0
other=0
str ="12jdfj wjdf dfj wejwi jsdifj,,nfiraj "
for i in str:
if(i.isalpha()):
alpha=alpha+1 
   if(i.isspace()):
space=space+1 
   if(i.isdigit()):
digit=digit+1 
   else:
other=other+1
print("space=",space,"digit=",digit,"alpha=",alpha,"other=",other)
运行结果:

space= 5 digit= 2 alpha= 28 other= 35

4 题目 汉诺塔

Hanoi塔问题,算法分析如下,设A上有n个盘子(编号由上到下:1、2、3……、n)。A:初始塔,B:中转塔,C:目标塔
    a、如果n=1,则将盘子从A塔直接移动到C塔(借助B塔)。
    b、如果n=3,则:
    (1)将A塔上编号1~2的盘子(2个盘子)移动到B塔上(借助C塔);
    (2)将A塔上编号3的盘子(最后一个盘子)移动到C塔上;
     (3)将B塔上编号1~2的盘子(2个盘子)移动到C塔上(借助A塔)。
     c、延伸,如果n=num,则:
    (1)将A塔上编号1~num-1的盘子(num-1个盘子)移动到B塔上(借助C塔);
    (2)将A塔上编号num的盘子(最后一个盘子)移动到C塔上;
    (3)将B塔上编号1~num-1的盘子(num-1个盘子)移动到C塔上(借助A塔
代码:


def move(n,a,c):   
global i   
print("第%d步:%d号盘子移动 初始塔%s到目标塔%s" % (i, n, a, c))
i+=1
def hanoi(n,a,b,c):
#n:移动个数,a:from b:中转c:目标   
if(n==1):
move(1,a,c)   
else:
hanoi(n-1,a,c,b)#n-1个从a中转c到b
move(n,a,c) #第n个从a到c 
hanoi(n-1,b,a,c)#n-1个从a中转a到c
if __name__ == '__main__':
i=1
n=4
hanoi(n,"A","B","C")

运行结果:
python算法题
5 题目:打印出菱形
代码:
n=int(input("请输入一个数字:"))
for i in range(n):
    for m in range(n -1- i):
        print(" ", sep='', end='')
    for j in range(2*i+1):
        print("*",sep='',end='')
    print("\n",sep='', end='')
for i in range(n):
    for m in range(i):
        print(" ", sep='', end='')
    for j in range(2*n-2*i-1):
        print("*",sep='',end='')
    print("\n",sep='', end='')
运行结果:
python算法题

6题目有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和

a=2b=1s=a/bfor i in range(19): c=a a=a+b b=c s=s+a/bprint(s)
运行结果:python算法题
7 题目:回数是指从左向右读和从右向左读都是一样的数,例如123321,909。请利用filter()滤掉非回数
filter()把传入的函数一次作用于每个元素,然后如果返回值是True,则保留该元素,如果返回值为False,则丢弃该元素。
利用切片方法:[::-1]含义就是,所有列表里的数,每负1,取一个。也就是将所有元素反向。 
#原始方法
def first(n):
  for i in range(n+1):
    s=str(i)
    if(s==s[::-1]):
        print(s," ", end="")
#filter()
def huishu(n):
    s = str(n)
    return s == s[::-1]
if __name__ == "__main__":
    n = int(input("您要查询前多少的回数?\n请您输入:"))
    print("原始方法:")
    first(n+1)
    print("\t")
    print("filter():")
    result = filter(huishu,range(1,(n+1)))
    print(list(result))
运行结果:python算法题
   

相关文章:

  • 2022-12-23
  • 2021-12-17
  • 2022-12-23
  • 2022-12-23
  • 2022-01-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-28
  • 2022-12-23
  • 2021-07-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案