目的
pythonの練習問題を通して、pythonの記法に慣れる。
現在pyQにて学習中
問題1の仕様 文章校正ファイルを作成しよう
ファイルを読み込んで、いくつかの文章校正ルールでチェックするプログラムを作ります。
校正ルール一覧:
【ルール1: NGワード】NGワードが含まれている場合は、メッセージを表示します。
NGワード一覧ファイル input/ngwords.txt の中に入っているNGワードが含まれている場合は、"NGワード「", ng_word, "」が文章に含まれています。"と表示します。
【ルール2: 1文の長さ】1文の長さをチェックして、50文字以上の場合は”1文が長過ぎます(50文字以上)", 対象の文章)とメッセージを表示します。
【ルール3: 1文内の読点の数】1文内の読点( 、 )の数をチェックし、1文内に3つ以上の読点がある場合は"読点の数が多すぎます(3以上)", 対象の文章) と表示します。
メッセージは、「NGワード」、「1文の長さ」、「1文内の読点の数」の順で表示します。
見れる,することができる,最高の,死,障害
まるちゃんです。最近、暖かくなってきましたね。みなさん、お元気ですか。風が暖かくて着ていた服を脱いだのですが、置くところがなかったので、ずっと持っていて、重かったので手が痛くなりました。キューは、たまに死にたくなることもあるけどキューは元気です。こないだ仕事で、障害がでたんで、悲しくなって、最高のおまんじゅうをたくさん食べました。おまんじゅうを食べて元気を出しましょう。あと、後輩の面倒が見れるようになりました。成長したねってパイ先輩に褒めてもらったので、うれしくて、また、おまんじゅうを食べました。お手紙下さいね。待ってます。
回答
f = open ("input/letter.txt","r",encoding="utf-8")
letters = f.read()
f.close()
sentences = letters.split("。")
f2 = open("input/ngwords.txt","r",encoding="utf-8")
ngwordfile = f2.read()
f2.close()
ngwords = ngwordfile.split(",")
for ngword in ngwords:
for sentence in sentences:
if ngword in sentence:
print("NGワード「", ngword, "」が文章に含まれています。")
for sentence in sentences:
if len(sentence)>=50:
print("1文が長過ぎます(50文字以上)", sentence)
if sentence.count("、")>= 3:
print("読点の数が多すぎます(3以上)", sentence)
学び
含むは、対象物 in 範囲を使う
for sentence in sentences
問題2の仕様 おみくじを作ろう
おみくじを10回引いて「大吉」が出たら「n回目に大吉が出ました」と表示するプログラムを作ります。
1回も大吉が出なかった場合は、「残念でした」と表示してください。
回答
import random
candidates = ["大吉", "中吉", "小吉", "吉", "凶", "大凶"]
num = 0
numofhits = 0
results = []
for num in range(10):
result = random.choice(candidates)
num = num + 1
results.append(result)
if result == "大吉":
print(num,"回目に大吉が出ました")
if num == 10 and results.count("大吉") == 0:
print("残念でした")
学び
randomなどの関数を使用する場合は、importする
関数ごとではなく一括でimportする方法は、現状不明。
「かつ」はand
javascriptと違う部分まとめ
ブール演算子
a and b
# a も b も真であれば真
a or b
# a または b が真であれば真
not a
# a が偽であれば真比較演算子
a is b
# a が b と等しい
a is not b
# a が b と異なる
a in b
# a が b に含まれる (a, b は共に文字列、または、b はリストやタプル)
a not in b
# a が b に含まれない (a, b は共に文字列、または、b はリストやタプル)
それ以外の演算子は、
こちらがとてもシンプルでわかりやすくまとめてあります!