from os import name
from flask import Flask, render_template, url_for, request, session, redirect
import pandas as pd
import csv
import numpy as np
from datetime import date, datetime
import datetime
from Recom import get_correlation_coefficents, rank_items, tannisyutoku, Similarity, Informative, Concentration, Credibility, kousinn,\
                  video_kousinn, Credibility_video, Video_Concentration, kousinn01, video_kousinn00, tannisyutoku0A, tannisyutoku0B,\
                  tannisyutoku0C, tannisyutoku0D, tannisyutoku1A, tannisyutoku1B, tannisyutoku1C, tannisyutoku2A,tannisyutoku2B,\
                  tannisyutoku3A, tannisyutoku4A, tannisyutoku4B, tannisyutoku5A, tannisyutoku5B, tannisyutoku5C, tannisyutoku6A,\
                  tannisyutoku6B, tannisyutoku6C, tannisyutoku6D, tannisyutoku6E, tannisyutoku6F
from hashlib import sha256
from model.models import Student
from model.database import db_session
import key

app = Flask(__name__)
app.secret_key = key.SECRET_KEY

#最初のログイン画面（スタート画面）（最初にアクセスしたときに表示させる）
@app.route("/")
@app.route("/start")
def start():
   status = request.args.get("status")
   return render_template("start.html",status=status)

#ログインするときに行う部分（データベースに登録されているかどうかの確認）
# 登録してあれば，推薦．　してないと，新規登録をしてもらうようにする．
@app.route("/login", methods=["POST"])
def login():
   user_name = request.form["user_name"]
   user = Student.query.filter_by(user_name=user_name).first()
   if user:
      password = request.form["password"]
      hashed_password = sha256((user_name + password + key.SALT).encode("utf-8")).hexdigest()
      if user.hashed_password == hashed_password:
         session["user_name"] = user_name
         # topのところに app.py の index 部分をいれる
         return redirect(url_for("top"))
      else:
         return redirect(url_for("start",status="wrong_password"))
   else:
      return redirect(url_for("start",status="user_notfound"))

#新規登録のところ（GET）
@app.route("/newcomer")
def newcomer():
   status = request.args.get("status")
   return render_template("newcomer.html",status=status)

# 学籍番号，パスワードが入力されていないと 入力してください を返すようにする（POST）
@app.route("/registar",methods=["POST","GET"])
def registar():
   # print(user_name)
   if len(request.form["user_name"]) == 0:
      return redirect(url_for("newcomer", status = "no_text"))
   else:
      user_name = request.form.get("user_name")
      user = Student.query.filter_by(user_name=user_name).first()
      if user:
         # ユーザが登録されていたら，index部分に飛ばすようにするかも
         return redirect(url_for("newcomer",status="exist_user"))
      else:
         if len(request.form["password"]) == 0:
            return redirect(url_for("newcomer", status="no_text"))
         else:   
            password = request.form["password"]
            hashed_password = sha256((user_name + password + key.SALT).encode("utf-8")).hexdigest()
            user = Student(user_name, hashed_password)
            try:
               db_session.add(user)
               db_session.commit()
            except:
               db_session.rollback()
            session["user_name"] = user_name
            return redirect(url_for("get"))

# ログアウト用
@app.route("/logout")
def logout():
   session.pop("user_name", None)
   return redirect(url_for("start",status="logout"))
      

# 成績入力させるところ (GET)
@app.route('/get',methods=['GET'])
def get():
   if "user_name" in session:
      name = session["user_name"]
      return render_template('grade_entry.html', title = '成績チェック(GET)', name = name, message='成績入力部分')
   else:
      return redirect(url_for("start", status = "logout"))

