Harigami
ログイン
Harigamiは、ログイン不要のコード共有サービスです。コードの投稿後に発行されるURLでコードを共有できます。
PythonやRubyなど一部の言語は、投稿後にオンラインで実行することもできます。
誰でも無料で使えて、広告もありません。コードレビューやスニペットの代わりに使ってみてください。


詳細設定
+
エビです 11−1.pyの最後の一行が抜けていたので修正しました
Python
print("そなた 名は何と申す?")
replace_name =input("名前を入力して下さい:")
if "は" in replace_name:
    replaced_name =replace_name.replace("は","ひゃ")
else:
    replaced_name=replace_name
print("{}と申すのか 良い名じゃな".format(replaced_name))
  • 0
  • 1
エビです タイトルなし
Python
print("そなた 名は何と申す?")
replace_name =input("名前を入力して下さい:")
if "は" in replace_name:
    replaced_name =replace_name.replace("は","ひゃ")
else:
    replaced_name=replace_name
print("{}と申すのか 良い名じゃな".format(replaced_name))
  • 0
  • 0
anonymous タイトルなし
VBA
Option Explicit

'事前に
'・InternetExplorerのインターネットオプションで保護モードを有効にする
'・VBEの参照設定で"Microsoft Internet Controls"にチェックを入れる
    
Sub test()

    'InternetExplorer起動
    Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    
    'サイトを表示
    objIE.Visible = True
    
    'ラインのサイト
    objIE.Navigate "https://line.me/ja/download"
    
    'ラインのサイトが完全に開くまで待機する
    Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
    Loop
    
        'ダウンロードボタンを押す
    objIE.document.getElementsbytagname("a")(34).Click

    
    Set objIE = Nothing
    
End Sub
  • 0
  • 1
anonymous タイトルなし
VBA
Option Explicit

'事前に
'・InternetExplorerのインターネットオプションで保護モードを有効にする
'・VBEの参照設定で"Microsoft Internet Controls"にチェックを入れる
    
Sub test()

    'InternetExplorer起動
    Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    
    'サイトを表示
    objIE.Visible = True
    
    'ラインのサイト
    objIE.Navigate "https://line.me/ja/download"
    
    'ラインのサイトが完全に開くまで待機する
    Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
    Loop
    
    'aタグ要素のHTMLを全て書き出す
    Dim i As Long
    For i = 0 To objIE.document.getElementsbytagname("a").Length - 1
        ThisWorkbook.Worksheets(1).Cells(i + 2, 2) = objIE.document.getElementsbytagname("a")(i).outerHTML
    Next
    
    Set objIE = Nothing
    
End Sub
  • 0
  • 0
anonymous タイトルなし
JavaScript
		function send(input, click) {
		  postData(`http://localhost:8080/solve`, {
		      left: input,
		      right: click
		    }).then(data => console.log(data)) // JSON-string from `response.json()` call
		    .catch(error => console.error(error));
		}

		function postData(url = ``, data = {}) {
		  // 既定のオプションには * が付いています
		  return fetch(url, {
		    method: "POST", // *GET, POST, PUT, DELETE, etc.
		    mode: "cors", // no-cors, cors, *same-origin
		    body: JSON.stringify(data) // 本文のデータ型は "Content-Type" ヘッダーと一致する必要があります
		  }).then(function (response) {
		    return response.json();
		  }).then(function (myJson) {
		    console.log(JSON.stringify(myJson));
		    alert(JSON.stringify(myJson));
		  });
		}
  • 0
  • 0
エビです タイトルなし
Python
def swap(party1,party2):
    flag=0
    for name,hp in party2.items():
        name2=name
        hp2 =hp
    for name,hp in party1.items():
        if hp>=hp2:
            flag=1
    return flag
party1 ={"勇者":32,"魔法使い":14,"僧侶":22}
party2 ={"ゴースト":15}
for name, hp in party1.items():
    print("{}のHP{}".format(name,hp))
for name, hp in party2.items():
    print("{}のHP{}".format(name,hp))
print("ゴーストが現れた!")
print("ゴーストはスワップを唱えた!")
flag =swap(party1,party2)
if(flag ==1):
    print("勇者たちのHPが入れ替わってしまった!")
    hp2=hp
    for name,hp in party2.items():
        name2=name
        hp2 =hp
    for name,hp in party1.items():
        if hp>=hp2:
            hp=hp2
        print("{}のHP:{}".format(name,hp))
