因此,我试图为作业创建测验,但我在每次提问后都编写if和else来查看其是否正确,因此我很累,所以我决定尝试制作一个函数。
问题是if语句不能进入函数内部,因为它需要检查用户答案。 我尝试做的事情看起来像
def result():
print("Correct")
else:
print("Wrong")
我想在if语句之后插入该函数,但是每当我尝试运行它时,我都会收到语法错误,因为在该函数中else之前没有if语句。
有什么办法可以解决这个问题?
答案 0 :(得分:2)
听起来像是一遍又一遍地写着这样的东西:
if ask_question():
print("Correct")
else:
print("Wrong")
您可以确实将这种重复的逻辑移到一个函数中!那是编程的中心前提。但是功能(通常来说)是隔离的工作单元,因为它们是在一个地方定义的,然后在其他地方调用。因此,正如您所发现的,您不能在if
语句的中途定义函数。
但是,您可以做的是将整个if
语句移到您的函数中!考虑:
def print_result(result):
if result:
print("Correct")
else:
print("Wrong")
您可以将True
或False
的值传递到其中以触发不同的路径,例如print_result(True)
和print_result(False)
。
也许您可以找出从这里出发的地方:)
答案 1 :(得分:1)
为什么不只是将两个变量传递给函数?
def result(entry, answer):
if entry == answer:
print('Correct')
else:
print('Wrong')
result(20, 10)
result('bird', 'bird')
result('cat', 'dog')
result(5, 5)
我还将设置一个字典,为您提供一些实际的实用工具:
def result(entry, answer):
if entry == answer:
print('Correct')
scores['correct'] += 1
else:
print('Wrong')
scores['wrong'] += 1
scores['total'] += 1
scores = {'total': 0, 'correct': 0, 'wrong': 0}
result(20, 20)
result('bird', 'bird')
result('cat', 'dog')
percent = round((scores['correct']/scores['total'])*100, 2)
grade = print('Correct: {}'.format(scores['correct']) +
'\nWrong: {}'.format(scores['wrong']) +
'\nPercent: {}'.format(percent))
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 helping.py Correct Correct Wrong Correct: 2 Wrong: 1 Percent: 66.67
答案 2 :(得分:1)
您的意思是这样的吗?
def result(answer, right_answer):
if answer == right_answer: print("Correct")
else: print("Wrong")
>result("goose", "goose")
Correct
>result("cat", "goose")
Wrong
答案 3 :(得分:1)
您可以做的是将条件作为参数传递,如下所示
def result(cond):
if cond:
print('Correct')
else:
print('Wrong')
这样做是什么,它将使您的函数保持独立,即,您无需关心传递的条件,条件求值的条件,也许以后就可以重用该函数。
示例用法包括,仅使用条件调用函数;像-
result(answer == 'answer placehoder')