def __init__(self):
        self.f1 = Feature1()
        self.f2 = Feature2()
        self.f3 = Feature3()
        self.f4 = Feature4()
        self.f5 = Feature5()
        self.f6 = Feature6()
        self.f7 = Feature7()
        self.f8 = Feature8()
        self.f9 = Feature9()
        self.f10 = Feature10()
        self.f11 = Feature11()

        self.features = []

        self.features.append(self.f1)
        self.features.append(self.f2)
        self.features.append(self.f3)
        self.features.append(self.f4)
        self.features.append(self.f5)
        self.features.append(self.f6)
        self.features.append(self.f7)
        self.features.append(self.f8)
        self.features.append(self.f9)
        self.features.append(self.f10)
        self.features.append(self.f11)

        self.calculator = Calculation()
Пример #2
0
def main():
    # instruction for choosing tagging service
    np = raw_input('choose: 1. cross validation test; 2. simple test : ')
    # if is not a int value, return wrong
    try:
        cmd = int(np)
    except ValueError:
        print('invalid cmd')

    # if is CV
    if cmd == 1:
        print('start loading all files: ' + time.strftime("%H: %M: %S"))
        r = ReadIN()
        trains, targets = r.formalizeSentences(r.formalizeDataset(r.readFile()))
        cv = CrossValidation(trains, targets)
        print('start doing cross validation: ' + time.strftime("%H: %M: %S"))
        mean = cv.do_cv()
        print 'mean CV accuracy: ', mean

    # if is simple sentence test
    else:
        sentence = raw_input('input your sentence: ')
        s_array = sentence.split()
        print('start loading all files: ' + time.strftime("%H: %M: %S"))
        r = ReadIN()
        trains, targets = r.formalizeSentences(r.formalizeDataset(r.readFile()))
        print('start counting and calculating: ' + time.strftime("%H: %M: %S"))
        c = Calculation(trains, targets)
        c.calculateProbability()
        print('start running viterbi: ' + time.strftime("%H: %M: %S"))
        t = Test(c.count_i, c.count_w, c.p_ji, c.p_wk, s_array, [])
        t.do_simple_test()
Пример #3
0
    def OnChooseRun(self, event):  # wxGlade: AccTempFrame.<event_handler>
        """
        計算して保存ボタンが押された
        :param event:
        :return:
        """
        if not self.check_input_data():  # 入力されたデータをチェックする
            return
        self.get_column_names()  # 各カラム名をワークシートオブジェクトに通知する

        try:
            self.calculation = Calculation(self.workbook,
                                           self.meteorological_agency,
                                           self)  # 積算温度計算オブジェクトを作る
            self.calculation.run()  # 積算温度計算実行
            self.workbook.save(
                self.text_ctrl_output_filename.GetValue())  # 結果を保存する
            self.text_ctrl_message.SetValue(
                self.text_ctrl_output_filename.GetValue() + "に保存しました")
            self.last_user_input.save_user_input()  # ユーザーが入力したデータを記憶する
        except PermissionError as e:  # 書き込み禁止エラー
            error_text = "指定された'" + self.text_ctrl_output_filename.GetValue(
            ) + "'に、書き込めません。\n他のアプリケーションで開いている可能性があります。"
            self.text_ctrl_message.SetValue(error_text)
            print(e)
            print(type(e))
            return

        except Exception as e:  # 予期しないエラー
            self.error_process(e)
            return
Пример #4
0
    def do_cv(self):
        # use imported sklearn library to generate
        # 10 section of random indexes for all the corpus
        kf = KFold(self.size, n_folds=10)
        # reset accuracy
        accuracy = 0
        round = 0
        # do for all the 10 set of corpus
        for train_index, test_index in kf:
            round += 1
            train_word = []
            train_tag = []
            test_word = []
            test_tag = []
            # formalize them into training set
            for i in train_index:
                train_word.append(self.trains[i])
                train_tag.append(self.targets[i])
            # formalize them into test set
            for i in test_index:
                test_word.append(self.trains[i])
                test_tag.append(self.targets[i])

            # do calculation
            print('start counting and calculating: ' + time.strftime("%H: %M: %S"))
            c = Calculation(train_word, train_tag)
            c.calculateProbability()
            # run test for test sets
            print 'start running viterbi on', len(test_word), 'tests: ' + time.strftime("%H: %M: %S")
            t = Test(c.count_i, c.count_w, c.p_ji, c.p_wk, test_word, test_tag)
            a = t.do_cv_test()
            print round, '/ 10 CV accuracy: ', a
            accuracy += a
        # output the mean accuracy
        return accuracy / 10
Пример #5
0
 def __init__(self, phone=None):
     super(Main, self).__init__()
     self.producer = Practice()  # 生成题目
     self.cal = Calculation()  # 计算结果
     self.school = {"小学": "primary", "初中": "middle", "高中": "high"}
     self.score = 0  # 记录分数
     self.answer = None  # 记录答案
     self.index = 0  # 第几题
     self.practices = None  # 生成的题目
     self.phone = phone
     self.file = File()  # 保存试卷
Пример #6
0
	def newCalculation(self):
		newCalculation = Calculation(self.calculateIEG(), self.getBeamList(), self.calculateNumVert())
		#TODO: Get force vector from user and number of iterations from user..
		newCalculation.setForceVector(self.getForceVector())
		newCalculation.calculateDisplacementVector(200)
		
		print "Stivhetsmatrise:"
		printC(newCalculation.K)
		print "Forskyvningsvektor:"
		print newCalculation.displacementVector
		print "Belastningsvektor:"
		print newCalculation.forceVector
Пример #7
0
	def newCalculation(self):
		newCalculation = Calculation(self.calculateIEG(), self.getBeamList(), self.calculateNumVert())
		#TODO: Get force vector from user adn number of iterations from user..
		newCalculation.setForceVector(self.getForceVector())
		newCalculation.calculateDisplacementVector(200)
		
		print "Stivhetsmatrise:"
		printC(newCalculation.K)
		print "Forskyvningsvektor:"
		print newCalculation.displacementVector
		print "Belastningsvektor:"
		print newCalculation.forceVector