elif(flag ==0):
    print("何も起こらなかった!")
  • 0
  • 1
anonymous タイトルなし
Python
# -*- coding:utf-8 -*-
import csv
import datetime
import re

#datetimeの使い方
#print(datetime.date(2017,11,12))
# => 2017-11-12

#機能<--Projective Todo-->
#個人用のtodoの作成、削除、表示ができる
#リーダー(0番)のみプロジェクト用のtodoリストの作成、削除ができる
#リーダー以外はプロジェクトTodoの表示のみ

#csvファイルの名前=>"todo.csv"


#データを保持するクラス
class TodoInfo:
    def __init__(self,todo,deadline):
        #TodoInfoクラスを初期化する
        #引数のselfはあまり考えなくて良い
        #self移行が引数となる
        #self.todoなどはクラス変数
        self.todo = todo
        #データ保持用の辞書
        self.deadline = deadline

    def toFormattedString(self,key):
        """todoリストを表示するための書式設定"""
        print('todo:',end="")
        print(self.todo)
        print('\tkey:',end="")
        print(key)
        print('\tdeadline:',end="")
        print(self.deadline)

#アプリケーションを動かすクラス
class TodoManager:
    def __init__(self,fileName):
        #TodoManagerクラスを初期化する
        self.fileName = fileName
        self.todo_data = {}

    def setup(self):
        """メンバーIDの入力とcsvからの読み込み"""
        #従業員Noを入力する
        #リーダーは0番
        while True:
            self.member = input("メンバーID(0-9):")
            if not self.member.isdigit():
                #数字でないなら
                print("不正な値です")
                continue
            else:
                if 0 <= int(self.member) and int(self.member) <= 9:
                    break
                else:
                    print("不正な値です")
                    continue
        #csvファイルからデータを読み込む
        #todo.csvを読み込みモードで開く
        try:
            f = open(self.fileName,"rt")
        except FileNotFoundError:
            f = open(self.fileName,"wt")
            header_writer = csv.writer(f,lineterminator = '\n')
            header_list = ['key','todo','year','month','day']
            header_writer.writerow(header_list)
            f.close()
            f = open(self.fileName,"rt")

        lines = f.readlines()
        reader = csv.reader(lines)
        #1行読み飛ばす
        header = next(reader)

        #lineは配列として読み込まれるので、インデックスでそれぞれ代入
        for line in reader:
            #リストから対応する変数に代入
            key, todo, year, month, day = line
            deadline = datetime.date(int(year),int(month),int(day))
            self.todo_data[key] = TodoInfo(todo,deadline)
        #ファイルを閉じる
        f.close()


    def listProjectData(self):
        """プロジェクトTodoを表示する"""
        #プロジェクトtodoを表示する
        print("-------------------------------------------")
        print('<-- Project Todo -->')
        #検索用パターンの設定
        search_key = '^Pro'
        while True:
            #ヒット件数
            count = 0
            #検索処理
            for key in self.todo_data.keys():
                m = re.findall(search_key,key)
                if m:
                    count += 1
                    #TodoInfoクラスのtoFormattedString()を利用する
                    self.todo_data[key].toFormattedString(key)

            #削除する処理
            #countが0以上かつリーダー(0番)なら
            if count > 0 and self.member == '0':
                print("-------------------------------------------")
                print('削除したいリストのキーを選択してください(q to cancel):',end="")
                delete_key = input().strip()
                if delete_key == 'q':
                    break
                else:
                    self.deleteData(delete_key)
            else:
                break

    def listIndiData(self):
        """個人Todoを表示する"""
        #個人todoを表示する
        print("-------------------------------------------")
        print('<-- Indivisual Todo -->')
        #検索用パターンの設定
        search_key = 'Ind..{0:s}'.format(self.member)
        while True:
            #ヒット件数
            count = 0

            #検索処理
            for key in self.todo_data.keys():
                m = re.findall(search_key,key)
                if m:
                    count += 1
                    #TodoInfoクラスのtoFormattedString()を利用する
                    self.todo_data[key].toFormattedString(key)

            #削除する処理
            if count > 0:
                print("-------------------------------------------")
                print('削除したいリストのキーを選択してください(q to cancel):',end="")
                delete_key = input().strip()
                if delete_key == 'q':
                    break
                else:
                    #deleteData()のあとはまた繰り返し
                    self.deleteData(delete_key)
            else:
                break

    def addToIndivisual(self):
        """個人Todoに追加する"""
        print("-------------------------------------------")
        #個人todoリストへ追加する
        #項目名、期日の入力を求める
        #キーは関数で生成する
        key = self.makeKey('Ind')
        #todoの入力
        print("todo:",end="")
        todo = input().strip()
        print("年:",end="")
        year = input().strip()
        print("月:",end="")
        month = input().strip()
        print("日:",end="")
        day = input().strip()
        #deadlineは日付で処理
        deadline = datetime.date(int(year),int(month),int(day))
        self.todo_data[key] = TodoInfo(todo,deadline)

    def addToProject(self):
        """プロジェクトTodoに追加する"""
        print("-------------------------------------------")
        #プロジェクトtodoへ追加する
        #リーダー(0番)でなければ追加できない
        if self.member != '0':
            print("warning:あなたはリーダーではありません")
        else:
            #項目名、期日の入力を求める
            #キーは関数で生成する
            key = self.makeKey('Pro')
            #todoの入力
            print("todo:",end="")
            todo = input().strip()
            print("年:",end="")
            year = input().strip()
            print("月:",end="")
            month = input().strip()
            print("日:",end="")
            day = input().strip()
            #deadlineは日付で処理
            deadline = datetime.date(int(year),int(month),int(day))
            self.todo_data[key] = TodoInfo(todo,deadline)

    def deleteData(self,key):
        """引数のkeyをkeys()から削除する"""
        #todoリストのデータを削除する
        #keyが辞書に存在しなければキャンセルする
        if not key in self.todo_data.keys():
            print("No such list")
        else:
            removed_value = self.todo_data.pop(key)
            print("以下のリストを削除しました")
            print('todo:',removed_value.todo)
            print('deadline:',removed_value.deadline)

    def saveToCsv(self):
        #docstring
        """todoリストをcsvへ保存する"""
        #todo.csvを書き込みモードで開く
        f = open("todo.csv","w")

        #ヘッダ書き込み用writer
        header_writer = csv.writer(f,lineterminator = '\n')
        #内容書き込み用writer
        #lineterminator で改行する
        writer = csv.writer(f,lineterminator = '\n')

        #ヘッダ書き込み
        header_list = ['key','todo','year','month','day']
        header_writer.writerow(header_list)

        #keys()で辞書のキー一覧を取得
        for key in self.todo_data.keys():
            #csv書き込み用の配列
            #key,todo,year,month,day
            a = [key, self.todo_data[key].todo, self.todo_data[key].deadline.year, self.todo_data[key].deadline.month, self.todo_data[key].deadline.day]
            #書き込む
            writer.writerow(a)
        f.close()
        print("saving completed.")

    def makeKey(self,type):
        #docstring
        """キーをプログラム側で決定する関数"""
        #ランダム関数を生成する
        import random
        #'Ind'のとき
        if type == 'Ind':
            #0-99の間のランダムな整数を取得する
            while True:
                #重複がなくなるまで繰り返すが、これではtodoリストが増えたときにおそくなってしまう
                randint = random.randint(0,99)
                key = '{0:s}{1:02d}{2:s}'.format(type,randint,self.member)
                if key in self.todo_data.keys():
                    #作成したkeyが既に存在するなら
                    continue
                else:
                    return key

        #'Pro'のとき
        elif type == 'Pro':
            while True:
                randint = random.randint(0,99)
                key = '{0:s}{1:02d}'.format(type,randint)
                if key in self.todo_data.keys():
                    #作成したkeyが既に存在するなら
                    continue
                else:
                    return key


    def run(self):
        #機能選択画面を表示する
        while True:
            print("-------------------------------------------")
            print("あなたのメンバーID:< {0:s} >".format(self.member))
            print("1.個人のtodoリストに追加する")
            print("2.個人のtodoリストを表示する")
            print("3.プロジェクトのtodoリストに追加する")
            print("4.プロジェクトのtodoリストを表示する")
            print("8.csvファイルに保存する({0:s})".format(self.fileName))
            print("9.終了")
            print("番号を選んでください(1,2,3,4,8,9):",end="")
            num = input().strip()
            if num == '1':
                self.addToIndivisual()
            elif num == '2':
                self.listIndiData()
            elif num == '3':
                self.addToProject()
            elif num == '4':
                self.listProjectData()
            elif num == '8':
                self.saveToCsv()
            elif num == '9':
                break
            else:
                #選択待ち画面に戻る
                continue

