写在前面
代码总是学了写,写了忘,这个抗遗忘的工作做起也恼火,要是人人都像AI一样学了就不会忘就好了,话不多说,春宵苦短,少年前进吧~
Python Round③
左对齐输入str,用@填充空白
n = eval(input("请输入正整数:"))
print("{:@>30,}".format(n))
与之前Round①不同的是里面输入的数字要用 “ , ” 分割,在限定范围后加个逗号即可。
计算两列表的值
a = [11,3,8]
b = eval(input("请输入一个列表:"))
s = 0
for i in range(3):
s += a[i] * b[i]
print(s)
print(s)要放在循环外,不然会打印出每一个结果。
指定随机数种子输出
import random
random.seed(255)
for i in range(5):
print(random.randint(1,50), end=" ")
五角大楼
import turtle
turtle.pensize(2)
d = 72
for i in range(5):
turtle.seth(d)
d += 72
turtle.fd(200)
turtle.pensize()设置笔型号
注意turtle.seth()是转动的相对角度,因此应为五边形的补角(180-108)为75度
统计字符串频次并输出(和Round①一样的套路)
fo = open("PY202.txt","w",encoding = "utf-8")
names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
txt = names.split(" ")
d = {}
for i in txt:
d[i] = d.get(i,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
fo.write("{}:{}\n".format(k[0],k[1]))
fo.close()
综合应用
论语文本清洗
fi = open("论语.txt","r")
fo = open("论语—清洗.txt","w",encoding = "utf-8")
flag = False #设置标记
for i in fi:
if "【" in fi:
flag = False #过滤掉其他【】中不需要的信息
if "【原文】" in fi:
flag = True
continue
if flag == True:
fo.write(fi.lstrip())
fi.close()
fo.close()
- 和之前的一样设置了个标记
- lstrip()去掉了左边的空字符
进一步提纯
fi = open("论语-原文.txt", "r")
fo = open("论语-提纯原文.txt", "w+",encoding="utf-8")
for line in fi:
for i in range(1,23):
line=line.replace("({0})".format(i),"")
fo.write(line)
fi.close()
fo.close()
- “r”类型文件后面不能加“encoding = “utf-8” ”
- 因为()内为1-22的数字,故要写(1,23)
- 最后记得写入文件,且缩进要好好研究观察!!
总结
flag = False这个已经遇到了几次,但是每次都不很懂,要注意总结这个问题。整体上来说Round③写起来要比之前好一点了,加油!