Пример #8
0
beam2.setPhysicalProperties(1, 1, 1)
beamList = [beam1, beam2]
IEG = [[0, 1], [1, 2]]
numVert = 3
actualK = [
	[1, 0, 0, -1, 0, 0, 0, 0, 0],
	[0, 12, -6, 0, -12, -6, 0, 0, 0],
	[0, -6, 4, 0, 6, 2, 0, 0, 0],
	[-1, 0, 0, 2, 0, 0, -1, 0, 0],
	[0, -12, 6, 0, 24, 0, 0, -12, -6],
	[0, -6, 2, 0, 0, 8, 0, 6, 2],
	[0, 0, 0, -1, 0, 0, 1, 0, 0],
	[0, 0, 0, 0, -12, 6, 0, 12, 6],
	[0, 0, 0, 0, -6, 2, 0, 6, 4]
	]
testCalculation = Calculation(IEG, beamList, numVert)

#Tests
def initTest():
	global actualK
	global testCalculation
	return assertEqual(testCalculation.K, actualK)

def setForceVectorTest():
	global testCalculation
	actualForceVector = [0, 1, 0, 0, 1, 0, 0, 1, 0]
	testCalculation.setForceVector(actualForceVector)
	return assertEqual(testCalculation.forceVector, actualForceVector)

def calculateDisplacementVectorTest():
	global testCalculation