#ここからアプリケーションを動かす本体
todo_manager = TodoManager("todo.csv")

todo_manager.setup()
todo_manager.run()
  • 0
  • 1
anonymous タイトルなし
Python
# -*- coding:utf-8 -*-
import csv
import datetime
import re

#datetimeの使い方
#print(datetime.date(2017,11,12))
# => 2017-11-12

#機能<--Projective Todo-->
#個人用のtodoの作成、削除、表示ができる
#リーダー(0番)のみプロジェクト用のtodoリストの作成、削除ができる
#リーダー以外はプロジェクトTodoの表示のみ

#csvファイルの名前=>"todo.csv"


#データを保持するクラス
class TodoInfo:
    def __init__(self,todo,deadline):
        #TodoInfoクラスを初期化する
        #引数のselfはあまり考えなくて良い
        #self移行が引数となる
        #self.todoなどはクラス変数
        self.todo = todo
        #データ保持用の辞書
        self.deadline = deadline

    def toFormattedString(self,key):
        """todoリストを表示するための書式設定"""
        print('todo:',end="")
        print(self.todo)
        print('\tkey:',end="")
        print(key)
        print('\tdeadline:',end="")
        print(self.deadline)

#アプリケーションを動かすクラス
class TodoManager:
    def __init__(self,fileName):
        #TodoManagerクラスを初期化する
        self.fileName = fileName
        self.todo_data = {}

    def setup(self):
        """メンバーIDの入力とcsvからの読み込み"""
        #従業員Noを入力する
        #リーダーは0番
        while True:
            self.member = input("メンバーID(0-9):")
            if not self.member.isdigit():
                #数字でないなら
                print("不正な値です")
                continue
            else:
                if 0 <= int(self.member) and int(self.member) <= 9:
                    break
                else:
                    print("不正な値です")
                    continue
        #csvファイルからデータを読み込む
        #todo.csvを読み込みモードで開く
        f = open(self.fileName,"r")
        lines = f.readlines()
        reader = csv.reader(lines)
        #1行読み飛ばす
        header = next(reader)

        #lineは配列として読み込まれるので、インデックスでそれぞれ代入
        for line in reader:
            #リストから対応する変数に代入
            key, todo, year, month, day = line
            deadline = datetime.date(int(year),int(month),int(day))
            self.todo_data[key] = TodoInfo(todo,deadline)
        #ファイルを閉じる
        f.close()


    def listProjectData(self):
        """プロジェクトTodoを表示する"""
        #プロジェクトtodoを表示する
        print("-------------------------------------------")
        print('<-- Project Todo -->')
        #検索用パターンの設定
        search_key = '^Pro'
        while True:
            #ヒット件数
            count = 0
            #検索処理
            for key in self.todo_data.keys():
                m = re.findall(search_key,key)
                if m:
                    count += 1
                    #TodoInfoクラスのtoFormattedString()を利用する
                    self.todo_data[key].toFormattedString(key)

            #削除する処理
            #countが0以上かつリーダー(0番)なら
            if count > 0 and self.member == '0':
                print("-------------------------------------------")
                print('削除したいリストのキーを選択してください(q to cancel):',end="")
                delete_key = input().strip()
                if delete_key == 'q':
                    break
                else:
                    self.deleteData(delete_key)
            else:
                break

    def listIndiData(self):
        """個人Todoを表示する"""
        #個人todoを表示する
        print("-------------------------------------------")
        print('<-- Indivisual Todo -->')
        #検索用パターンの設定
        search_key = 'Ind..{0:s}'.format(self.member)
        while True:
            #ヒット件数
            count = 0

            #検索処理
            for key in self.todo_data.keys():
                m = re.findall(search_key,key)
                if m:
                    count += 1
                    #TodoInfoクラスのtoFormattedString()を利用する
                    self.todo_data[key].toFormattedString(key)

            #削除する処理
            if count > 0:
                print("-------------------------------------------")
                print('削除したいリストのキーを選択してください(q to cancel):',end="")
                delete_key = input().strip()
                if delete_key == 'q':
                    break
                else:
                    #deleteData()のあとはまた繰り返し
                    self.deleteData(delete_key)
            else:
                break

    def addToIndivisual(self):
        """個人Todoに追加する"""
        print("-------------------------------------------")
        #個人todoリストへ追加する
        #項目名、期日の入力を求める
        #キーは関数で生成する

    def addToProject(self):
        """プロジェクトTodoに追加する"""
        print("-------------------------------------------")
        #プロジェクトtodoへ追加する
        #リーダー(0番)でなければ追加できない
        #項目名、期日の入力を求める
        #キーは関数で生成する

    def deleteData(self,key):
        """引数のkeyをkeys()から削除する"""
        #todoリストのデータを削除する
        #keyが辞書に存在しなければキャンセルする
        if not key in self.todo_data.keys():
            print("No such list")
        else:
            removed_value = self.todo_data.pop(key)
            print("以下のリストを削除しました")
            print('todo:',removed_value.todo)
            print('deadline:',removed_value.deadline)

    def saveToCsv(self):
        #docstring
        """todoリストをcsvへ保存する"""
        #todo.csvを書き込みモードで開く
        f = open("todo.csv","w")

        #ヘッダ書き込み用writer
        header_writer = csv.writer(f,lineterminator = '\n')
        #内容書き込み用writer
        #lineterminator で改行する
        writer = csv.writer(f,lineterminator = '\n')

        #ヘッダ書き込み
        header_list = ['key','todo','year','month','day']
        header_writer.writerow(header_list)

        #keys()で辞書のキー一覧を取得
        for key in self.todo_data.keys():
            #csv書き込み用の配列
            #key,todo,year,month,day
            a = [key, self.todo_data[key].todo, self.todo_data[key].deadline.year, self.todo_data[key].deadline.month, self.todo_data[key].deadline.day]
            #書き込む
            writer.writerow(a)
        f.close()
        print("saving completed.")

    def makeKey(self,type):
        #docstring
        """キーをプログラム側で決定する関数"""
        #ランダム関数を生成するモジュール
        import random
        #'Ind'のとき
        if type == 'Ind':
            #0-99の間のランダムな整数を取得する
            while True:
                #重複がなくなるまで繰り返すが、これではtodoリストが増えたときにおそくなってしまう
                randint = random.randint(0,99)
                key = '{0:s}{1:02d}{2:s}'.format(type,randint,self.member)
                if key in self.todo_data.keys():
                    #作成したkeyが既に存在するなら
                    continue
                else:
                    return key

        #'Pro'のとき
        elif type == 'Pro':
            while True:
                randint = random.randint(0,99)
                key = '{0:s}{1:02d}'.format(type,randint)
                if key in self.todo_data.keys():
                    #作成したkeyが既に存在するなら
                    continue
                else:
                    return key


    def run(self):
        #機能選択画面を表示する
        while True:
            print("-------------------------------------------")
            print("あなたのメンバーID:< {0:s} >".format(self.member))
            print("1.個人のtodoリストに追加する")
            print("2.個人のtodoリストを表示する")
            print("3.プロジェクトのtodoリストに追加する")
            print("4.プロジェクトのtodoリストを表示する")
            print("8.csvファイルに保存する({0:s})".format(self.fileName))
            print("9.終了")
            print("番号を選んでください(1,2,3,4,8,9):",end="")
            num = input().strip()
            if num == '1':
                self.addToIndivisual()
            elif num == '2':
                self.listIndiData()
            elif num == '3':
                self.addToProject()
            elif num == '4':
                self.listProjectData()
            elif num == '8':
                self.saveToCsv()
            elif num == '9':
                break
            else:
                #選択待ち画面に戻る
                continue

