LoginSignup
0
0

More than 3 years have passed since last update.

[python]文章校正とおみくじの2つのミニプログラムを作ってみる

Posted at

目的

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文内の読点の数」の順で表示します。

input/ngword
見れる,することができる,最高の,,障害
input/letter.txt
まるちゃんです最近暖かくなってきましたねみなさんお元気ですか風が暖かくて着ていた服を脱いだのですが置くところがなかったのでずっと持っていて重かったので手が痛くなりましたキューはたまに死にたくなることもあるけどキューは元気ですこないだ仕事で障害がでたんで悲しくなって最高のおまんじゅうをたくさん食べましたおまんじゅうを食べて元気を出しましょうあと後輩の面倒が見れるようになりました成長したねってパイ先輩に褒めてもらったのでうれしくてまたおまんじゅうを食べましたお手紙下さいね待ってます

回答


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 はリストやタプル)

それ以外の演算子は、
こちらがとてもシンプルでわかりやすくまとめてあります!

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0