Пример #9
0
class AccTempGui(AccTempFrame):
    """
    メインクラス
        wxGladeで作成されたAccTempFrameクラスを継承(wxglade_out.py)し、
        wxglade_out.pyは直接編集しなくても良いようにする
    """
    def __init__(self, *args, **kwargs):
        """
        画面の初期状態を作成する
        :param args:
        :param kwargs:
        """
        super(AccTempGui, self).__init__(*args, **kwargs)
        self.meteorological_agency = MeteorologicalAgency()
        prefecture_list = self.meteorological_agency.get_prefecture_list()
        self.combo_box_prefecture.SetItems(prefecture_list)
        self.workbook = None
        self.calculation = None
        self.last_user_input = LastUserInput(self)
        title = self.GetTitle()
        title += "  Version: " + __version__
        self.SetTitle(title)

    def onInputFileEnter(self, event):  # wxGlade: AccTempFrame.<event_handler>
        """
        入力ファイルが指定された時の処理
        :param event:
        :return:
        """
        filename = self.text_ctrl_input_filename.GetValue()  # 入力ファイル名を取得
        try:
            self.workbook = ATWorkBook(filename)  # EXCELファイルとして読み込む
            self.workbook.target_sheet_all()  # シート名一覧を得るためにすべてのシートを処理対象にする
            sheet_name_list = self.workbook.sheets_name_list  # シート名リストを得る
            self.check_list_box_target_sheet_name.SetItems(
                sheet_name_list)  # シート名選択コントロールにシート名リストをセット

            text = filename + "を読み込みました"
            self.text_ctrl_message.SetValue(text)
            self.last_user_input.load_user_input()  # 前回のユーザー入力を復元する

        except openpyxl.utils.exceptions.InvalidFileException as e:  # 不正なファイルが指定された場合
            error_text = "指定された'" + filename + "'は、EXCELファイルではありません"
            self.text_ctrl_message.SetValue(error_text)
            print(e)
            print(type(e))  # ログ用
            return

        except FileNotFoundError as e:  # 指定されたファイルが存在しない場合
            error_text = "指定された'" + filename + "'は、存在しません"
            self.text_ctrl_message.SetValue(error_text)  # メッセージ表示欄に表示
            print(e)
            print(type(e))  # ログ用
            return

        except Exception as e:  # 予期していないエラー
            self.error_process(e)  # 予期していないエラーの処理
            return

    def OnChooseInputFile(self,
                          event):  # wxGlade: AccTempFrame.<event_handler>
        """
        入力ファイルボタンが押された
        :param event:
        :return:
        """
        style = wx.FD_DEFAULT_STYLE | wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_CHANGE_DIR
        # 読み込み用のファイル選択ダイアログのモード指定
        pathname = self.showFileDialog(style)  # 読み込み用のファイル選択ダイアログを表示
        if pathname is None:
            return  # 何も選択されていない
        self.text_ctrl_input_filename.SetValue(pathname)  # ファイル名を取得
        print("input file is " + pathname)  # ログ用
        self.onInputFileEnter(event)  # 入力ファイルが指定された時の処理

    def OnChooseOutputFile(self,
                           event):  # wxGlade: AccTempFrame.<event_handler>
        """
        出力ファイルボタンが押された
        :param event:
        :return:
        """
        style = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT | wx.FD_CHANGE_DIR
        # 書き込み用のファイル選択ダイアログのモード指定
        pathname = self.showFileDialog(style)  # 書き込み用のファイル選択ダイアログを表示
        if pathname is None:
            return  # 何も指定されていない
        self.text_ctrl_output_filename.SetValue(pathname)  # 指定されたファイル名を表示
        print("output file is " + pathname)  # ログ用

    def onPrefectureSelected(self,
                             event):  # wxGlade: AccTempFrame.<event_handler>
        """
        県が選択された
        :param event:
        :return:
        """
        selected = self.combo_box_prefecture.GetStringSelection()  # 選択された県名を得る
        print("onPrefectureSelected:" + selected)
        self.meteorological_agency.set_prefecture(selected)  # 気象庁オブジェクトに通知
        selection_list = self.meteorological_agency.get_station_list(
        )  # 地点リストを得る
        self.combo_box_station.SetItems(selection_list)  # 地点の選択リストに地点リストを設定
        if self.combo_box_station.GetStringSelection() == "":  # デバッグ時の確認用
            print("Station:指定されてない")
        else:
            print("Station:[[" + self.combo_box_station.GetStringSelection() +
                  "]]")

    def onStationSelected(self,
                          event):  # wxGlade: AccTempFrame.<event_handler>
        """
        地点が選択された
        :param event:
        :return:
        """
        selected = self.combo_box_station.GetStringSelection()  # 選択された地点名を得る
        print("onStationSelected:" + selected)
        self.meteorological_agency.set_station(selected)  # 気象庁オブジェクトに通知

    def onTargetSheetSelected(self,
                              event):  # wxGlade: AccTempFrame.<event_handler>
        """
        対象となるシートリストが選択された
        :param event:
        :return:
        """
        self.set_column_name_list()  # カラム名の選択リストをコンボボックスにセットする

    def onColumnNameSelected(self,
                             event):  # wxGlade: AccTempFrame.<event_handler>
        """
        各カラム名が選択された時の処理

        最初は、選択されるたびに、他のコンボボックスから候補を減らしていこうと思ったのだけど
        それやり始めたら、とても面倒だという気持ちになったので、ここでは何もしない。
        :param event:
        :return:
        """
        selected_combo_box = event.EventObject  # 変更されたコンボボックスを得る
        column_name = selected_combo_box.GetStringSelection()  # 指定された値を得る
        print(column_name)

    def onTitleLineNoChanged(self,
                             event):  # wxGlade: AccTempFrame.<event_handler>
        """
        カラム名の行番号が変更された
        :param event:
        :return:
        """
        self.set_column_name_list()  # カラム名の選択リストをコンボボックスにセットする

    def OnChooseExit(self, event):  # wxGlade: AccTempFrame.<event_handler>
        """
        終了ボタンが押された
        :param event:
        :return:
        """
        self.Destroy()  # アプリから抜ける

    def showFileDialog(self, style):
        """
        ファイル選択ダイアログを表示する
        :param style: wx.FileDialogへのパラメータ https://wxpython.org/Phoenix/docs/html/wx.FileDialog.html
        :return: 指定されたファイルパス名(キャンセル時はNone)
        """
        with wx.FileDialog(self, 'ファイルを選択してください', style=style) as dialog:
            if dialog.ShowModal() == wx.ID_CANCEL:
                return None  # キャンセルボタンが押されたらNoneで返る
            return dialog.GetPath()  # 指定されたファイルパス名を返す

    def set_prefecture_list(self, prefecture_list):
        """
        県名リストを表示する
        :param prefecture_list: 県名リスト
        :return:
        """
        self.combo_box_prefecture.SetItems(prefecture_list)

    def set_column_name_list(self):
        """
        カラム名を指定するコンボボックスのリストを設定
        :return:
        """
        if self.workbook is None:  # 入力ファイルが指定されていない時(無いはず)
            print("入力Fileが指定されていない")
            error_text = "入力ファイルが指定されていません"
            self.text_ctrl_message.SetValue(error_text)
            return
        sheet_name_list = self.check_list_box_target_sheet_name.GetCheckedStrings(
        )
        # 読み込んだファイルのシート一覧を得る
        if len(sheet_name_list) == 0:
            print("No Sheet Name")
            return  # シート名が入力されていない
        line_no = self.spin_ctrl_title_line_no.GetValue()  # タイトル行の行番号を得る
        if line_no <= 0:
            print("No Line No.")
            return  # 行番号が入力されていない
        self.workbook.set_target_sheets_by_name_list(
            sheet_name_list)  # 対象となるシートの一覧を指定する
        print(sheet_name_list)
        print(self.workbook.sheets_list)

        # カラム名の一覧を得る
        column_data_list = self.workbook.get_row_data_string(
            line_no)  # 指定したシート上の指定した行番号の各セルをテキストデータとして得る
        column_data = set()  # 名前の重複を省くためset型変数に格納する
        for row in column_data_list:  # 取得したテキストデータ分
            column_data |= set(row)  # 重複しないように、和集合でセットする
        column_data = list(sorted(column_data))  # あとあとsetだと使いにくいので、ソートシタリストに変換
        print(column_data)

        # それぞれのコンボボックスに設定する
        self.combo_box_start_date.SetItems(column_data)  # 開始日は必須
        column_data.insert(0, "--使用しない--")
        self.combo_box_end_date.SetItems(column_data)  # それ以外は使用しない事が選択可能
        self.combo_box_target_temperature.SetItems(column_data)
        self.combo_box_current_temperature.SetItems(column_data)
        self.combo_box_rate.SetItems(column_data)
        self.combo_box_estimate_date.SetItems(column_data)

        self.combo_box_end_date.SetSelection(0)  # 初期状態として "--使用しない--"を表示
        self.combo_box_target_temperature.SetSelection(0)
        self.combo_box_current_temperature.SetSelection(0)
        self.combo_box_rate.SetSelection(0)
        self.combo_box_estimate_date.SetSelection(0)

    def check_input_data(self):
        """
        入力データをチェック
        :return: True=妥当 False=誤り
        """
        error_text = ''  # 誤りにした要因を格納する変数
        if self.workbook is None:
            error_text += " 入力ファイルが指定されていません\n"
        if self.combo_box_prefecture.GetStringSelection() == "":
            error_text += " 県が指定されていません\n"
        if self.combo_box_station.GetStringSelection() == "":
            error_text += " 地点が指定されていません\n"
        if self.spin_ctrl_title_line_no.GetValue() <= 0:
            error_text += " タイトルの行番号が指定されていません\n"
        if len(self.check_list_box_target_sheet_name.GetCheckedStrings()) == 0:
            error_text += " 対象となるシート名が指定されていません\n"
        if self.combo_box_start_date.GetStringSelection() == '':
            error_text += " 積算温度起算日のカラムが指定されていません\n"
        if self.text_ctrl_output_filename.GetValue() == "":
            error_text += " 出力ファイル名が指定されていません\n"

        if len(error_text) > 0:  # いずれかの誤りがあった
            error_text = "入力内容が正しくありません\n" + error_text
            self.text_ctrl_message.SetValue(error_text)  # エラーメッセージを表示
            return False
        else:  # 入力データは問題ない
            self.text_ctrl_message.SetValue("")  # メッセージ欄をクリア
            print("Start")
            return True

    def get_combo_string(self, combo_box):
        """
        コンボボックスの内容を得る
        :param combo_box: 取得するコンボボックス
        :return: コンボボックス値("--使用しない--"が選択されている時はNone)
        """
        combo_string = combo_box.GetStringSelection()
        if combo_string == "--使用しない--":
            combo_string = None
        return combo_string

    def get_column_names(self):
        """
        ユーザーが入力した、各カラム名を得る
        :return:
        """
        self.workbook.set_target_work_sheet(
            self.check_list_box_target_sheet_name.GetCheckedStrings())
        # 対象とするシートを、ユーザーが指定したシートにする

        line_no = self.spin_ctrl_title_line_no.GetValue()  # タイトル行番号を得る
        start_date = self.combo_box_start_date.GetStringSelection(
        )  # 開始日を取得するカラム名を得る

        end_date = self.get_combo_string(
            self.combo_box_end_date)  # 終了日を取得するカラム名を得る
        target_temperature = self.get_combo_string(
            self.combo_box_target_temperature)  # 目標積算温度を取得するカラム名を得る
        current_temperature = self.get_combo_string(
            self.combo_box_current_temperature)  # 現状積算温度を格納するカラム名を得る
        rate = self.get_combo_string(self.combo_box_rate)  # 到達率を格納するカラム名を得る
        estimate_date = self.get_combo_string(
            self.combo_box_estimate_date)  # 予測終了日を格納するカラム名を得る

        self.workbook.set_column_position_string(
            line_no, start_date, end_date, target_temperature,
            current_temperature, rate, estimate_date)  # それぞれのカラム名を通知する

    def message(self, text):
        """
        メッセージ表示欄にテキストを出力する
        :param text: 出力するテキスト
        :return:
        """
        self.text_ctrl_message.SetValue(text)

    def OnChooseRun(self, event):  # wxGlade: AccTempFrame.<event_handler>
        """
        計算して保存ボタンが押された
        :param event:
        :return:
        """
        if not self.check_input_data():  # 入力されたデータをチェックする
            return
        self.get_column_names()  # 各カラム名をワークシートオブジェクトに通知する

        try:
            self.calculation = Calculation(self.workbook,
                                           self.meteorological_agency,
                                           self)  # 積算温度計算オブジェクトを作る
            self.calculation.run()  # 積算温度計算実行
            self.workbook.save(
                self.text_ctrl_output_filename.GetValue())  # 結果を保存する
            self.text_ctrl_message.SetValue(
                self.text_ctrl_output_filename.GetValue() + "に保存しました")
            self.last_user_input.save_user_input()  # ユーザーが入力したデータを記憶する
        except PermissionError as e:  # 書き込み禁止エラー
            error_text = "指定された'" + self.text_ctrl_output_filename.GetValue(
            ) + "'に、書き込めません。\n他のアプリケーションで開いている可能性があります。"
            self.text_ctrl_message.SetValue(error_text)
            print(e)
            print(type(e))
            return

        except Exception as e:  # 予期しないエラー
            self.error_process(e)
            return

    def error_process(self, e):
        """
        予期しない例外が発生した時の処理
        :param e:
        :return:
        """
        print(e)
        print(type(e))
        print(traceback.format_exc())

        error_text = "Error: type:{0} : {1}\n".format(
            type(e), e) + traceback.format_exc()
        self.text_ctrl_message.SetValue(error_text)
