master
/ widget_help.py

widget_help.py @5690004 raw · history · blame

import ipywidgets as widgets
import sys
from IPython.display import display
from IPython.display import clear_output

out = widgets.Output()


def create_multipleChoice_widget(description, options, correct_answer):
    if correct_answer not in options:
        options.append(correct_answer)
    
    correct_answer_index = options.index(correct_answer)
    
    radio_options = [(words, i) for i, words in enumerate(options)]
    alternativ = widgets.RadioButtons(
        options = radio_options,
        description = '',
        disabled = False
        
    )
    
    description_out = widgets.Output()

    with description_out:
        print(description)
        
    feedback_out = widgets.Output()

    def check_selection(b):
        a = int(alternativ.value)
        if a==correct_answer_index:
            s = '\x1b[6;30;42m' + "回答正确." + '\x1b[0m' +"\n" #green color
        else:
            s = '\x1b[5;30;41m' + "回答错误. " + '\x1b[0m' +"\n" #red color
        with feedback_out:
            clear_output()
            print(s)
        return
    
    check = widgets.Button(description="提交")
    check.on_click(check_selection)
    
    
    return widgets.VBox([description_out, alternativ, check, feedback_out])

def question1():
    return create_multipleChoice_widget(
        "在观察了这三个表达的图像后,你认为假设函数 ℎ 在线性回归模型中是什么样的呢?",
         ["𝑦=𝑏𝑥+𝑐", "𝑦=𝑏𝑥", "𝑦=𝑎𝑥^2+𝑏𝑥+𝑐", ],
         "𝑦=𝑏𝑥+𝑐")

def question2():
    return create_multipleChoice_widget(
        "",
         ["0, 0", "0, 1", "1, 0", "1, 1"],
         "1, 0")