#ここからアプリケーションを動かす本体
todo_manager = TodoManager("todo.csv")

todo_manager.setup()
todo_manager.run()
  • 0
  • 0
anonymous タイトルなし
Python
# -*- coding:utf-8 -*-
import csv
import datetime
import re

#datetimeの使い方
#print(datetime.date(2017,11,12))
# => 2017-11-12

#機能<--Projective Todo-->
#個人用のtodoの作成、削除、表示ができる
#リーダー(0番)のみプロジェクト用のtodoリストの作成、削除ができる
#リーダー以外はプロジェクトTodoの表示のみ

#csvファイルの名前=>"todo.csv"


#データを保持するクラス
class TodoInfo:
    def __init__(self,todo,deadline):
        #TodoInfoクラスを初期化する
        #引数のselfはあまり考えなくて良い
        #self移行が引数となる
        #self.todoなどはクラス変数
        self.todo = todo
        #データ保持用の辞書
        self.deadline = deadline

    def toFormattedString(self,key):
        """todoリストを表示するための書式設定"""
        print('todo:',end="")
        print(self.todo)
        print('\tkey:',end="")
        print(key)
        print('\tdeadline:',end="")
        print(self.deadline)

#アプリケーションを動かすクラス
class TodoManager:
    def __init__(self,fileName):
        #TodoManagerクラスを初期化する
        self.fileName = fileName
        self.todo_data = {}

    def setup(self):
        """メンバーIDの入力とcsvからの読み込み"""
        #従業員Noを入力する
        #リーダーは0番
        while True:
            self.member = input("メンバーID(0-9):")
            if not self.member.isdigit():
                #数字でないなら
                print("不正な値です")
                continue
            else:
                if 0 <= int(self.member) and int(self.member) <= 9:
                    break
                else:
                    print("不正な値です")
                    continue
        #csvファイルからデータを読み込む
        #todo.csvを読み込みモードで開く
        f = open(self.fileName,"r")
        lines = f.readlines()
        reader = csv.reader(lines)
        #1行読み飛ばす
        header = next(reader)

        #lineは配列として読み込まれるので、インデックスでそれぞれ代入
        for line in reader:
            #リストから対応する変数に代入
            key, todo, year, month, day = line
            deadline = datetime.date(int(year),int(month),int(day))
            self.todo_data[key] = TodoInfo(todo,deadline)
        #ファイルを閉じる
        f.close()


    def listProjectData(self):
        """プロジェクトTodoを表示する"""
        #プロジェクトtodoを表示する
        print("-------------------------------------------")
        print('<-- Project Todo -->')
        #検索用パターンの設定
        search_key = '^Pro'
        while True:
            #ヒット件数
            count = 0
            #検索処理
            for key in self.todo_data.keys():
                m = re.findall(search_key,key)
                if m:
                    count += 1
                    #TodoInfoクラスのtoFormattedString()を利用する
                    self.todo_data[key].toFormattedString(key)

            #削除する処理
            #countが0以上かつリーダー(0番)なら
            if count > 0 and self.member == '0':
                print("-------------------------------------------")
                print('削除したいリストのキーを選択してください(q to cancel):',end="")
                delete_key = input().strip()
                if delete_key == 'q':
                    break
                else:
                    self.deleteData(delete_key)
            else:
                break

    def listIndiData(self):
        """個人Todoを表示する"""
        #個人todoを表示する
        print("-------------------------------------------")
        print('<-- Indivisual Todo -->')
        #検索用パターンの設定
        search_key = 'Ind..{0:s}'.format(self.member)
        while True:
            #ヒット件数
            count = 0

            #検索処理
            for key in self.todo_data.keys():
                m = re.findall(search_key,key)
                if m:
                    count += 1
                    #TodoInfoクラスのtoFormattedString()を利用する
                    self.todo_data[key].toFormattedString(key)

            #削除する処理
            if count > 0:
                print("-------------------------------------------")
                print('削除したいリストのキーを選択してください(q to cancel):',end="")
                delete_key = input().strip()
                if delete_key == 'q':
                    break
                else:
                    #deleteData()のあとはまた繰り返し
                    self.deleteData(delete_key)
            else:
                break

    def addToIndivisual(self):
        """個人Todoに追加する"""
        print("-------------------------------------------")
        #個人todoリストへ追加する
        #項目名、期日の入力を求める
        #キーは関数で生成する
        key = self.makeKey('Ind')
        #todoの入力
        print("todo:",end="")
        todo = input().strip()
        print("年:",end="")
        year = input().strip()
        print("月:",end="")
        month = input().strip()
        print("日:",end="")
        day = input().strip()
        #deadlineは日付で処理
        deadline = datetime.date(int(year),int(month),int(day))
        self.todo_data[key] = TodoInfo(todo,deadline)

    def addToProject(self):
        """プロジェクトTodoに追加する"""
        print("-------------------------------------------")
        #プロジェクトtodoへ追加する
        #リーダー(0番)でなければ追加できない
        if self.member != '0':
            print("warning:あなたはリーダーではありません")
        else:
            #項目名、期日の入力を求める
            #キーは関数で生成する
            key = self.makeKey('Pro')
            #todoの入力
            print("todo:",end="")
            todo = input().strip()
            print("年:",end="")
            year = input().strip()
            print("月:",end="")
            month = input().strip()
            print("日:",end="")
            day = input().strip()
            #deadlineは日付で処理
            deadline = datetime.date(int(year),int(month),int(day))
            self.todo_data[key] = TodoInfo(todo,deadline)

    def deleteData(self,key):
        """引数のkeyをkeys()から削除する"""
        #todoリストのデータを削除する
        #keyが辞書に存在しなければキャンセルする
        if not key in self.todo_data.keys():
            print("No such list")
        else:
            removed_value = self.todo_data.pop(key)
            print("以下のリストを削除しました")
            print('todo:',removed_value.todo)
            print('deadline:',removed_value.deadline)

    def saveToCsv(self):
        #docstring
        """todoリストをcsvへ保存する"""
        #todo.csvを書き込みモードで開く
        f = open("todo.csv","w")

        #ヘッダ書き込み用writer
        header_writer = csv.writer(f,lineterminator = '\n')
        #内容書き込み用writer
        #lineterminator で改行する
        writer = csv.writer(f,lineterminator = '\n')

        #ヘッダ書き込み
        header_list = ['key','todo','year','month','day']
        header_writer.writerow(header_list)

        #keys()で辞書のキー一覧を取得
        for key in self.todo_data.keys():
            #csv書き込み用の配列
            #key,todo,year,month,day
            a = [key, self.todo_data[key].todo, self.todo_data[key].deadline.year, self.todo_data[key].deadline.month, self.todo_data[key].deadline.day]
            #書き込む
            writer.writerow(a)
        f.close()
        print("saving completed.")

    def makeKey(self,type):
        #docstring
        """キーをプログラム側で決定する関数"""
        import random
        #'Ind'のとき
        if type == 'Ind':
            #0-99の間のランダムな整数を取得する
            while True:
                #重複がなくなるまで繰り返すが、これではtodoリストが増えたときにおそくなってしまう
                randint = random.randint(0,99)
                key = '{0:s}{1:02d}{2:s}'.format(type,randint,self.member)
                if key in self.todo_data.keys():
                    #作成したkeyが既に存在するなら
                    continue
                else:
                    return key

        #'Pro'のとき
        elif type == 'Pro':
            while True:
                randint = random.randint(0,99)
                key = '{0:s}{1:02d}'.format(type,randint)
                if key in self.todo_data.keys():
                    #作成したkeyが既に存在するなら
                    continue
                else:
                    return key


    def run(self):
        #機能選択画面を表示する
        while True:
            print("-------------------------------------------")
            print("あなたのメンバーID:< {0:s} >".format(self.member))
            print("1.個人のtodoリストに追加する")
            print("2.個人のtodoリストを表示する")
            print("3.プロジェクトのtodoリストに追加する")
            print("4.プロジェクトのtodoリストを表示する")
            print("8.csvファイルに保存する({0:s})".format(self.fileName))
            print("9.終了")
            print("番号を選んでください(1,2,3,4,8,9):",end="")
            num = input().strip()
            if num == '1':
                self.addToIndivisual()
            elif num == '2':
                self.listIndiData()
            elif num == '3':
                self.addToProject()
            elif num == '4':
                self.listProjectData()
            elif num == '8':
                self.saveToCsv()
            elif num == '9':
                break
            else:
                #選択待ち画面に戻る
                continue

#ここからアプリケーションを動かす本体
todo_manager = TodoManager("todo.csv")

todo_manager.setup()
todo_manager.run()
  • 0
  • 0
anonymous タイトルなし
Python
  • 0
  • 0