Пример #10
0
 def __init__(self, person, today_date, invest):
     Calculation.__init__(self, person, today_date, invest)
     self._invest = invest
Пример #11
0
from Calculation import Calculation
from SourceData import SourceData
from OpticalElementData import OpticalElementData
from Settings import Settings

sd = SourceData()
sd.source_samplingarea = [400e-9, 720e-9]  #400 to 720 nm
oe = OpticalElementData()
se = Settings()
calc = Calculation(sd, oe, se)
calc.Calculation()
calc.Plot_All_SaveAll()
Пример #12
0
 def setUpClass(cls):
     user = '******'
     cls.lib = Calculation()
     cls.lib.connect(user)
Пример #13
0
class TreeBuilder:
    def __init__(self):
        self.f1 = Feature1()
        self.f2 = Feature2()
        self.f3 = Feature3()
        self.f4 = Feature4()
        self.f5 = Feature5()
        self.f6 = Feature6()
        self.f7 = Feature7()
        self.f8 = Feature8()
        self.f9 = Feature9()
        self.f10 = Feature10()
        self.f11 = Feature11()

        self.features = []

        self.features.append(self.f1)
        self.features.append(self.f2)
        self.features.append(self.f3)
        self.features.append(self.f4)
        self.features.append(self.f5)
        self.features.append(self.f6)
        self.features.append(self.f7)
        self.features.append(self.f8)
        self.features.append(self.f9)
        self.features.append(self.f10)
        self.features.append(self.f11)

        self.calculator = Calculation()

    def induce_tree(self, current_node, subset):
        information_gain_per_feature = []
        entropy_for_set = self.calculator.get_total_entropy(subset)
        index_of_largest_info_gain = 0
        largest_info_gain = 0
        subset_negative_for_feature = []
        subset_positive_for_feature = []

        if entropy_for_set == 0:
            current_node.is_leaf = True
            current_node.candidate_emails = subset
            if len(subset) != 0:
                current_node.classification = subset[0].classification
                return

        for feature in self.features:
            information_gain_per_feature.append(
                self.calculator.get_info_gain_for_feature(
                    subset, feature, entropy_for_set))

        for x in range(0, 11):
            if information_gain_per_feature[x] > largest_info_gain:
                largest_info_gain = information_gain_per_feature[x]
                index_of_largest_info_gain = x

        current_node.feature = self.features[index_of_largest_info_gain]

        new_left_child = TreeNode()
        new_right_child = TreeNode()

        current_node.left_child = new_left_child
        current_node.right_child = new_right_child

        for candidate_email in subset:
            if current_node.feature.check_for_feature(candidate_email) == True:
                subset_positive_for_feature.append(candidate_email)
            else:
                subset_negative_for_feature.append(candidate_email)

        self.induce_tree(current_node.left_child, subset_negative_for_feature)
        self.induce_tree(current_node.right_child, subset_positive_for_feature)
Пример #14
0
import os
from Config import *
from Stats import Model, Estimation, Test
from Calculation import Calculation
from Utils import CoordUtils, PlyUtils

if __name__ == '__main__':
    calc = Calculation()
    cu = CoordUtils()
    est = Estimation(model=Model().get_model(), thu=0.75, thd=0.45)
    for f in os.listdir(DATA_SOURCE_PATH):
        if f.endswith('.png'):
            est.clear_label()
            tag_mat = est.get_shadows_label_tag(filename=f)
            BS = calc.detect_boundary(fname=f,
                                      r_neigh=1.2,
                                      b0=0.2,
                                      xita_crease=45)
            for p3 in BS:
                x3 = p3[0]
                y3 = p3[1]
                (x, y) = cu.trans3d_2d(x3, y3)
                tag_mat[x, y] = 2  # boundary: 2
            # teson = Test(tag_mat)
            # teson.draw()
            # break
