退屈なことをPythonにやってもらうための演習の回答[5.6][6.7][7.18.1][7.18.2]
白地です。
今日もやったので書いてみます。休みなので進みが良いですね。
5.6 ファンタジーゲームの持ち物リストへリストから辞書に移す
def display_investory(investory):
print('持ち物リスト:')
item_total = 0
for k, v in investory.items():
print( str(v) + ' ' + str(k) )
item_total += v
print('アイテム総数:' + str(item_total))
#stuff = {'ロープ': 1,'たいまつ': 6, '金貨': 42, '手裏剣': 1, '矢': 12 }
#display_investory(stuff)
def add_to_investory(investory, added_items):
for i in added_items:
investory.setdefault( i, 0 )
investory[i] += 1
return investory
inv = { '金貨':42, 'ローブ':1 }
dragon_loot = ['金貨', '手裏剣', '金貨', '金貨', 'ルビー']
inv = add_to_investory( inv,dragon_loot )
display_investory(inv)
1と2の解答をいっぺんに。例で上がっていたものを転用するのでそこまで悩みませんでした。
持ち物リストの表示はjoin使っても良いのかもしれないですが、あまり変わらないですよね…
6.7 表の表示
def print_table(list):
length = []
display = []
for x in range(len(list)):
length.append(0)
for y in range(len(list[x])):
if length[x] < len(list[x][y]):
length[x] = len(list[x][y])
for y in range(len(list[x])):
display.append("")
for x in range(len(list)):
for y in range(len(list[x])):
list[x][y] = list[x][y].rjust(length[x])
for x in range(len(list)):
for y in range(len(list[x])):
if x==0:
display[y]=display[y]+list[x][y]
else:
display[y]=display[y]+' '+list[x][y]
for y in range(len(display)):
tmp = ""
tmp = ''.join(display[y])
print(tmp)
table_data =[['apples', 'oranges', 'cherries', 'bananas'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
print_table(table_data)
リストでなんとかしようパート2ですね。。。
7.18.1 強いパスワードの検出
import re
def check_pass_strength(word):
if (len(word)) < 8 :
return False
regex1 = re.compile('[a-z]')
regex2 = re.compile('[A-Z]')
regex3 = re.compile('[0-9]')
if (regex1.search(word) == None):
return False
if (regex2.search(word) == None):
return False
if (regex3.search(word) == None):
return False
return True
なんか、もっとキレイな書き方があるかもしれないです。
7.18.2 正規表現を用いたstrip()メソッド
def fake_strip(word, option=None):
word = word.strip(option)
return word
…冗談です。
import re
def fake_strip(word, option=None):
if option == None:
option = '\\s*'
regex1 = re.compile('^'+option)
regex2 = re.compile(option+'$')
word = regex1.sub('',word)
word = regex2.sub('',word)
return word
入力された単語をチェックなしに使っちゃいますが、とりあえず勉強としてはひとまずこれで…
この記事が気に入ったらサポートをしてみませんか?