学習のpython - フィクションリーダー

午前23時41分更新------------------------------ -------------- 3.26 -------------- 
#書き込みフィクションの読者は、下位の機能を実現する
プログラムが実行して始まったショー:##
#0アカウント登録
#1トップアップを
#2は、小説を読んで


のために:2 ##ファイルdb.txt、コンテンツのフォーマット:「ユーザ名:パスワード:量」では、下記の機能を完了するために
#2.1に、アカウント登録
#2.2、再充電

## 3:ファイルstory_class.txtストアのカテゴリとフィクションのファイルパス、次のように、利用可能な評価は、逆溶液辞書後読み出さ
{ "0":#{ "0" [ "天犬の死体が.txtの気"、3]、 "1 ":" 英雄Shadiaoターンの.txt"、10]}、 "1":{ "0":[ "恥ずかしい愛の.TXT"、6]、 "1 ":[" 妻と二匹の犬がストーリー.TXTプレーリードッグ"、5]}、}

#3.1成功し、次の情報では、ユーザログは、ユーザーの選択に応じて、フィクション、フィクション名だけでなく、小説の価格のカテゴリに対応する番号が表示された後、
#「」「
#0ファンタジー武道
#1都市の愛
#2効率的なテクノロジー36豚の
#」「」

#3。2、利用者は、あなたをyを決定した後、ユーザー入力の支払いを求めるメッセージが表示され、小説の特定の番号を入力控除とバランスがプロンプトの欠如のバランスよりも小さい場合は、小説の内容を表示する

## 4:認証機能の後2.2,3.1,3.2デコレータを書くための機能である、要件が操作を実行するにはログインが必要

## Vを:機能2.2,3.2への書き込みログデコレータ、ログフォーマット:「時のユーザー名操作「量(プリペイドまたは消費)



##追加:
##は、モジュール作者を拡張することができますが、著者は自分の仕事をアップロードすることができます


インポート時間

:USERSTATUS = {なし'ユーザ名'}


DEF払い(FUNC):
'' '
認定をデコレータ機能
:リターン:
'' '

DEF warpper(* argsを、** kwargsから):
IF USERSTATUS ['ユーザ名']なしです:
inp_name =入力('ユーザ名を入力してください')
inp_psd =入力('パスワード「)
とオープン( 'db.txt'、 'RT RFよう= 'UTF-8'コード'):
ユーザー情報= {}
RFの行のための:
名前、PSD、= line.strip()スプリット( ':')思い出させる。
のUserInfo [名] = [PSD、INT(リマインド)]
のUserInfoでinp_nameされていない場合:
印刷( 'ユーザーが存在しない')
リターン
のUserInfoでinp_name IF UserInfoと[inp_name] [0] == inp_psd:
印刷( '成功したログインユーザ愛する{}' .format(inp_name))
USERSTATUS [ 'ユーザ名'] = inp_name
RES = FUNC(*引数、** kwargsから)
リターンRESは
他:
印刷( 'アカウントのパスワードを間違っては')
を返す
:他に
RES = FUNC(* argsを、** kwargsから)
リターンRESを
リターンラッパー


デフrecord_log(FUNC):
'' '
日志记录功能装饰器
:リターン
'''

DEFラッパー(* argsを、** kwargsから):
RES = FUNC(* argsを、** kwargsから)
'(オープン・レコードを持ちます。ログ' 'AB')log_fとして:
op_time = time.time()
量= func.amount
log_f.write( '{} {} {} {} \ n'.format(op_time、はuserStatus ['ユーザ名']、 FUNC .__ name__、量).encode( 'UTF-8'))
戻りRESは

ラッパー戻り


DEF(登録):
'' '
注册功能
:リターン
'''
オープン( 'db.txt'、 'RT'と、コード= 'UTF-8')、RFなど。
ユーザー情報= {}
RFの行のための:
名前、PSD、= line.strip()スプリット( ':')思い出させる。
のUserInfo [名] = [PSD、INT(リマインド)]
inp_name = INPUT( '名の登録を入力してください')
inp_psd = INPUT( 'パスワード')
UserInfo IFでinp_name:
印刷( 'ユーザ名はすでに存在している')
リターンが
入力=( 'もう一度パスワードを入力してください')re_psd
inp_psd == re_psd IF:
印刷( '登録が成功')を
オープン( 'db.txt'、 'AT'で、)= 'UTF-8'をエンコードするAS AF:
af.write( '{}:{}:0 \ n'.format(inp_name、inp_psd))
他に
一貫性のないプリント('パスワード倍「)
戻り


@record_log
@認証
DEFのadd_credit():
"「」
リチャージ
:リターン:
'' '
プリント('ようこそ充電、愛する} { 'フォーマット(USERSTATUS ['ユーザ名']))
を開くと(' db.txt '' RT '=コード' UTF-を8「)AS RF :
のUserInfo = {}
RFラインのために:
名前、PSD、思い出させる= line.strip()スプリット( ':')
のUserInfo [名] = [PSD、INT(リマインド)]
一方TRUE:
量入力=(「ください入力された充電量').strip()
CONF =入力('決定する{} {}ユーザーがそれを充電し、入力Y / Yを決定し、出口N / n'.format(はuserStatus [ 'ユーザ名 ']、量))
CONF == 'Y'またはCONF == 'Y' IF:
印刷(.format(量)は'成功した再充電、充電は、{}、あなたが持っている')
のUserInfo [USERSTATUS [ 'ユーザ名'] [1] + = INT(量)
ブレーク
のelif CONF == 'N'またはCONF == 'N':
BREAK
開くと同様にWF( 'db.txt'、 '質量'、=コード'UTF-8'):
のUserInfo名にするため:
wf.write(「{}:{}:{} \ n'.format(のUserInfo [名前]、のUserInfo [名] [0]のUserInfo [名]))[1]

@record_log
@auth
DEF読み出す():
'' '
新たな機能を読み取るために
:リターン:
' ''
パス


DEFジンバブエログアウト()
'' '
サイン
:リターン:
' ''
USERSTATUS [ 'ユーザ名'] =なし
リターン


DEFメニュー():
fuc_dic = {
'0'( '登録機能'、レジスタ)、
」1' ( '充電'、add_credit )、
"2 ':('小説を読む'読む)、
3' ':('ログアウト」、ジンバブエログアウト)
}
= Trueのタグ
タグ間:
CMD = INPUT( '' '
0のアカウントが登録された
再充電
小説読むために2を
3アウトを
' '')
、INT(CMD)
IFないcmd.isdigit():
印刷( '番号を入力してください')
IF cmd.isdigit():
fuc_dic [CMD] [1]()
IF CMD == 3:
タグ= Falseの

MENU()

おすすめ

転載: www.cnblogs.com/heirenxilou/p/12578475.html