目录
1.这是一道签到题
print("zhe\nshi\nyi\ndao\nqian\ndao\nti")
2.排列式
这叫基本语法训练????
看来一下很多提交成功的,居然是直接把答案输出就行,震惊一年
先贴一些参考了的经验贴的写法
(37条消息) C语言 · 排列数 · 排列式_weixin_34268610的博客-CSDN博客
(37条消息) 【c++】排列式_t0403的博客-CSDN博客
一.全排列做法
(1)python标准库的全排列函数
要用到的是itertools库里面的permutations函数,可以实现排列功能
import itertools
s=[1,2,3]
ans=list(itertools.permutations(s,3))
print(ans)
(2)解题
因为每个数字只会出现一次,所以先全排列生成所有可能的排列
之后就枚举所有的排列情况,通过观察答案可知:
最左边的都是4位数,中间为两位或者一位,右边为三位或者四位
所以对排列之后的元组进行切片,根据位置分出来三个元组,分别将它们通过getvalue换算成数字
这一题用这种方法也还是感觉有点投机取巧,因为将全排列分成三个元组时,是根据答案已给的情况分的,总感觉有点不好
from itertools import permutations#导入全排列函数
def getvalue(lists):#输入一个列表,例如[1,2,3],返回123,也就是将列表转换成数字
length=len(lists)
ans=0
for i in range(length):
ans = ans*10+lists[i]
return ans
a=[i for i in range(1,10)]
pa=list(permutations(a))#全排列
length=len(pa)
for i in range(length):
z=getvalue(pa[i][:4])
x1=getvalue(pa[i][4:6])
y1=getvalue(pa[i][6:9])
x2=getvalue(pa[i][4:5])
y2=getvalue(pa[i][5:9])
if x1*y1==z:
print(z,"=",x1,"x",y1)
elif x2*y2==z:
print(z,"=",x2,"x",y2)
(3)全排列的自己实现(深度优先搜索)
def dfs(level):
if(level==3):
print(plist)
for i in range(3):
if(vis[i]==False):
vis[i]=True
plist.append(i)
dfs(level+1)
plist.pop()
vis[i]=False
plist=[]
vis=[False for i in range(3)]
dfs(0)
突然发现Python好像没有C那么严格的引用顺序要求
3.小飞机
先贴一个关于format总结的比较全的帖子
(37条消息) Python之format的用法详解_我想我很倔强的博客-CSDN博客_format用法
print("{:^12}".format("**"))
print("{:^12}".format("**"))
print("{}".format(12*"*"))
print("{}".format(12*"*"))
print("{}{}{}".format(4*" ","* *",4*" "))
print("{}{}{}".format(4*" ","* *",4*" "))
format的一些左对齐右对齐的黑科技有时候还是挺好用的
4.乘法表
(1)Python的print是自带换行的,如果不想要它换行,要在print后面加上一个end=""
(2)想要换行时,直接print()即可
(3)注意这里的结果是需要向右对齐的
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={:2d} ".format(j,i,i*j),end="")
print()
5.KiKi学程序设计基础
这里有一个比较烦人的地方在于输入的内容里有引号,正常输出的话会有bug
需要加上r来使其不转义
print(r'printf("Hello world!\n");')
print(r'cout << "Hello world!" << endl;')
6.疫情死亡率
(1)要用float不能用int,否则会导致一些四舍五入
(2)注意百分号的format使用方法
a,b=map(float,input().split())
print("{:.3%}".format(b/a))
7.爱因斯坦的名言
print('"Genius is 1% inspiration and 99% perspiration."')
如果输出的语句里面包含了双引号,那么有以下几种办法
(1)再外面套上一层单引号
(2)在每个双引号前面加上一个右斜杠
(3)使用r,参考第5题
8.开学?
用好取余的操作,要注意如果今天是星期一,推迟了13天,那就是下个星期天,但是如果直接取余就是0了,要特判7的倍数
a,b=map(int,input().split())
ans=a+b
if(ans%7!=0):
print(ans%7)
else:
print(7)
9.helloworld
(1)chr函数可以将数字转换成对应的字符
(2)ord函数可以将字符转换成对应的ASCII码
a="hello world"
for i in a:
print(chr(ord(i)+1),end="")
10.a+b
依然是format的神奇用法
二进制b
十进制d
八进制o
十六进制x
a,b=map(int,input().split())
print("{:x}".format(a+b))
11.反向输出一个四位数
切片,妙哉
a=input()
print(a[::-1])
12.计算三角形的周长和面积
已知三边,求三角形的面积,记住这个公式
a,b,c=map(int,input().split())
print("circumference={:.2f}".format(a+b+c),end=" ")
s=(a+b+c)/2
print("area={:.2f}".format((s*(s-a)*(s-b)*(s-c))**0.5))