# 成績，希望業種を入力（POST）
@app.route('/touroku', methods=['POST'])
def touroku():
   #リストを初期化することで，csvに追記する際に新しくする
   name = session["user_name"]
   usr_grade=[]
   
   edu1 = request.form.get('edu1'); edu2 = request.form.get('edu2'); eco1 = request.form.get('eco1'); soc1 = request.form.get('soc1'); law1 = request.form.get('law1'); sci_tech = request.form.get('sci_tech')
   
   env1 = request.form.get('env1'); japanese = request.form.get('japanese');compare1 = request.form.get('compare1'); health_sci_exe = request.form.get('health_sci_exe'); psycho1 = request.form.get('psycho1'); health_sci1 = request.form.get('health_sci1')
   
   math1 = request.form.get('math1'); math2 = request.form.get('math2'); psy1 = request.form.get('psy1'); psy2 = request.form.get('psy2'); chemi1 = request.form.get('chemi1'); chemi2 = request.form.get('chemi2')
   
   biology = request.form.get('biology'); phy1_exe = request.form.get('phy1_exe'); math_exe = request.form.get('math_exe'); chemi_exp = request.form.get('chemi_exp'); phy_exp = request.form.get('phy_exp'); ba_eng1 = request.form.get('ba_eng1')
   
   ba_eng2 = request.form.get('ba_eng2'); ba_eng3 = request.form.get('ba_eng3'); ba_eng4 = request.form.get('ba_eng4'); german1 = request.form.get('german1'); german2 = request.form.get('german2'); china1 = request.form.get('china1')
   
   china2 = request.form.get('china2'); career = request.form.get('career'); algebra1 = request.form.get('algebra1') ;algebra2 = request.form.get('algebra2'); info_math1 = request.form.get('info_math1'); info_math2 = request.form.get('info_math2')
   
   pro_stat = request.form.get('pro_stat'); complex_ana = request.form.get('complex_ana'); intro_info_sys = request.form.get('intro_info_sys'); com_base = request.form.get('com_base'); programming1 = request.form.get('programming1'); programming1_exe = request.form.get('programming1_exe')

   algo_data = request.form.get('algo_data'); electric_circuit = request.form.get('electric_circuit'); eco2 = request.form.get('eco2') ;soc2 = request.form.get('soc2'); law2 = request.form.get('law2'); env2 = request.form.get('env2')

   comm_logic = request.form.get('comm_logic'); litera1 = request.form.get('litera1'); compare2 = request.form.get('compare2'); psycho2 = request.form.get('psycho2'); ethics = request.form.get('ethics'); philo = request.form.get('philo')

   compre_eng1 = request.form.get('compre_eng1'); compre_eng2 = request.form.get('compre_eng2'); compre_eng3 = request.form.get('compre_eng3'); compre_eng4 = request.form.get('compre_eng4'); topic_semi1 = request.form.get('topic_semi1'); topic_semi2 = request.form.get('topic_semi2')

   diff_equ = request.form.get('diff_equ'); fourier = request.form.get('fourier'); info_theory = request.form.get('info_theory'); DSP = request.form.get('DSP'); elec_circuit = request.form.get('elec_circuit'); logic_circuit_base = request.form.get('logic_circuit_base')

   info_sys_exp1 = request.form.get('info_sys_exp1'); programming2 = request.form.get('programming2'); programming2_exe = request.form.get('programming2_exe'); programming3 = request.form.get('programming3'); programming3_exe = request.form.get('programming3_exe'); com_archi = request.form.get('com_archi')

   compiler = request.form.get('compiler'); com_net = request.form.get('com_net'); iot_sys = request.form.get('iot_sys'); commu_method = request.form.get('commu_method'); data_data = request.form.get('data_data'); image_processing = request.form.get('image_processing')

   const_japan = request.form.get('const_japan'); tech_soc = request.form.get('tech_soc'); toyama_japan = request.form.get('toyama_japan'); litera2 = request.form.get('litera2'); modern_his = request.form.get('modern_his'); inter_rela = request.form.get('inter_rela')

   comm_soc = request.form.get('comm_soc'); health_sci2 = request.form.get('health_sci2'); spe_eng1 = request.form.get('spe_eng1'); spe_eng2 = request.form.get('spe_eng2'); spe_eng3 = request.form.get('spe_eng3'); spe_eng4 = request.form.get('spe_eng4')

   presen = request.form.get('presen'); engi_ethic = request.form.get('engi_ethic'); business_manage = request.form.get('business_manage'); interA = request.form.get('interA'); interB = request.form.get('interB'); tech_eng = request.form.get('tech_eng')

   spe_info_sys = request.form.get('spe_info_sys'); info_sys_exp2 = request.form.get('info_sys_exp2'); grad_research1 = request.form.get('grad_research1'); iot_prog = request.form.get('iot_prog'); logic_circuit_app = request.form.get('logic_circuit_app'); embedded = request.form.get('embedded')

   prog_lan = request.form.get('prog_lan'); queueing = request.form.get('queueing'); soft_engi = request.form.get('soft_engi'); opera_sys = request.form.get('opera_sys'); hum_inter = request.form.get('hum_inter'); bioinfo = request.form.get('bioinfo')

   machine_learning = request.form.get('machine_learning'); nume_ana = request.form.get('nume_ana'); ope_sys = request.form.get('ope_sys'); info_global = request.form.get('info_global'); grad_research2 = request.form.get('grad_research2')

   # 就職希望の部分
   hope = request.form.get('industry_hope')

   usr_grade.extend([name, 
                     edu1, edu2, eco1, soc1, law1, sci_tech,
                     env1, japanese, compare1, health_sci_exe, psycho1, health_sci1,
                     math1, math2, psy1, psy2, chemi1, chemi2,
                     biology, phy1_exe, math_exe, chemi_exp, phy_exp, ba_eng1,
                     ba_eng2, ba_eng3, ba_eng4, german1, german2, china1,
                     china2, career, algebra1, algebra2, info_math1, info_math2,
                     pro_stat, complex_ana, intro_info_sys, com_base, programming1, programming1_exe,
                     algo_data, electric_circuit, eco2, soc2, law2, env2,
                     comm_logic, litera1, compare2, psycho2, ethics, philo,
                     compre_eng1, compre_eng2, compre_eng3, compre_eng4, topic_semi1, topic_semi2,
                     diff_equ, fourier, info_theory, DSP, elec_circuit, logic_circuit_base,
                     info_sys_exp1, programming2, programming2_exe, programming3, programming3_exe, com_archi,
                     compiler, com_net, iot_sys, commu_method, data_data, image_processing,
                     const_japan, tech_soc, toyama_japan, litera2, modern_his, inter_rela,
                     comm_soc, health_sci2, spe_eng1, spe_eng2, spe_eng3, spe_eng4,
                     presen, engi_ethic, business_manage, interA, interB, tech_eng,
                     spe_info_sys, info_sys_exp2, grad_research1, iot_prog, logic_circuit_app, embedded,
                     prog_lan, queueing, soft_engi, opera_sys, hum_inter, bioinfo,
                     machine_learning, nume_ana, ope_sys, info_global, grad_research2, hope])


   with open('data.csv','a',encoding='cp932',newline='\n') as file:
        writer = csv.writer(file)
        writer.writerow(usr_grade)

   return render_template('grade_entry.html', title ='成績チェック(POST)', name = name, message ='入力ありがとう')

