0
点赞
收藏
分享

微信扫一扫

【Python 百炼成钢】进制转换、特殊回文数、水仙花数、杨辉三角、字母图形、01字符串、回形取数、排他方数、世纪末的星期日、约瑟夫环

蓝哆啦呀 2022-03-26 阅读 72

文章目录

🤡前言🤡


💟进制转换💞


💗问题描述💗

💗问题分析💗

💗代码实现💗

# 十六进制转换为八进制
n=input()
# 由于转换后带一个前缀0x或者0o,故我们要从第三个位置数据开始输出
print(oct(int(n,base=16))[2::])

# 十六进制转换为十进制
n=input()
print(int(n,base=16))

#十进制转换为十六进制
n=int(input())
print(hex(n).upper()[2::])

💟特殊回文数💞


🧡问题描述🧡

🧡问题分析🧡

🧡代码实现🧡

# 五位数
for i in range(1,10):# 控制最高位
    for j in range(10): # 控制第二位
        for k in range(10): # 控制中间的数值
            if 2*i+2*j+k==n:
                print(f'{i}{j}{k}{j}{i}')


# 六位数
for i in range(1,10):# 控制最高位
    for j in range(10): # 控制第二位
        for k in range(10): # 控制中间的数值
            if 2*i+2*j+2*k==n:
                print(f'{i}{j}{k}{k}{j}{i}')

💟水仙花数💞


💛问题描述💛

💛问题分析💛

💛代码实现💛

for i in range(100,1000):
    if i==pow(i%10,3)+pow((i//10)%10,3)+pow(i//100,3):
        print(i)

💟杨辉三角💞


💚问题描述💚

💚问题分析💚

💚代码实现💚

n=int(input())
ans=[[0]*n for i in range(n)]

i=0
while i<n:
    ans[i][0]=1
    i+=1

for i in range(1,n):
    for j in range(1,n):
        ans[i][j]=ans[i-1][j-1]+ans[i-1][j]


for i in range(n):
    for j in range(n):
        if ans[i][j]==0:
            break
        if j==0:
            print(ans[i][j],end="")
        else:
            print(" ",ans[i][j],end="",sep="")
    print()

💟字母图形💞


💙问题描述💙

💙问题分析💙

💙代码实现💙

from collections import deque
n,m=map(int,input().split())
ans=deque([i+65 for i in range(m)])
# print(*ans)
for i in ans:
    print(chr(i),end="")
print()
for i in range(1,n):
    ans.appendleft(65+i)
    ans.pop()
    for j in ans:
        print(chr(j),end="")
    print()

💟01字符串💞


💜问题描述💜

💜问题分析💜

💜代码实现💜

ans=[]
for i in range(0,32):
    ans.append(bin(i)[2:].rjust(5,'0'))

for i in ans:
    print(i)

💟回形取数💞


🤎问题描述🤎

🤎问题分析🤎

🤎代码实现🤎

m,n=map(int,input().split())
re=[list(map(int,input().split())) for x in range(m)]
ans=[]
ans.append(re[0][0])
re[0][0]=None
# 记录矩阵的行和列
row=0
col=0

i=1
while i<n*m:
    while row<m-1 and re[row+1][col]!=None:
        ans.append(re[row+1][col])
        re[row+1][col]=None
        row+=1
        i+=1
    while col<n-1 and re[row][col+1]!=None:
        ans.append(re[row][col+1])
        re[row][col+1]=None
        col+=1
        i+=1
    while row>=0 and re[row-1][col]!=None:
        ans.append(re[row-1][col])
        re[row-1][col]=None
        row-=1
        i+=1
    while col>=0 and re[row][col-1]!=None:
        ans.append(re[row][col-1])
        re[row][col-1]=None
        col-=1
        i+=1

flag=True
for i in ans:
    if flag:
        print(i,end="")
        flag=False
    else:
        print(f" {i}",end="")

💟排他方数💞


💝问题描述💝

💝问题分析💝

💝代码实现💝

ans=0
for i in range(100000,1000000):
    if len(str(i))!=len(set(str(i))):
        continue
    if i!=203879 and len(set(str(i))&set(str(i*i)))==0:
        ans=i
        break
print(i)

💟世纪末的星期日💞


🖤问题描述🖤

🖤问题分析🖤

🖤代码实现🖤

import datetime
for i in range(1999,10000,100):
    temp=datetime.datetime(year=i,month=12,day=31)
    if temp.weekday()==6:
        print(i)
        break

💟约瑟夫环💞


🤍问题描述🤍

🤍问题分析🤍

🤍代码实现🤍

n,k=map(int,input().split())
ans=[i for i in range(1,n+1)]

i=0
while len(ans)!=1:
    i+=k
    if i>len(ans):
        i%=len(ans)
    ans.pop(i-1)
    i-=1
print(*ans)

在这里插入图片描述

举报

相关推荐

0 条评论