大家好,这是我的第一篇文章,我只编写了大约一个星期,我的学校老师也不是最好的解释事情,所以很好:)我正在尝试制作一个程序,将显示一个一个单词的定义然后用户将输入他们认为的单词是什么。如果他们做对了他们将被授予2分,如果他们得到1个字母错误那么他们将被给予1分并且如果超过1个字母是错的那么他们将获得0分。将来,用户必须登录,但我首先要处理此部分。任何想法如何让这个工作?
score = score
definition1 = "the round red or green fruit grown on a tree and used in pies"
word1 = "apple"
def spellingtest ():
print (definition1)
spellinginput = input ("enter spelling")
if spellinginput == word1
print = ("Well done, you have entered spelling correctly") and score = score+100
编辑:当我运行它时,我在此行上收到无效的语法错误
if spellinginput == word1
答案 0 :(得分:0)
如果他们做对了,他们将获得2分,如果他们得到1分 信错了然后他们会得到1分,如果超过1个字母 错了,那么他们将获得0分。
这并不像你想象的那么简单。单个错误拼写就意味着,
apple -> appple
apple -> aple
apple - apqle
您需要将任务卸载到专家difflib.SequenceMatcher.get_opcode
,而不是编写自己的算法来完成所有这些操作。它确定将一个字符串转换为另一个字符串所需的更改,并且您的作业是理解并解析操作码,并确定转换的数量是否超过一个。
<强>实施强>
misspelled = ["aple", "apqle", "appple","ale", "aplpe", "apppple"]
from difflib import SequenceMatcher
word1 = "apple"
def check_spelling(word, mistake):
sm = SequenceMatcher(None, word, mistake)
opcode = sm.get_opcodes()
if len(opcode) > 3:
return False
if len(opcode) == 3:
tag, i1, i2, j1, j2 = opcode[1]
if tag == 'delete':
if i2 - i1 > 1:
return False
else:
if j2 - j1 > 1:
return False
return True
<强>输出强>
for word in misspelled :
print "{} - {} -> {}".format(word1, word, check_spelling(word1, word))
apple - aple -> True
apple - apqle -> True
apple - appple -> True
apple - ale -> False
apple - aplpe -> False
apple - apppple -> False
答案 1 :(得分:0)
好的,如果你想保持简单,
你的第一行:
score = score
不确定你想要在那里实现什么,你应该初始化为零:
score = 0
在if
声明中
if spellinginput == word1
你最后有一个缺少的冒号。
您的功能
def spellingtest ():
应该打印定义,但永远不会被调用。此外,它使用全局变量,不鼓励使用。它应该是
def spellingtest (definition):
print (definition)
然后你需要调用它
spellingtest(definition1)
最后一行
print = ("Well done, you have entered spelling correctly") and score = score+100
如果你想打印那句话,然后增加你应该写的分数
print ("Well done, you have entered spelling correctly")
score = score + 100
否则您正在尝试重新定义print
这是一个保留关键字。 and
用于布尔运算AND,而不是用于创建语句序列。