Пример #15
0
class Main(object):
    """docstring for Main"""
    def __init__(self, phone=None):
        super(Main, self).__init__()
        self.producer = Practice()  # 生成题目
        self.cal = Calculation()  # 计算结果
        self.school = {"小学": "primary", "初中": "middle", "高中": "high"}
        self.score = 0  # 记录分数
        self.answer = None  # 记录答案
        self.index = 0  # 第几题
        self.practices = None  # 生成的题目
        self.phone = phone
        self.file = File()  # 保存试卷

    # 题目展示
    def display(self):
        self.window = tk.Tk()
        self.window.title("题目展示")

        # 生成题目模块
        self.head = Frame(self.window)
        self.head.pack()

        ttk.Label(self.head, text='Enter a Count:').grid(column=0, row=0)
        # Adding a Textbox Entry widget
        self.count = tk.StringVar()
        count_entered = ttk.Entry(self.head, width=12, textvariable=self.count)
        count_entered.grid(column=0, row=1)  # column 0
        # Adding a Button
        self.action = ttk.Button(self.head,
                                 text="生成试卷",
                                 command=self.creatPractices)
        self.action.grid(column=2, row=1)  # change column to 2

        ttk.Label(self.head, text='Choose a Mold:').grid(column=1, row=0)

        # 模式选择
        self.mold = tk.StringVar()
        mold_chosen = ttk.Combobox(self.head, width=12, textvariable=self.mold)
        mold_chosen['values'] = ("小学", "初中", "高中")
        mold_chosen.grid(column=1, row=1)  # Combobox in column 1
        mold_chosen.current(0)

        # 题目展示模块
        self.middle = Frame(self.window, width=200)
        # self.middle.pack_propagate(0)
        self.middle.pack()

        # self.practice = StringVar()

        # 显示题目
        self.show_label = Label(self.middle,
                                text="这里是题目....",
                                font=("Arial", 15),
                                height=3)
        self.show_label.pack()

        # 显示答案
        self.radio = Frame(self.middle)
        self.radio.pack()

        self.input_answer = tk.StringVar()

        self.rad_A = tk.Radiobutton(self.radio,
                                    text="A",
                                    variable=self.input_answer,
                                    value="A",
                                    command=radCall)
        self.rad_A.grid(column=0, row=0)

        self.rad_B = tk.Radiobutton(self.radio,
                                    text="B",
                                    variable=self.input_answer,
                                    value="B",
                                    command=radCall)
        self.rad_B.grid(column=1, row=0)

        self.rad_C = tk.Radiobutton(self.radio,
                                    text="C",
                                    variable=self.input_answer,
                                    value="C",
                                    command=radCall)
        self.rad_C.grid(column=2, row=0)

        self.rad_D = tk.Radiobutton(self.radio,
                                    text="D",
                                    variable=self.input_answer,
                                    value="D",
                                    command=radCall)
        self.rad_D.grid(column=3, row=0)

        self.submit = Button(self.window,
                             text="提交",
                             width=40,
                             command=self.submitCommand,
                             state=DISABLED)
        self.submit.pack()
        # Start GUI
        self.window.mainloop()

    # 生成试卷按钮的处理函数
    def creatPractices(self):
        count = self.count.get()
        mold = self.mold.get()
        if count == "" or int(count) < 0:
            self.showinfo("生成题目", "请输入正确的题目数量")
            return
        self.practices = self.producer.produce(mold=self.school[mold],
                                               count=int(count))
        self.showinfo("生成题目", "生成题目成功")
        self.action.configure(state=DISABLED)  # 设置生成试卷按钮不可点
        self.submit.configure(state=NORMAL)  # 设置生成提交按钮可点
        # 重新设置
        self.index = 0
        self.score = 0
        # 处理题目显示
        practice = self.practices[0]
        answer = self.cal.expression_to_value(string=self.practices[0])
        self.practices[0] = "1:" + self.practices[0] + " = " + str(answer)
        self.setChoice(practice=practice, answer=answer)

    def submitCommand(self):
        input_answer = self.input_answer.get()
        if input_answer == self.answer:
            self.score = self.score + 1
        if self.index == int(self.count.get()):  # 答题结束,显示分数
            self.show_label.configure(text="score:" + str(self.score) + "/" +
                                      self.count.get(),
                                      font=("Arial", 18),
                                      fg='red')
            self.action.configure(state=NORMAL)  # 设置生成试卷按钮可点
            self.submit.configure(state=DISABLED)  # 设置生成提交按钮不可点
            self.file.write(self.phone, self.practices)  # 保存题目
            return
        practice = self.practices[self.index]
        answer = self.cal.expression_to_value(
            string=self.practices[self.index])
        self.practices[self.index] = str(
            self.index + 1) + ":" + self.practices[self.index] + " = " + str(
                answer)  # 添加答案
        self.setChoice(practice=practice, answer=answer)

    # 设置选项和题目
    def setChoice(self, practice, answer):
        practice = str(self.index + 1) + ": " + practice + "="
        self.index = self.index + 1  # index+1
        self.show_label.configure(text=practice, fg='black')
        num = random.randint(0, 3)
        ans = ['A', 'B', 'C', 'D']
        self.answer = ans[num]  # 设置答案
        answers = [answer * -1, answer + 1, answer - 1]  # 其他的三个答案
        j = 0
        l = [self.rad_A, self.rad_B, self.rad_C, self.rad_D]
        for i in range(0, 4):
            if i == num:
                l[i].configure(text=answer, font=("Arial", 12))
                continue
            l[i].configure(text=answers[j], font=("Arial", 12))
            j = j + 1

    # 提示框
    def showinfo(self, title="", message=""):
        showinfo(title, message)
