我正在用单词游戏创建一个单词,我必须将用户输入的单词与可以从设置的字母中选出的单词列表进行比较,然后计算匹配次数。我一直在寻找解决这个问题的方法,但是没有,我一点都不擅长编码,也许它真的很简单,但是我遇到了问题,请帮忙。
该代码适用于我在学校的项目,它是设计一些可以运行的软件的,我想在一个单词类型的游戏中创建一个单词,但是我在搜索时就无法使用互联网的帮助,所以我希望有人能回答这个问题。
import re
MW = "waterfall"
Words = "1. waterfall 2. flatware 3. lateral 4. lawfare 5. faller 6.
falter 7. rafale 8. refall 9. relata 10. taller 11. tellar 12. wafter
13. waller 14. wallet 15. afear 16. after 17. alate 18. aleft 19.
alert
20. altar 21. alter 22. areal 23. artal 24. artel 25. aware 26. farle
27. fatal 28. fatwa 29. feart 30. fella 31. feral 32. fetal 33. fetwa
34. flare 35. frate 36. later 37. lawer 38. ratal 39. ratel 40. reata
41. talar 42. talea 43. taler 44. tawer 45. trawl 46. trefa 47. wafer
48. waler 49. walla 50. water 51. wrate 52. afar 53. alae 54. alar 55.
alef 56. alew 57. alfa 58. area 59. aret 60. arew 61. arle 62. earl
63.
fall 64. fare 65. farl 66. fart 67. fate 68. feal 69. fear 70. feat
71.
fell 72. felt 73. feta 74. flat 75. flaw 76. flea 77. flew 78. frae
79.
frat 80. fret 81. laer 82. lare 83. late 84. leaf 85. leal 86. lear
87.
leat 88. left 89. raft 90. rale 91. rata 92. rate 93. real 94. reft
95.
taal 96. tael 97. tala 98. tale 99. tall 100. tara 101. tare 102. tawa
103. teal 104. tear 105. tela 106. tell 107. terf 108. tref 109. trew
110. twae 111. twal 112. waft 113. wale 114. wall 115. ware 116. wart
117. wate 118. weal 119. wear 120. weft 121. well 122. welt 123. wert
124. weta 125. aal 126. aft 127. ala 128. ale 129. alf 130. all 131.
alt 132. are 133. arf 134. art 135. ate 136. awa 137. awe 138. awl
139.
ear 140. eat 141. eft 142. elf 143. ell 144. elt 145. era 146. erf
147.
eta
148. ewt 149. faa 150. fae 151. far 152. fat 153. faw 154. fer 155.
fet
156. few 157. fra 158. lar 159. lat 160. law 161. lea 162. let 163.
lew
164. rat 165. raw 166. ref 167. ret 168. rew 169. tae 170. tar 171.
taw
172. tea 173. tef 174. tel 175. tew 176. twa 177. wae 178. war 179.
wat
180. wet 181. aa 182. ae 183. al 184. ar 185. at 186. aw 187. ea 188.
ef 189. el 190. er 191. et 192. fa 193. fe 194. la 195. re 196. ta
197.
te 198. we"
y = re.sub(r'[^\w]', ' ', Words)
W = ''.join([i for i in y if not i.isdigit()])
Draw = W.split()
print(MW)
input_string = input("Type all the words you can find in the above
words/word, separated by a comma:\n")
A = input_string.replace(" "," ").split(",")
for A in A:
matchCount = 0
if A in Draw:
matchCount += 1
print (matchCount)
def common_data(Draw, A):
common = 0
for x in Draw:
for y in A:
if x == y:
common += 1
print (x)
当我输入两个单词时,此代码的输出为0,但我希望它是我键入的许多单词都是正确的。
答案 0 :(得分:0)
比较两个列表的一种方法是使用嵌套的for循环或for循环内的for循环。一个循环用于用户输入,另一个循环用于您的列表。
userlist = ["apple", "banana", etc]
yourlist = ["apple", "cat", "banana"]
counter = 0
for userword in userlist:
for yourword in yourlist:
if userword == yourword:
counter = counter + 1
print(counter)
counter是两个列表之间的匹配项。
答案 1 :(得分:0)
问题在于您正在循环内设置matchCount
,因此在检查每个单词之前它将重置为零。只需将其移出循环,即可获得所需的结果。
不要为这个错误感到难过,这是每个人在某个时候都会犯错的简单事情。
除了我的回答,我还提供有关您的代码的建议:
您不应将循环目标的名称用作循环变量。即使循环结束后,使用for A in A:
也会覆盖A
的值。
在Python中,您可以使用三引号("""
或'''
)来创建多行字符串。这使使用长数据字符串要好得多,尽管sakurashinken建议您预先格式化数据可能比将其保留为一个长字符串更好。
不要将变量名的首字母大写-这种处理通常保留给classes,这就是为什么Stack Overflow用与其他名称不同的阴影突出显示这些单词的原因。 (全大写通常保留用于常量。)
您可以使用创建y
的正则表达式来创建W
,而无需执行列表理解的额外步骤:re.sub(r'[\W\d]', ' ', words)
将同时替换非单词字符和数字。然后,您可以在一行中从Draw
创建Words
。