@app.route('/index')
def index():
   if "user_name" in session:
      # 入力された学籍番号を name に入れておく
      name = session["user_name"]
      session['user'] = name

      # 業種ありのものを，業種部分削って結合する（フラグ部分はまだ実装していない）
      nondel_data2017 = pd.read_csv("kai_2017_04.csv", encoding="cp932")
      nondel_data2017 = nondel_data2017.drop(nondel_data2017.columns[-1], axis=1)
      nondel_data2018 = pd.read_csv("kai_2018_04.csv", encoding="cp932").drop([0, 1, 2])#dropで必要のない行を削除する
      nondel_data2018 = nondel_data2018.drop(nondel_data2018.columns[-1], axis=1)
      nondel_data2019 = pd.read_csv("kai_2019_04.csv", encoding="cp932").drop([0, 1, 2])#dropで必要のない行を削除する
      nondel_data2019 = nondel_data2019.drop(nondel_data2019.columns[-1], axis=1)
      # 3年分合わせたデータ（上から古い学籍番号の人）
      nondel_data_all = pd.concat([nondel_data2017, nondel_data2018, nondel_data2019], axis=0, sort = False).drop('学籍番号', axis=1)

      # 必選別，単位数，配当学年を削ったやつ
      data2017 = pd.read_csv('kai_2017_04.csv', encoding='cp932').drop([0, 1, 2])
      data2018 = pd.read_csv('kai_2018_04.csv', encoding='cp932').drop([0, 1, 2])
      data2019 = pd.read_csv('kai_2019_04.csv', encoding='cp932').drop([0, 1, 2])

      # 過去の学生のデータ(今回は2017年と2018年の2年分)，2018と2017年のデータを縦に連結する
      data_kako = pd.concat([data2017, data2018, data2019], axis=0, sort = False)

      # ユーザが成績入力した際に出力される csvファイル
      user_data = pd.read_csv("data.csv",encoding="cp932", header=None)

      # 入力された学籍番号と成績・希望業種データを抽出
      data_ima = user_data[user_data[0].isin([name])]
      data_ima.columns = data_kako.columns

      # 入力したユーザの希望業種の数値を抽出する
      industry = data_ima.iat[-1,-1]

      # ユーザの希望業種に応じて，それと同じ学生のデータを使用する
      if industry == 1:
         data_kako = data_kako[data_kako.loc[:,"業種"]==1]
      elif industry == 2:
         data_kako = data_kako[data_kako.loc[:,"業種"]==2]
      elif industry == 3:
         data_kako = data_kako[data_kako.loc[:,"業種"]==3]
      elif industry == 4:
         data_kako = data_kako[data_kako.loc[:,"業種"]==4]
      elif industry == 5:
         data_kako = data_kako[data_kako.loc[:,"業種"]==5]
      elif industry == 6:
         data_kako = data_kako[data_kako.loc[:,"業種"]==6]
      elif industry == 7:
         data_kako = data_kako[data_kako.loc[:,"業種"]==7]
      elif industry == 8:
         data_kako = data_kako[data_kako.loc[:,"業種"]==8]
      elif industry == 0:
         pass   
      
      # 過去の学生データとユーザのデータを結合（ユーザデータは一番上）
      data_gutya = pd.concat([data_ima, data_kako], axis=0, sort=False)  # 学籍番号付きのデータ

      # 列名指定で 業種 列を削除（最終列）
      # data_gutya.drop("業種", axis=1)

      # 名前指定じゃなくて最終列指定で削除
      data_gutya = data_gutya.drop(data_gutya.columns[-1],axis=1)

      # 学籍番号とってNaNを-1埋めしたデータ （履修していない科目に -1 を入れる）
      data_all = data_gutya.reset_index(drop=True).drop('学籍番号', axis=1).fillna(-1)  

      # いったんnumpyに（data_allの中身を）
      data_all_np = data_all.values

      #上のやつのコピーを data_all_calc に入れる
      data_all_calc = data_all_np.copy()

      #data_all_calcの-1以外のものを全て0に書き換える（履修した科目のものを 0 にして，履修していないものに -1 をいれている状態）
      data_all_calc[data_all_calc != -1] = 0

      # np.abs(data_all_cals)で data_all_calcの絶対値をとる．（ -1 → 1 になる →　履修していないものに 1 が立つようになる）
      # columnsには授業名を入れる
      # それらをデータフレームにして，data_train にいれる
      data_train = pd.DataFrame(np.abs(data_all_calc), columns=data_all.columns)

      #対象ユーザの部分を取得する（data_train_user にいれる）
      data_train_user = data_train[:1]

      # 科目数分繰り返す
      # 対象ユーザーの落単科目（data_all.iloc[0,i] == 0）に対して，0 を 1 に変える
      #　　→未履修科目と落単科目に対して 1 を立て，履修済み科目に対しては 0 を立てる
      for i in range(len(data_all.columns)):
         if data_all.iloc[0, i] == 0:
            data_train_user = data_train_user.replace({f'{data_train_user.columns[i]}': {0: 1}})
      
      # 区分のリスト
      df4 = ["0A", "0A", "0B", "0B", "0B", "0B", "0B", "0C", "0C", "0D", "0D", "0D", "1A", "1A", "1A", "1A", "1B", "1B", "1B", "1A", "1C",
            "1C", "1A", "2A", "2A", "2A", "2A", "2B", "2B", "2B", "2B", "3A", "4A", "4A", "4A", "4A", "4A", "4A", "4B", "5A", "5A", "5A",
            "5B", "5C", "0B", "0B", "0B", "0B", "0C", "0C", "0C", "0D", "0D", "0D", "2A", "2A", "2A", "2A", "3A", "3A", "4A", "4A", "5B",
            "5B", "5C", "5C", "5D", "6A", "6A", "6A", "6A", "6B", "6B", "6C", "6C", "6C", "6D", "6E", "0B", "0B", "0B", "0C", "0C", "0C",
            "0D", "0D", "2A", "2A", "2A", "2A", "3A", "3A", "3A", "3A", "3A", "3A", "5D", "5D", "5D", "6A", "6B", "6B", "6B", "6C", "6D",
            "6D", "6E", "6E", "6F", "6F", "6F", "6F", "5D"]

      # zero：総合科目
      zero = 19; zeroA = 2; zeroB = 2; zeroC = 2; zeroD = 2
      # iti：基礎科目
      iti = 13; itiA = 10; itiB = 2; itiC = 1
      # ni：外国語科目
      ni = 12; niA = 10; niB = 2
      # kyouyou：教養全体 ＝ 44
      kyouyou = zero + iti + ni
      # sann：キャリア形成科目
      sannA = 7
      # senmon：卒業研究２を除いた専門科目
      senmon = 71
      # yonn：専門基礎科目
      yonnA = 10; yonnB = 2
      # go：専門共通科目
      goA = 5; goB = 4; goC = 4; goD = 8
      # roku：専門科目
      rokuA = 5; rokuB = 6; rokuC = 4; rokuD = 2; rokuE = 2; rokuF = 4
      # sotuken：卒業研究２
      sotuken = 8
      # senmon_all：専門全部で必要な単位数 = 79
      senmon_all =senmon + sotuken 
      # all_all：全体の単位数
      all_all = 140

      zero_sum = 0; zeroA_sum = 0; zeroB_sum = 0 ; zeroC_sum = 0; zeroD_sum = 0
      iti_sum = 0; itiA_sum = 0; itiB_sum = 0; itiC_sum = 0
      niA_sum = 0; niB_sum = 0
      sannA_sum = 0
      yonnA_sum = 0; yonnB_sum = 0
      goA_sum = 0; goB_sum = 0; goC_sum = 0; goD_sum = 0
      rokuA_sum = 0; rokuB_sum = 0; rokuC_sum = 0; rokuD_sum = 0; rokuE_sum = 0; rokuF_sum = 0

      #現在の単位数を確認
      for i in range(len(data_train_user.columns)):
      # 履修済みor推薦済みの時（data_train_user.iloc[0,i] == 0）
      # nodel_data_all.iloc[2,i] は取得できる単位数が入っている
         if data_train_user.iloc[0,i] == 0:
            if df4[i] == '0A':
                  zeroA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '0B':
                  zeroB_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '0C':
                  zeroC_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '0D':
                  zeroD_sum += nondel_data_all.iloc[2,i] 
            elif df4[i] == '1A':
                  itiA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '1B':
                  itiB_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '1C':
                  itiC_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '2A':
                  niA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '2B':
                  niB_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '3A':
                  sannA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '4A':
                  yonnA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '4B':
                  yonnB_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '5A':
                  goA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '5B':
                  goB_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '5C':
                  goC_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '5D':
                  goD_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '6A':
                  rokuA_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '6B':
                  rokuB_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '6C':
                  rokuC_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '6D':
                  rokuD_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '6E':
                  rokuE_sum += nondel_data_all.iloc[2,i]
            elif df4[i] == '6F':
                  rokuF_sum += nondel_data_all.iloc[2,i]
            else:
                  pass
         else:
            pass

      all_sum = zeroA_sum + zeroB_sum + zeroC_sum +zeroD_sum + itiA_sum +itiB_sum + itiC_sum + niA_sum + niB_sum +\
                  sannA_sum + yonnA_sum + yonnB_sum + goA_sum + goB_sum + goC_sum + rokuA_sum + rokuB_sum + rokuC_sum +\
                     rokuD_sum + rokuE_sum + rokuF_sum
      
      # 現在の取得単位数を now_all_sum にコピーする
      now_all_sum = all_sum.copy()

      # 0番目のユーザ(対象ユーザ)
      target_user_index = 0 

      # Person関数で指定した学生とすべての学生の類似度を算出する
      # 学籍番号とってNaNを-1埋めしたデータ （履修していない科目に -1 を入れる）と target_user_index を使用する
      similarities = get_correlation_coefficents(data_all_np, target_user_index)

      # 予測評価値をもとにランキング(予測評価値も求める)
      rank = rank_items(data_all_np, similarities, target_user_index)

      # rank（予測評価値をもとにランキングしたもの）をデータフレームにする（index と predict を columns にする）
      rank_df = pd.DataFrame(rank,columns=['index','predict'])

      # rank_df の index部分を科目名に変化させる
      for i in range(len(rank_df.index)):
         rank_df = rank_df.replace({'index':{rank_df.iloc[i,0]:data_all.columns[rank_df.iloc[i,0]]}})

      mirisyuu_list = []#まだ履修していない科目リスト(予測評価順)
      for i in range(len(rank)):
         mirisyuu_list.append(data_all.columns[rank[i][0]])
      # print(mirisyuu_list)
         
      suisennkamoku = []#情報推薦する科目一覧
      #とりあえず必修科目と予測評価値が3以上の科目は推薦リストに追加
      for i in range(len(rank)): 
         #nondel_data_all.iloc[0,rank[i][0]] == 1 は必選別で１のもの（必修の科目）
         if nondel_data_all.iloc[0,rank[i][0]] == 1:
            suisennkamoku.append(mirisyuu_list[i])
         elif rank[i][1] >= 3:
            suisennkamoku.append(mirisyuu_list[i])
         else:
            pass

      #推薦科目として提示した科目を未履修リストから削除
      for i in range(len(suisennkamoku)):
         mirisyuu_list.remove(suisennkamoku[i])    

      #落胆した科目を未履修リストの最後尾に追加
      for i in range(len(data_all.columns)):
         #ここは落単した科目を mirisyuu_listに追加する
         if data_all.iloc[target_user_index,i] == 0:
            mirisyuu_list.append(data_all.columns[i])

      # 取得済み or 推薦済み の科目に0が入った配列
      for i in range(len(suisennkamoku)):
         data_train_user = data_train_user.replace({f'{suisennkamoku[i]}':{1:0}})
      
      all_sum=tannisyutoku0A(zeroA_sum, zeroA, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku0B(zeroB_sum, zeroB, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku0C(zeroC_sum, zeroC, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku0D(zeroD_sum, zeroD, data_all,rank, suisennkamoku, nondel_data_all ,all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku1A(itiA_sum, itiA, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku1B(itiB_sum, itiB, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku1C(itiC_sum, itiC, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku2A(niA_sum, niA, data_all, rank, suisennkamoku,nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku2B(niB_sum, niB, data_all, rank, suisennkamoku,nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku3A(sannA_sum, sannA, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku4A(yonnA_sum, yonnB, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku4B(yonnB_sum, yonnB, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku5A(goA_sum, goA, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku5B(goB_sum, goB, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku5C(goC_sum, goC, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku6A(rokuA_sum, rokuA, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku6B(rokuB_sum, rokuB, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku6C(rokuC_sum, rokuC, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku6D(rokuD_sum, rokuD, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku6E(rokuE_sum, rokuE, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)
      all_sum=tannisyutoku6F(rokuF_sum, rokuF, data_all, rank, suisennkamoku, nondel_data_all, all_sum, df4, mirisyuu_list)

      #推薦科目として提示した科目を未履修リストから削除
      for i in range(len(suisennkamoku)):
         try:
            mirisyuu_list.remove(suisennkamoku[i])
         except ValueError:
            i += 1
         #print(mirisyuu_list)

      #取得済みor推薦済みの科目に0が入った配列
      for i in range(len(suisennkamoku)):
         data_train_user = data_train_user.replace({f'{suisennkamoku[i]}':{1:0}})

      #この時点で取得予定単位数が卒業要件単位を満たしていなければ,suisennkamokuにmirisyuu_listを追加していく（上から）
      # それを，all_sum が all_all を超えるまで続ける
      if all_sum < all_all:
         i = 0
         while all_sum < all_all:
            suisennkamoku.append(mirisyuu_list[i])
            all_sum += nondel_data_all.iloc[2,data_all.columns.get_loc(f'{mirisyuu_list[i]}')]
            i += 1

      suisenn_10 = []
      suisenn_11 = []
      suisenn_20 = []
      suisenn_21 = []
      suisenn_30 = []
      suisenn_31 = []
      suisenn_40 = []
      
      for i in range(len(suisennkamoku)):
         # suisennkamokuの科目の配当学年が 10 のとき，suisenn_10 に suisennkamoku の科目を追加する
         if nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 10:
            suisenn_10.append(suisennkamoku[i])
         # suisennkamokuの科目の配当学年が 11 のとき，suisenn_11 に suisennkamoku の科目を追加する
         elif nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 11:
            suisenn_11.append(suisennkamoku[i])
         # suisennkamokuの科目の配当学年が 20 のとき，suisenn_20 に suisennkamoku の科目を追加する
         elif nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 20:
            suisenn_20.append(suisennkamoku[i])
         # suisennkamokuの科目の配当学年が 21 のとき，suisenn_21 に suisennkamoku の科目を追加する
         elif nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 21:
            suisenn_21.append(suisennkamoku[i])
         # suisennkamokuの科目の配当学年が 30 のとき，suisenn_30 に suisennkamoku の科目を追加する
         elif nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 30:
            suisenn_30.append(suisennkamoku[i])
         # suisennkamokuの科目の配当学年が 31 のとき，suisenn_31 に suisennkamoku の科目を追加する
         elif nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 31:
            suisenn_31.append(suisennkamoku[i])
         # suisennkamokuの科目の配当学年が 40 のとき，suisenn_40 に suisennkamoku の科目を追加する
         elif nondel_data_all.iloc[1,data_all.columns.get_loc(f'{suisennkamoku[i]}')] == 40:
            suisenn_40.append(suisennkamoku[i])
         else:
            pass

      # list型
      suisenn_all = suisenn_10 + suisenn_11 + suisenn_20 + suisenn_21 + suisenn_30 +suisenn_31 + suisenn_40
      # list → データフレーム
      # suisenn_all_df = pd.DataFrame(suisenn_10 + suisenn_11 + suisenn_20 + suisenn_21 + suisenn_30 +suisenn_31 + suisenn_40)
            
      suisenn_all_url = []
      suisenn_all_name  = []

      for i in range(len(suisenn_all)):
         if suisenn_all[i] == ('IoTシステムデザイン'):
            suisenn_all_name.append('IoTシステムデザイン')
            suisenn_all_url.append('IoTsystem')
            
         elif suisenn_all[i] == ('IoTプログラミング'):
            suisenn_all_name.append('IoTプログラミング')
            suisenn_all_url.append('iot_prog')
            
         elif suisenn_all[i] == ('アルゴリズムとデータ構造'):
            suisenn_all_name.append('アルゴリズムとデータ構造')
            suisenn_all_url.append('alg_data')
            
         elif suisenn_all[i] == ('インターンシップA'):
            suisenn_all_name.append('インターンシップA')
            suisenn_all_url.append('interA')
            
         elif suisenn_all[i] == ('インターンシップB'):
            suisenn_all_name.append('インターンシップB')
            suisenn_all_url.append('interB')

         elif suisenn_all[i] == ('オペレーションズ・リサーチ'):
            suisenn_all_name.append('オペレーションズ・リサーチ')
            suisenn_all_url.append('opera')
            
         elif suisenn_all[i] == ('オペレーティングシステム'):
            suisenn_all_name.append('オペレーティングシステム')
            suisenn_all_url.append('ope_sys')
            
         elif suisenn_all[i] == ('キャリア形成論'):
            suisenn_all_name.append('キャリア形成論')
            suisenn_all_url.append('career')
            
         elif suisenn_all[i] == ('コミュニケーションの社会学'):
            suisenn_all_name.append('コミュニケーションの社会学')
            suisenn_all_url.append('com_soc')
            
         elif suisenn_all[i] == ('コミュニケーション論'):
            suisenn_all_name.append('コミュニケーション論')
            suisenn_all_url.append('com_logi')
            
         elif suisenn_all[i] == ('コンパイラ'):
            suisenn_all_name.append('コンパイラ')
            suisenn_all_url.append('Compiler')
            
         elif suisenn_all[i] == ('コンピュータアーキテクチャ'):
            suisenn_all_name.append('コンピュータアーキテクチャ')
            suisenn_all_url.append('com_archi')
            
         elif suisenn_all[i] == ('コンピュータネットワーク'):
            suisenn_all_name.append('コンピュータネットワーク')
            suisenn_all_url.append('com_net')
            
         elif suisenn_all[i] == ('コンピュータ基礎'):
            suisenn_all_name.append('コンピュータ基礎')
            suisenn_all_url.append('com_base')
            
         elif suisenn_all[i] == ('ソフトウェア工学'):
            suisenn_all_name.append('ソフトウェア工学')
            suisenn_all_url.append('soft_engi')
            
         elif suisenn_all[i] == ('ディジタル信号処理'):
            suisenn_all_name.append('ディジタル信号処理')
            suisenn_all_url.append('DSP')
            
         elif suisenn_all[i] == ('データベースとデータ処理'):
            suisenn_all_name.append('データベースとデータ処理')
            suisenn_all_url.append('DB_DP')
            
         elif suisenn_all[i] == ('ドイツ語Ⅰ'):
            suisenn_all_name.append('ドイツ語Ⅰ')
            suisenn_all_url.append('German1_')
            
         elif suisenn_all[i] == ('ドイツ語Ⅱ'):
            suisenn_all_name.append('ドイツ語Ⅱ')
            suisenn_all_url.append('German2_')
            
         elif suisenn_all[i] == ('トピックゼミⅠ'):
            suisenn_all_name.append('トピックゼミⅠ')
            suisenn_all_url.append('topic_semi1_')
            
         elif suisenn_all[i] == ('トピックゼミⅡ'):
            suisenn_all_name.append('トピックゼミⅡ')
            suisenn_all_url.append('topic_semi2_')
            
         elif suisenn_all[i] == ('ヒューマンインタフェース'):
            suisenn_all_name.append('ヒューマンインタフェース')
            suisenn_all_url.append('hum_inter')
            
         elif suisenn_all[i] == ('フーリエ解析学'):
            suisenn_all_name.append('フーリエ解析学')
            suisenn_all_url.append('fourier')
            
         elif suisenn_all[i] == ('プレゼンテーション演習'):
            suisenn_all_name.append('プレゼンテーション演習')
            suisenn_all_url.append('presen_info')
            
         elif suisenn_all[i] == ('プログラミング１'):
            suisenn_all_name.append('プログラミング１')
            suisenn_all_url.append('programming1_')
            
         elif suisenn_all[i] == ('プログラミング演習１'):
            suisenn_all_name.append('プログラミング演習１')
            suisenn_all_url.append('prog_exe1_')
            
         elif suisenn_all[i] == ('プログラミング２'):
            suisenn_all_name.append('プログラミング２')
            suisenn_all_url.append('programming2_')
            
         elif suisenn_all[i] == ('プログラミング演習２'):
            suisenn_all_name.append('プログラミング演習２')
            suisenn_all_url.append('prog_exe2_')
            
         elif suisenn_all[i] == ('プログラミング３'):
            suisenn_all_name.append('プログラミング３')
            suisenn_all_url.append('programming3_')
            
         elif suisenn_all[i] == ('プログラミング演習３'):
            suisenn_all_name.append('プログラミング演習３')
            suisenn_all_url.append('prog_exe3_')
            
         elif suisenn_all[i] == ('プログラミング言語'):
            suisenn_all_name.append('プログラミング言語')
            suisenn_all_url.append('prog_lan')
            
         elif suisenn_all[i] == ('英語基礎１'):
            suisenn_all_name.append('英語基礎１')
            suisenn_all_url.append('english_base1_')
            
         elif suisenn_all[i] == ('英語基礎２'):
            suisenn_all_name.append('英語基礎２')
            suisenn_all_url.append('english_base2_')
            
         elif suisenn_all[i] == ('英語基礎３'):
            suisenn_all_name.append('英語基礎３')
            suisenn_all_url.append('english_base3_')
            
         elif suisenn_all[i] == ('英語基礎４'):
            suisenn_all_name.append('英語基礎４')
            suisenn_all_url.append('english_base4_')
            
         elif suisenn_all[i] == ('英語特別演習１'):
            suisenn_all_name.append('英語特別演習１')
            suisenn_all_url.append('spe_english1_')
            
         elif suisenn_all[i] == ('英語特別演習２'):
            suisenn_all_name.append('英語特別演習２')
            suisenn_all_url.append('spe_english2_')
            
         elif suisenn_all[i] == ('英語特別演習３'):
            suisenn_all_name.append('英語特別演習３')
            suisenn_all_url.append('spe_english3_')
            
         elif suisenn_all[i] == ('英語特別演習４'):
            suisenn_all_name.append('英語特別演習４')
            suisenn_all_url.append('spe_english4_')
            
         elif suisenn_all[i] == ('化学Ⅰ'):
            suisenn_all_name.append('化学Ⅰ')
            suisenn_all_url.append('chemi1_')
            
         elif suisenn_all[i] == ('化学Ⅱ'):
            suisenn_all_name.append('化学Ⅱ')
            suisenn_all_url.append('chemi2_')
            
         elif suisenn_all[i] == ('化学実験'):
            suisenn_all_name.append('化学実験')
            suisenn_all_url.append('chemi_exp')
            
         elif suisenn_all[i] == ('科学技術と社会'):
            suisenn_all_name.append('科学技術と社会')
            suisenn_all_url.append('tech_soc')
            
         elif suisenn_all[i] == ('科学技術史'):
            suisenn_all_name.append('科学技術史')
            suisenn_all_url.append('history_sci_tech')
         
         elif suisenn_all[i] == ('画像処理基礎'):
            suisenn_all_name.append('画像処理基礎')
            suisenn_all_url.append('image_process')
            
         elif suisenn_all[i] == ('確率・統計学'):
            suisenn_all_name.append('確率・統計学')
            suisenn_all_url.append('Pro_Stat')
            
         elif suisenn_all[i] == ('環境論Ⅰ'):
            suisenn_all_name.append('環境論Ⅰ')
            suisenn_all_url.append('enviro1_')
            
         elif suisenn_all[i] == ('環境論Ⅱ'):
            suisenn_all_name.append('環境論Ⅱ')
            suisenn_all_url.append('enviro2_1st')
            
         elif suisenn_all[i] == ('企業経営概論'):
            suisenn_all_name.append('企業経営概論')
            suisenn_all_url.append('business')
            
         elif suisenn_all[i] == ('機械学習'):
            suisenn_all_name.append('機械学習')
            suisenn_all_url.append('machine_learning')
            
         elif suisenn_all[i] == ('技術英語'):
            suisenn_all_name.append('技術英語')
            suisenn_all_url.append('tech_eng_info')
            
         elif suisenn_all[i] == ('技術者倫理'):
            suisenn_all_name.append('技術者倫理')
            suisenn_all_url.append('engi_ethic_info')
            
         elif suisenn_all[i] == ('教養ゼミⅠ'):
            suisenn_all_name.append('教養ゼミⅠ')
            suisenn_all_url.append('edu_semi1_')
            
         elif suisenn_all[i] == ('教養ゼミⅡ'):
            suisenn_all_name.append('教養ゼミⅡ')
            suisenn_all_url.append('edu_semi2_')
            
         elif suisenn_all[i] == ('近現代史'):
            suisenn_all_name.append('近現代史')
            suisenn_all_url.append('modern_his')
            
         elif suisenn_all[i] == ('経済学Ⅰ'):
            suisenn_all_name.append('経済学Ⅰ')
            suisenn_all_url.append('economics1_1st')
            
         elif suisenn_all[i] == ('経済学Ⅱ'):
            suisenn_all_name.append('経済学Ⅱ')
            suisenn_all_url.append('economics2_')
            
         elif suisenn_all[i] == ('健康科学Ⅰ'):
            suisenn_all_name.append('健康科学Ⅰ')
            suisenn_all_url.append('health_sci1B')
            
         elif suisenn_all[i] == ('健康科学Ⅱ'):
            suisenn_all_name.append('健康科学Ⅱ')
            suisenn_all_url.append('health_sci2_')
            
         elif suisenn_all[i] == ('健康科学演習'):
            suisenn_all_name.append('健康科学演習')
            suisenn_all_url.append('health_sci_exe1st')
            
         elif suisenn_all[i] == ('国際関係論'):
            suisenn_all_name.append('国際関係論')
            suisenn_all_url.append('inter_rela')
            
         elif suisenn_all[i] == ('社会学Ⅰ'):
            suisenn_all_name.append('社会学Ⅰ')
            suisenn_all_url.append('sociology1_1st')
            
         elif suisenn_all[i] == ('社会学Ⅱ'):
            suisenn_all_name.append('社会学Ⅱ')
            suisenn_all_url.append('sociology2_')
            
         elif suisenn_all[i] == ('情報システムと地球環境'):
            suisenn_all_name.append('情報システムと地球環境')
            suisenn_all_url.append('info_global')
            
         elif suisenn_all[i] == ('情報システム工学概論'):
            suisenn_all_name.append('情報システム工学概論')
            suisenn_all_url.append('intro_info_sys')
            
         elif suisenn_all[i] == ('情報システム工学実験１'):
            suisenn_all_name.append('情報システム工学実験１')
            suisenn_all_url.append('info_sys_exp1_')
            
         elif suisenn_all[i] == ('情報システム工学実験２'):
            suisenn_all_name.append('情報システム工学実験２')
            suisenn_all_url.append('info_sys_exp2_')
            
         elif suisenn_all[i] == ('情報システム工学特別講義'):
            suisenn_all_name.append('情報システム工学特別講義')
            suisenn_all_url.append('special_info')
            
         elif suisenn_all[i] == ('情報数学１'):
            suisenn_all_name.append('情報数学１')
            suisenn_all_url.append('info_math1_')
            
         elif suisenn_all[i] == ('情報数学２'):
            suisenn_all_name.append('情報数学２')
            suisenn_all_url.append('info_math2_')
            
         elif suisenn_all[i] == ('情報理論'):
            suisenn_all_name.append('情報理論')
            suisenn_all_url.append('info_theo')
            
         elif suisenn_all[i] == ('心理学Ⅰ'):
            suisenn_all_name.append('心理学Ⅰ')
            suisenn_all_url.append('psycho1_1st')
            
         elif suisenn_all[i] == ('心理学Ⅱ'):
            suisenn_all_name.append('心理学Ⅱ')
            suisenn_all_url.append('psycho2_1st')
            
         elif suisenn_all[i] == ('数学Ⅰ'):
            suisenn_all_name.append('数学Ⅰ')
            suisenn_all_url.append('math1_')
            
         elif suisenn_all[i] == ('数学Ⅱ'):
            suisenn_all_name.append('数学Ⅱ')
            suisenn_all_url.append('math2_')
            
         elif suisenn_all[i] == ('数学演習'):
            suisenn_all_name.append('数学演習')
            suisenn_all_url.append('nume_ana')
            
         elif suisenn_all[i] == ('数値解析'):
            suisenn_all_name.append('数値解析')
            suisenn_all_url.append('detasyorikiso')
            
         elif suisenn_all[i] == ('生体情報工学'):
            suisenn_all_name.append('生体情報工学')
            suisenn_all_url.append('bioinfo')
            
         elif suisenn_all[i] == ('生物学'):
            suisenn_all_name.append('生物学')
            suisenn_all_url.append('biology')
            
         elif suisenn_all[i] == ('専門ゼミ'):
            suisenn_all_name.append('専門ゼミ')
            suisenn_all_url.append('spe_semi')
            
         elif suisenn_all[i] == ('線形代数１'):
            suisenn_all_name.append('線形代数１')
            suisenn_all_url.append('line_algebra1_')
            
         elif suisenn_all[i] == ('線形代数２'):
            suisenn_all_name.append('線形代数２')
            suisenn_all_url.append('line_a;gebra2_')
            
         elif suisenn_all[i] == ('組み込みシステム工学'):
            suisenn_all_name.append('組み込みシステム工学')
            suisenn_all_url.append('embed_syst_engi')
            
         elif suisenn_all[i] == ('総合英語１'):
            suisenn_all_name.append('総合英語１')
            suisenn_all_url.append('compre_eng1_')
            
         elif suisenn_all[i] == ('総合英語２'):
            suisenn_all_name.append('総合英語２')
            suisenn_all_url.append('compre_eng2_')
            
         elif suisenn_all[i] == ('総合英語３'):
            suisenn_all_name.append('総合英語３')
            suisenn_all_url.append('compre_eng3_')
            
         elif suisenn_all[i] == ('総合英語４'):
            suisenn_all_name.append('総合英語４')
            suisenn_all_url.append('compre_eng4_')
            
         elif suisenn_all[i] == ('卒業研究１'):
            suisenn_all_name.append('卒業研究１')
            suisenn_all_url.append('grad_rese1_')
            
         elif suisenn_all[i] == ('卒業研究２'):
            suisenn_all_name.append('卒業研究２')
            suisenn_all_url.append('grad_rese')
            
         elif suisenn_all[i] == ('待ち行列と性能解析'):
            suisenn_all_name.append('待ち行列と性能解析')
            suisenn_all_url.append('queueing')
            
         elif suisenn_all[i] == ('中国語Ⅰ'):
            suisenn_all_name.append('中国語Ⅰ')
            suisenn_all_url.append('china1')
            
         elif suisenn_all[i] == ('中国語Ⅱ'):
            suisenn_all_name.append('中国語Ⅱ')
            suisenn_all_url.append('china2')
            
         elif suisenn_all[i] == ('通信方式'):
            suisenn_all_name.append('通信方式')
            suisenn_all_url.append('commu_sys')
            
         elif suisenn_all[i] == ('哲学'):
            suisenn_all_name.append('哲学')
            suisenn_all_url.append('philo')
            
         elif suisenn_all[i] == ('電気回路'):
            suisenn_all_name.append('電気回路')
            suisenn_all_url.append('elec_circuit')
            
         elif suisenn_all[i] == ('電子回路'):
            suisenn_all_name.append('電子回路')
            suisenn_all_url.append('electron_circuit')
            
         elif suisenn_all[i] == ('日本語表現法・前期'):
            suisenn_all_name.append('日本語表現法・前期')
            suisenn_all_url.append('japan_express_1st')
            
         elif suisenn_all[i] == ('日本語表現法・後期'):
            suisenn_all_name.append('日本語表現法・後期')
            suisenn_all_url.append('japan_express_2st')
            
         elif suisenn_all[i] == ('日本国憲法'):
            suisenn_all_name.append('日本国憲法')
            suisenn_all_url.append('japan_const')
            
         elif suisenn_all[i] == ('比較文化学Ⅰ'):
            suisenn_all_name.append('比較文化学Ⅰ')
            suisenn_all_url.append('compare1_1st')
            
         elif suisenn_all[i] == ('比較文化学Ⅱ'):
            suisenn_all_name.append('比較文化学Ⅱ')
            suisenn_all_url.append('compare2_')
            
         elif suisenn_all[i] == ('微分方程式論'):
            suisenn_all_name.append('微分方程式論')
            suisenn_all_url.append('diff_equ')
            
         elif suisenn_all[i] == ('富山と日本海'):
            suisenn_all_name.append('富山と日本海')
            suisenn_all_url.append('toyama_japan')
            
         elif suisenn_all[i] == ('複素解析学'):
            suisenn_all_name.append('複素解析学')
            suisenn_all_url.append('complex_ana')
            
         elif suisenn_all[i] == ('物理学Ⅰ'):
            suisenn_all_name.append('物理学Ⅰ')
            suisenn_all_url.append('physic1_')
            
         elif suisenn_all[i] == ('物理学Ⅰ演習'):
            suisenn_all_name.append('物理学Ⅰ演習')
            suisenn_all_url.append('physic1_exe')
            
         elif suisenn_all[i] == ('物理学Ⅱ'):
            suisenn_all_name.append('物理学Ⅱ')
            suisenn_all_url.append('physic2_')
            
         elif suisenn_all[i] == ('物理実験・前期'):
            suisenn_all_name.append('物理実験・前期')
            suisenn_all_url.append('physic_exp1st')
            
         elif suisenn_all[i] == ('物理実験・後期'):
            suisenn_all_name.append('物理実験・後期')
            suisenn_all_url.append('physic_exp2st')
            
         elif suisenn_all[i] == ('文学Ⅰ'):
            suisenn_all_name.append('文学Ⅰ')
            suisenn_all_url.append('literature1_')
            
         elif suisenn_all[i] == ('文学Ⅱ'):
            suisenn_all_name.append('文学Ⅱ')
            suisenn_all_url.append('literature2_')
            
         elif suisenn_all[i] == ('法学Ⅰ'):
            suisenn_all_name.append('法学Ⅰ')
            suisenn_all_url.append('law1_1st')
            
         elif suisenn_all[i] == ('法学Ⅱ'):
            suisenn_all_name.append('法学Ⅱ')
            suisenn_all_url.append('law2_2grade')
            
         elif suisenn_all[i] == ('倫理学'):
            suisenn_all_name.append('倫理学')
            suisenn_all_url.append('ethics')
            
         elif suisenn_all[i] == ('論理回路応用'):
            suisenn_all_name.append('論理回路応用')
            suisenn_all_url.append('logic_circuit_app')
         
         elif suisenn_all[i] == ('論理回路基礎'):
            suisenn_all_name.append('論理回路基礎')
            suisenn_all_url.append('logic_circuit_base')
            
         else:
            pass

 
      user_html = pd.read_csv("data.csv", encoding="cp932", header=None)
      data_html = user_html[user_html[0].isin([name])]
      data_html.columns = data_kako.columns
      data_html = data_html.drop(data_html.columns[-1], axis=1)
      data_html = data_html.replace({-1:"履修なし", 0: "落単or不可", 1:"C", 2:"B", 3:"A", 4:"S"})
      user_T = data_html.T
      
      # df_Tには data.csvから対象のユーザのデータを変換し，転置したもの
      return render_template("index.html", name=name, data = user_T.to_html(header=True),\
                              suisenn_all_url = suisenn_all_url, suisenn_all_name = suisenn_all_name)
   else:
      return redirect(url_for('start'))









if __name__ == '__main__':
   app.run(debug = True)