def player2B():
    global turnB
    global boolA
    global boolB

    global bullsA
    global score60A
    global score180A

    global bullsB
    global score60B
    global score180B

    global countB180

    p2 = Calculation()
    if "player2" in session:
        player2 = session["player2"]

    if "player1" in session:
        player1 = session["player1"]

    cur = mysql.connection.cursor()
    cur.execute("SELECT name FROM player where id=%s", (player2, ))
    nameB = cur.fetchone()
    cur.execute("SELECT score FROM score WHERE id = %s", (player2, ))
    scoreB = cur.fetchone()

    # for fetching all the infos from playerA
    cur.execute("SELECT * FROM scorecard where id=%s", (player1, ))
    infoA = cur.fetchone()

    # for fetching all the infos from playerB
    cur.execute("SELECT * FROM scorecard where id=%s", (player2, ))
    infoB = cur.fetchone()

    if request.method == 'POST':
        score2 = request.form.get("sc2")

        # for maintaining the sequence who will do his first 3 turns
        if turnB < 0:
            turnB = int(
                request.form.get("turnB")
            )  # or we can write here direct 3 instead of this request form
            boolA = False

        # for calculating scores of bulls. 60 and 180 of playerB
        if int(score2) == 50:
            bullsB += 1

        if int(score2) == 60:
            score60B += 1
            countB180 += 1

        if countB180 == 3:
            score180B += 1

        result, boolType = p2.playerB(int(scoreB[0]), int(score2))

        # for maintaining the sequence who will do his first 3 turns
        if turnB > 0 and boolType:
            turnB -= 1
            boolA = False

        if turnB == 0 and boolType:
            boolB = False
            boolA = True
            turnB = -1
            countB180 = 0

        if isinstance(result, str):
            flash(result, "danger")
            return redirect(url_for("score"))

        if result > 0:
            cur.execute("UPDATE score SET score = %s WHERE id = %s",
                        (result, player2))
            mysql.connection.commit()
        else:
            cur.execute("UPDATE score SET score = %s WHERE id = %s",
                        (501, player2))
            mysql.connection.commit()
            cur.execute("UPDATE score SET score = %s WHERE id = %s",
                        (501, player1))
            mysql.connection.commit()

            winRateA = round((int(infoA[2]) / (int(infoA[1]) + 1)) * 100, 2)
            winRateB = round(((int(infoB[2]) + 1) / (int(infoB[1]) + 1)) * 100,
                             2)

            # for updating infos for winning in scorecard of playerA
            cur.execute(
                "UPDATE scorecard SET played = %s, win = %s, winRate = %s, bulls = %s, score60 = %s, score180 = %s WHERE id = %s",
                (int(infoB[1]) + 1, int(infoB[2]) + 1,
                 winRateB, int(infoB[5]) + bullsB, int(infoB[6]) + score60B,
                 int(infoB[7]) + score180B, player2))
            mysql.connection.commit()
            # for updating infos for losing in scorecard of playerA
            cur.execute(
                "UPDATE scorecard SET played = %s, loss = %s, winRate = %s, bulls = %s, score60 = %s, score180 = %s WHERE id = %s",
                (int(infoA[1]) + 1, int(infoA[3]) + 1,
                 winRateA, int(infoA[5]) + bullsA, int(infoA[6]) + score60A,
                 int(infoA[7]) + score180A, player1))
            mysql.connection.commit()

            flash("Congratulations {0}!!!   You win!!!".format(nameB[0]))
            cur.close()
            return redirect(url_for("info"))

        cur.close()
        return redirect(url_for("score"))

    cur.close()
    return redirect(url_for("score"))
def score():
    #global str1
    #global str2
    #global str3

    # to maintain whose recommend call it is
    #bool1 = False
    #bool2 = False

    p1 = Calculation()  # object creation for Calculation class

    if "player1" in session:
        player1 = session["player1"]

    if "player2" in session:
        player2 = session["player2"]

    cur = mysql.connection.cursor()
    cur.execute("SELECT name FROM player WHERE id = %s", (player1, ))
    p1name = cur.fetchone()
    cur.execute("SELECT name FROM player WHERE id = %s", (player2, ))
    p2name = cur.fetchone()
    cur.execute("SELECT score FROM score WHERE id = %s", (player1, ))
    scoreA = cur.fetchone()
    cur.execute("SELECT score FROM score WHERE id = %s", (player2, ))
    scoreB = cur.fetchone()
    cur.close()
    """
    # for recommended turns for Player1(for 3 shots)
    if turnA == -1:
        if ((int(scoreA[0]) <= 180) and (int(scoreA[0]) >= 101)):
            str1, str2, str3 = p1.recommend_func(int(scoreA[0]))
            bool1 = True
    # for recommended turns for Player1(for 2 shots)
    if turnA == 2:
        if ((int(scoreA[0]) <= 120) and (int(scoreA[0]) >= 1)):
            str1, str2, str3 = p1.recommend_func2(int(scoreA[0]))
            bool1 = True

    # for recommended turns for Player1(for single shot)
    if turnA == 1:
        if ((int(scoreA[0]) <= 60) and (int(scoreA[0]) >= 1)):
            str1, str2, str3 = p1.recommend_func3(int(scoreA[0]))
            bool1 = True

    # for recommended turns for Player2(for 3 shots)
    if turnB == -1:
        if ((int(scoreB[0]) <= 180) and (int(scoreB[0]) >= 101)):
            str1, str2, str3 = p1.recommend_func(int(scoreB[0]))
            bool2 = True

    # for recommended turns for Player2(for 2 shots)
    if turnB == 2:
        if ((int(scoreB[0]) <= 120) and (int(scoreB[0]) >= 1)):
            str1, str2, str3 = p1.recommend_func2(int(scoreB[0]))
            bool2 = True

    # for recommended turns for Player2(for single shot)
    if turnB == 1:
        if ((int(scoreB[0]) <= 60) and (int(scoreB[0]) >= 1)):
            str1, str2, str3 = p1.recommend_func3(int(scoreB[0]))
            bool2 = True
    """

    #when use recommend function then use the given parameters in below template (str1=str1, str2=str2, str3=str3, bool1=bool1, bool2=bool2)
    return render_template("score.html",
                           p1name=p1name[0],
                           p2name=p2name[0],
                           scoreA=scoreA[0],
                           scoreB=scoreB[0],
                           boolA=boolA,
                           boolB=boolB)
Пример #18
0
from DecisionTree import DecisionTree
from FileParser import FileParser
from TreeBuilder import TreeBuilder
from TreeNode import TreeNode
from Calculation import Calculation
import random

file_parser = FileParser("headers_clean.dat", "decision_tree.dat")
calculator = Calculation()
all_emails = file_parser.read_file()

phishing_emails = []
nonphishing_emails = []
training_set = []
classification_set = []

coinflip = 0

for email in all_emails:
    email.classification = calculator.classify(email)
    if email.classification == "phishing":
        phishing_emails.append(email)
    else:
        nonphishing_emails.append(email)

for email in nonphishing_emails:
    coinflip = random.randint(0, 1)
    if coinflip == 1:
        training_set.append(email)
    else:
        classification_set.append(email)
Пример #19
0
import random
import sys
from Centroid import Centroid
from FileParser import FileParser
from Calculation import Calculation

# This will be an implementation of a variation on the KMeans clustering algorithm

# 1. Randomly select x amount of centroids
# 2. Select random values for each feature within each centroid
# 3. Further split each cluster (amount of clusters == amount of centroids)

number_of_centroids = sys.argv[0]
calculator = Calculation()
file_parser = FileParser("headers_clean.dat", "cluster_definitions.dat")

candidate_emails = file_parser.read_file()

centroids = []

for x in number_of_centroids:
    centroid = Centroid()
    centroids.append(centroid)

