运用python制作田字格

运用python制作田字格

问题描述:

 

import random

# a 为题目1要求的各种符号组成的列表
a =[n for n in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_']

# b 为由随机数生成的田字格长度,随机数范围自行调节,但最小值为2
b = random.randint(3, 6)*2+1

# 因为是田字格,所以只有三行是全部由字符组成的行,其他行为三个字符加空格凑出的行
# 所以,根据长度 b,得出三个需要全字符的行
# 将所有行的字符由随机数取列表 a 中的字符
# 将所有行的信息存到列表 c 中
c = []
for i in range(b):
    if i == 0 or i == (b-1)/2 or i == b-1:
        c.append(''.join(a[random.randint(0,len(a)-1)] for n in range(b)))
    else:
        c.append((' '*int((b-3)/2)).join(n for n in [a[random.randint(0,len(a)-1)],a[random.randint(0,len(a)-1)],a[random.randint(0,len(a)-1)]]))

# 输出长度和田字格
print(str(b)+'\n'+'\n'.join(c)+'\n')

# 将所有输出的内容合并到一个大字符串中
d = ''.join(n for n in c)

将大字符串的字符生成一个列表,并转换成集合类型,在用集合的关键字:字母和字母切割大字符串后的列表长度-1,得到一个新的词典,即,字母及出现次数
e = {l:len(d.split(l))-1 for l in set([n for n in d])}

# 删除字典中的空格,因为空格是我们用来补充田字格内容的,不在列表 a 中
del e[' ']

# 输出字母及出现次数
print(','.join(w+':'+str(e[w]) for w in e))

n = eval(input("请输入一个奇数:"))
a = "-"
b = "┼"
c = "∣"
d = " "
m = n // 2
for i in range(n):
    if i in [0,m,n-1]:
        print("{0}{1}{0}{1}{0}".format(b,a*(m-1)))
    else:
        print("{0}{1}{0}{1}{0}".format(c,d*2*(m-1))) 

preview

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m