抽取的随机数怎么填在田字格里?

 

思路:用列表存储大小写字母、数字和下划线,用random随机产生一个下标对应一个字符然后画出图形。 

import random
a=['0','1','2','3','4','5','6','7','8','9','10','_']
b=[]
for i in range(26):
    i+=65
    r = chr(i)
    a.append(r)
for i in range(26):
    i+=97
    r = chr(i)
    a.append(r)
for i in range(7):
    s = random.randint(0, 63)
    b.append(a[s])
    print(a[s],end=' ')
print()
for i in range(5):
    if i!=2:
        for j in range(7):
            if j==0 or j ==6or j==3:
                s = random.randint(0, 63)
                b.append(a[s])
                print(a[s], end=' ')
            else:
                print(" ", end=' ')
        print()
    else:
        for i in range(7):
            s = random.randint(0, 63)
            b.append(a[s])
            print(a[s], end=' ')
        print()
for i in range(7):
    s = random.randint(0, 63)
    b.append(a[s])
    print(a[s], end=' ')
print()
dic={}
for i in b:
    dic[i]=b.count(i)
print(dic)


https://ask.csdn.net/questions/7454693https://ask.csdn.net/questions/7451087,你的同学已经有答案了,还望采纳

# 导入随机函数包
import random
# 定义字符集
chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
# 获取随机长度,长度与田字格公式为((l*4+3)+l*2)*3,推到为 (l*6+3)*3,即 l*18+9
# l = random.randint(1,20)
l = 10
# 根据公式计算出需要使用到的字符数量,并获取该数量的随机字符,生成一个字符串
arr = ''.join([random.choice(chars) for n in range(l*18+9)])
# 取得完整字符行所在行f,以及边长b
f,b = [0,l+1,l*2+2],l*4+3
# 按长度输出字符串组成田字格
for i in range(l*2+3):
    # 如果是完整字符的行
    if i in f:
        # 得到是第几个完整行
        t = f.index(i)
        # 根据所在完整行位置,长度,边长,得到输出字符的切片并输出
        print(arr[t*l*3+t*b:t*l*3+t*b+b])
    else:
        # 获取非完整行所在行,并计算字符串切片开始位置
        t = (i-1)*3+(b if i<f[1] else b*2-3)
        # 根据切片开始位置获取字符串切片,转列表后,用长度数量的空格补足,并输出
        print((' '*l*2).join(list(arr[t:t+3])))
# 将大字符串的字符生成一个列表,并转换成集合类型,在用集合的关键字:字母和字母切割大字符串后的列表长度-1,得到一个新的词典,即,字母及出现次数
e = {l:len(arr.split(l))-1 for l in set([n for n in arr])}
# 输出字符统计结果
print('\n'.join(w+':'+str(e[w]) for w in e))

海浪兄画的田字格比我的方,从新调整一个出来

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))

 

import random
lst=list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_')

width = 10
s = "".join([random.choice(lst) for i in range(width*4+3)])+"\n"
for i in range(2):
    for j in range(width):
        s += random.choice(lst)+ " "*(width*2) +random.choice(lst)+ " "*(width*2) +random.choice(lst)+"\n"
    s += "".join([random.choice(lst) for i in range(width*4+3)])+"\n"
print(s)

dic = {}
for v in s:
    if v in lst:
        dic[v] = dic.get(v,0)+1
for k,v in dic.items():
    print(f'{k}:{v}')