for candidate_email in candidate_emails:
    minimum_distance = 12
    distance_from_centroid = 12
    centroid_to_be_assigned = None

    candidate_email.classification = calculator.classify(candidate_email)
Пример #20
0
f1 = Feature1()
f2 = Feature2()
f3 = Feature3()
f4 = Feature4()
f5 = Feature5()
f6 = Feature6()
f7 = Feature7()
f8 = Feature8()
f9 = Feature9()
f10 = Feature10()
f11 = Feature11()

#Calculate association rules for single features

calculator = Calculation()
calculator.set_support_threshold(support_threshold_single)

frequency_per_feature = []
features = []
features_within_threshold = []

for x in range(0,11):
	if x == 0:
		features.append(f1)
		frequency_per_feature.append(
		calculator.calculate_frequency(f1,candidate_emails))
	if x == 1:
		features.append(f2)
		frequency_per_feature.append(
		calculator.calculate_frequency(f2,candidate_emails))
Пример #21
0
class Ui_Dialog(object):
    def __init__(self):
        self.__mutex = QMutex()
        super().__init__()

    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(806, 440)
        Dialog.setModal(False)
        self.input_angle_num_start = QtWidgets.QLineEdit(Dialog)
        self.input_angle_num_start.setGeometry(QtCore.QRect(120, 90, 113, 20))
        self.input_angle_num_start.setObjectName("input_angle_num_start")
        self.input_rotate_angle_start = QtWidgets.QLineEdit(Dialog)
        self.input_rotate_angle_start.setGeometry(
            QtCore.QRect(120, 130, 113, 20))
        self.input_rotate_angle_start.setObjectName("input_rotate_angle_start")
        self.input_volume_part_start = QtWidgets.QLineEdit(Dialog)
        self.input_volume_part_start.setGeometry(
            QtCore.QRect(120, 170, 113, 20))
        self.input_volume_part_start.setObjectName("input_volume_part_start")
        self.input_degree_start = QtWidgets.QLineEdit(Dialog)
        self.input_degree_start.setGeometry(QtCore.QRect(140, 270, 113, 20))
        self.input_degree_start.setObjectName("input_degree_start")
        self.input_degree_step = QtWidgets.QLineEdit(Dialog)
        self.input_degree_step.setGeometry(QtCore.QRect(140, 350, 113, 20))
        self.input_degree_step.setObjectName("input_degree_step")
        self.input_degree_end = QtWidgets.QLineEdit(Dialog)
        self.input_degree_end.setGeometry(QtCore.QRect(140, 310, 113, 20))
        self.input_degree_end.setObjectName("input_degree_end")
        self.input_cell_height = QtWidgets.QLineEdit(Dialog)
        self.input_cell_height.setGeometry(QtCore.QRect(120, 20, 113, 20))
        self.input_cell_height.setObjectName("input_cell_height")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(10, 20, 71, 20))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(10, 90, 91, 16))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(10, 130, 81, 20))
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(Dialog)
        self.label_4.setGeometry(QtCore.QRect(10, 170, 111, 20))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(Dialog)
        self.label_5.setGeometry(QtCore.QRect(120, 70, 47, 13))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(Dialog)
        self.label_6.setGeometry(QtCore.QRect(270, 70, 47, 13))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(Dialog)
        self.label_7.setGeometry(QtCore.QRect(420, 70, 47, 13))
        self.label_7.setObjectName("label_7")
        self.input_rotate_angle_end = QtWidgets.QLineEdit(Dialog)
        self.input_rotate_angle_end.setGeometry(QtCore.QRect(
            270, 130, 113, 20))
        self.input_rotate_angle_end.setObjectName("input_rotate_angle_end")
        self.input_angle_num_end = QtWidgets.QLineEdit(Dialog)
        self.input_angle_num_end.setGeometry(QtCore.QRect(270, 90, 113, 20))
        self.input_angle_num_end.setObjectName("input_angle_num_end")
        self.input_volume_part_end = QtWidgets.QLineEdit(Dialog)
        self.input_volume_part_end.setGeometry(QtCore.QRect(270, 170, 113, 20))
        self.input_volume_part_end.setObjectName("input_volume_part_end")
        self.label_8 = QtWidgets.QLabel(Dialog)
        self.label_8.setGeometry(QtCore.QRect(20, 350, 111, 20))
        self.label_8.setObjectName("label_8")
        self.label_9 = QtWidgets.QLabel(Dialog)
        self.label_9.setGeometry(QtCore.QRect(20, 270, 91, 16))
        self.label_9.setObjectName("label_9")
        self.label_10 = QtWidgets.QLabel(Dialog)
        self.label_10.setGeometry(QtCore.QRect(20, 310, 101, 20))
        self.label_10.setObjectName("label_10")
        self.input_volume_part_step = QtWidgets.QLineEdit(Dialog)
        self.input_volume_part_step.setGeometry(QtCore.QRect(
            420, 170, 113, 20))
        self.input_volume_part_step.setObjectName("input_volume_part_step")
        self.input_rotate_angle_step = QtWidgets.QLineEdit(Dialog)
        self.input_rotate_angle_step.setGeometry(
            QtCore.QRect(420, 130, 113, 20))
        self.input_rotate_angle_step.setObjectName("input_rotate_angle_step")
        self.input_angle_num_step = QtWidgets.QLineEdit(Dialog)
        self.input_angle_num_step.setGeometry(QtCore.QRect(420, 90, 113, 20))
        self.input_angle_num_step.setObjectName("input_angle_num_step")
        self.button_research = QtWidgets.QPushButton(Dialog)
        self.button_research.setGeometry(QtCore.QRect(270, 20, 261, 23))
        self.button_research.setObjectName("button_research")
        self.button_research.clicked.connect(self.research)
        self.result_list = QtWidgets.QListWidget(Dialog)
        self.result_list.setGeometry(QtCore.QRect(270, 210, 511, 200))
        self.result_list.setObjectName("result_list")
        # self.result_list.clicked.connect(self.tableClick)
        self.button_result = QtWidgets.QPushButton(Dialog)
        self.button_result.setGeometry(QtCore.QRect(20, 380, 233, 30))
        self.button_result.setObjectName("button_retry")
        self.button_result.clicked.connect(self.retry)
        self.label_11 = QtWidgets.QLabel(Dialog)
        self.label_11.setGeometry(QtCore.QRect(620, 170, 51, 20))
        self.label_11.setObjectName("label_11")
        self.label_12 = QtWidgets.QLabel(Dialog)
        self.label_12.setGeometry(QtCore.QRect(620, 130, 51, 20))
        self.label_12.setObjectName("label_12")
        self.input_body_width = QtWidgets.QLineEdit(Dialog)
        self.input_body_width.setGeometry(QtCore.QRect(670, 130, 113, 20))
        self.input_body_width.setObjectName("input_body_width")
        self.input_body_height = QtWidgets.QLineEdit(Dialog)
        self.input_body_height.setGeometry(QtCore.QRect(670, 170, 113, 20))
        self.input_body_height.setObjectName("input_body_height")
        self.input_body_length = QtWidgets.QLineEdit(Dialog)
        self.input_body_length.setGeometry(QtCore.QRect(670, 90, 113, 20))
        self.input_body_length.setObjectName("input_body_length")
        self.label_13 = QtWidgets.QLabel(Dialog)
        self.label_13.setGeometry(QtCore.QRect(620, 90, 51, 16))
        self.label_13.setObjectName("label_13")

        self.label_14 = QtWidgets.QLabel(Dialog)
        self.label_14.setGeometry(QtCore.QRect(590, 20, 71, 20))
        self.label_14.setObjectName("label_14")
        self.input_footing_length = QtWidgets.QLineEdit(Dialog)
        self.input_footing_length.setGeometry(QtCore.QRect(670, 20, 113, 20))
        self.input_footing_length.setObjectName("input_footing_length")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def __get_body_params(self):
        return BodyParameters(int(self.input_body_width.text()),
                              int(self.input_body_length.text()),
                              int(self.input_body_height.text()),
                              int(self.input_footing_length.text()))

    def __get_calculation_context(self):
        return CalculationContext(int(self.input_rotate_angle_start.text()),
                                  int(self.input_rotate_angle_end.text()),
                                  int(self.input_rotate_angle_step.text()),
                                  int(self.input_angle_num_start.text()),
                                  int(self.input_angle_num_end.text()),
                                  int(self.input_angle_num_step.text()),
                                  int(self.input_volume_part_start.text()),
                                  int(self.input_volume_part_end.text()),
                                  int(self.input_volume_part_step.text()),
                                  int(self.input_degree_start.text()),
                                  int(self.input_degree_end.text()),
                                  int(self.input_degree_step.text()))

    def research(self):
        context = self.__get_calculation_context()
        body_params = self.__get_body_params()
        self.calculation = Calculation()
        thread.start_new_thread(self.calculation.calculate,
                                (body_params, context, self.result_list))

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.input_angle_num_start.setText(_translate("Dialog", "3"))
        self.input_rotate_angle_start.setText(_translate("Dialog", "0"))
        self.input_volume_part_start.setText(_translate("Dialog", "10"))
        self.input_degree_start.setText(_translate("Dialog", "3"))
        self.input_degree_step.setText(_translate("Dialog", "1"))
        self.input_degree_end.setText(_translate("Dialog", "5"))
        self.input_cell_height.setText(_translate("Dialog", "30"))
        self.label.setText(_translate("Dialog", "Высота ячейи"))
        self.label_2.setText(_translate("Dialog", "Количество углов"))
        self.label_3.setText(_translate("Dialog", "Угол поворота"))
        self.label_4.setText(_translate("Dialog", "Часть от объёма (%)"))
        self.label_5.setText(_translate("Dialog", "Начало"))
        self.label_6.setText(_translate("Dialog", "Конец"))
        self.label_7.setText(_translate("Dialog", "Шаг"))
        self.input_rotate_angle_end.setText(_translate("Dialog", "0"))
        self.input_angle_num_end.setText(_translate("Dialog", "5"))
        self.input_volume_part_end.setText(_translate("Dialog", "30"))
        self.label_8.setText(_translate("Dialog", "Шаг"))
        self.label_9.setText(_translate("Dialog", "Началья степень"))
        self.label_10.setText(_translate("Dialog", "Конечная степень"))
        self.input_volume_part_step.setText(_translate("Dialog", "5"))
        self.input_rotate_angle_step.setText(_translate("Dialog", "1"))
        self.input_angle_num_step.setText(_translate("Dialog", "1"))
        self.button_research.setText(_translate("Dialog", "Исследовать"))
        self.button_result.setText(_translate("Dialog", "Результат"))
        self.label_11.setText(_translate("Dialog", "Высота"))
        self.label_12.setText(_translate("Dialog", "Ширина"))
        self.input_body_width.setText(_translate("Dialog", "20"))
        self.input_body_height.setText(_translate("Dialog", "30"))
        self.input_body_length.setText(_translate("Dialog", "20"))
        self.label_13.setText(_translate("Dialog", "Длина"))
        self.label_14.setText(_translate("Dialog", "Длина опоры"))

    def tableClick(self):
        item = self.result_list.selectedItems()[0]
        self.button_result.setEnabled(
            self.calculation.is_retry_successful(item.text()))

    def retry(self):
        if len(self.result_list.selectedItems()) == 1:
            print("\n\n\n\n\n\n00000000000000000000000000000000")
            item = self.result_list.selectedItems()[0]
            # self.__mutex.lock()
            print("\n\n\n\n\n\n11111111111111111111111111111111")
            self.calculation.show_result(item)
Пример #22
0
                flag = random.randint(0, 1)
                if flag == 1 and string[j] in self.operation['primary']:
                    # string = string[:j+1] + "(" + string[j+1:]
                    for y in range(j + 1, len(string)):  # 找到下一个基本运算符
                        if string[y] in self.operation['primary']:
                            break

                    n = random.randint(y + 1, len(string))
                    for z in range(n, len(string)):
                        if string[z] in self.operation['primary']:  # 一起加括号
                            l = len(string)
                            string = string[:j + 1] + " (" + string[j + 1:]
                            z = len(string) - l + z  # 重新计算长度
                            string = string[:z] + ") " + string[z:]
                            break

                    break

        return string


if __name__ == '__main__':
    p = Practice()
    cal = Calculation()
    items = p.practice_middle(count=5)
    # items = p.pratice_primary(count=5,type="primary")
    for item in items:
        # print(type(item))
        print(item + " = " + str(cal.expression_to_value(string=item)))
    # p.practice_middle(count=5)
    # p.practice_high(count=5)
Пример #23
0
 def research(self):
     context = self.__get_calculation_context()
     body_params = self.__get_body_params()
     self.calculation = Calculation()
     thread.start_new_thread(self.calculation.calculate,
                             (body_params, context, self.result_list))