-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path狗屁不通.py
121 lines (107 loc) · 3.08 KB
/
狗屁不通.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import json, random
"""
看到menzi11的作品后有感而发所做,除部分名人名言引用自menzi11的作品外,其余部分均为自制
已经很努力试图让他生成的文本更可读了,但是还是不怎么可读啊啊啊啊啊啊啊
自己又制作了配置文件的加载,这下可自定义的部分更多了
这些中文变量名也是看了原作后才决定使用,pycharm上有个插件可以根据拼音补全中文变量名,用起来真的太顺手了
"""
theme = "狗屁不通"
# 加载语料库
with open("datas.json", "r", encoding="utf-8") as file:
f = file.read()
名人名言 = json.loads(f)["famous"]
说过 = json.loads(f)["said"]
铺垫 = json.loads(f)["end"]
废话 = json.loads(f)["shit"]
主题 = json.loads(f)["theme"]
del f
# 加载配置文件
with open("config.json", "r", encoding="utf-8") as file:
conf = file.read()
名言权重 = json.loads(conf)["famous"]
废话权重 = json.loads(conf)["shit"]
主题权重 = json.loads(conf)["theme"]
长度 = json.loads(conf)["length"]
del conf
# 初始化
random.shuffle(名人名言)
random.shuffle(说过)
random.shuffle(铺垫)
random.shuffle(废话)
random.shuffle(主题)
global a, b, c, d, e
a, b, c, d, e = 0, 0, 0, 0, 0
def 抽取说过():
global a
try:
return 说过[a]
except:
random.shuffle(说过)
a = 0
return 说过[a]
finally:
a += 1
def 抽取铺垫():
global b
try:
return 铺垫[b]
except:
random.shuffle(铺垫)
b = 0
return 铺垫[b]
finally:
b += 1
def 抽取废话():
global c
try:
return 废话[c]
except:
random.shuffle(废话)
c = 0
return 废话[c]
finally:
c += 1
def 抽取名言():
global d
try:
return 名人名言[d].format(said=抽取说过(), end=抽取铺垫())
except:
random.shuffle(名人名言)
d = 0
return 名人名言[d].format(said=抽取说过(), end=抽取铺垫())
finally:
d += 1
def 抽取主题():
global e
try:
return 主题[e].format(theme=theme)
except:
random.shuffle(主题)
e = 0
return 主题[e].format(theme=theme)
finally:
e += 1
def 分支():
名言概率 = 名言权重 / (名言权重 + 废话权重 + 主题权重)
废话概率 = 废话权重 / (名言权重 + 废话权重 + 主题权重)
i = random.random()
if i <= 名言概率:
return 抽取名言() + 抽取主题()
elif 名言概率 <= i <= (名言概率 + 废话概率):
return 抽取废话() + 抽取主题()
else:
return 抽取主题()
if __name__ == '__main__':
theme=input("输入主题\r\n")
while True:
txt = 抽取名言() + 抽取主题()
count = 1
while len(txt) <= 长度:
txt += 分支()
count += 1
if count >= 长度 // 200:
txt += "\r\n "
count = 1
print(txt)
input("按任意键再来一篇")
print("\r\n\r\n")