Pythonでmakefileを作る|女子大生エンジニアの備忘録 #3

こんにちは、鈴です。

 

今回はPython言語でのmakefileの作成方法についてです。

 

前回の記事はこちらから↓

 

riririririn.hatenablog.com

 

 

前置きは省略して早速本題に行きましょう。

 

 

makefileとは

ターミナル(コマンドプロンプト)でのコマンド入力を自動化できるファイルです。

 

実行したいファイルがあるディレクトリに"makefile"という名前のファイルを作成し、その中にコマンドを記述するだけで一括で実行できるので、非常に便利です。

 

本来はC言語のようにコンパイルが必要な言語において利用されていますが、Pythonでも作成することができます。

 

基本的には

$ make (option)

と打ち込むことで実行できます。

 

option内に特定のワードを打ち込むことで自動で行うコマンドを分岐させることができます(後述)。

 

makeだけでも実行可能です。

 

 

書き方の例

ここからはコード形式で書き方の例を示します。

コメントで概要は書いてありますが、見にくいかもしれないので箇条書きで同じ説明を書いておきます。

 

f:id:riririririn:20211128001258p:plain

Pythonで作成したmakefile
  • Pythonと同じく#でコメントを書くことができます
  • 変数名?= で入力を受け取ることができます
  • $ make VER=10 EX=2 のような形式で記述します
  • $ make の場合はmakefile内に記述しているデフォルトの値になります
  • 変数名= で入力を受け取らない変数を作ることもできます
  • ${EX}の形式でEXの値を埋め込むことができます
  • 変数の中に埋め込むこともできるので結構便利です
  • $ make のみを打ち込むとdefault: 以下のコマンドが実行されます
  • 実行コマンドを分岐させるには.PHONY: 以下に分岐に使用する名前を書きます
  • $ make question と記述することでquestion: 以下のコマンドが実行されます

 

ファイル構造

f:id:riririririn:20211128001139p:plain

ディレクトリ内の構造

上の画像を見るとファイル構造がわかるようになっているので、makefileの記述と照らし合わせて見てもらえればどのように実行しているかわかると思います。

 

 

余談

 

卒業研究でシステム構築に取り組んでいるため、そのテストにmakefileを使用することでかなり作業を効率化できているな〜と感じます。

 

Pythonmakefileを作る記事が検索であまりヒットしなかったため(私が怠惰なだけなのかもしれませんが・・・)試行錯誤してこのような形になりました。

 

いかにして本質的でない作業の負担を減らすか、が効率化の鍵だなあとしみじみ。

 

一人前のエンジニアになるにはまだまだ時間がかかりそうです。

 

次の記事はこちらから↓

 

riririririn.hatenablog.com

 

 

では。

 

LaTeXで記号の上に文字を表示させる|女子大生エンジニアの備忘録 #2

こんにちは、鈴です。


情報系専攻の大学4年生で、現在卒業研究に追われています。

卒業論文にせよ何にせよ、文書はLaTeXで書かなくてはいけないの、何なんでしょうね?

前の記事はこちらから↓

riririririn.hatenablog.com


では早速本題に移りましょう。


本題


今回の備忘録はタイトルの通り、LaTeXで何かの記号の上に文字を表示させる方法です。


  • \overset{上に表示させたい文字}{下に表示させたい文字}


このように書き込むことで記述できます。注意点としては、


  • 数式と同様の扱いのため$$$で囲む


  • 中にテキストを挿入したい場合は\text{}形式で記述する


くらいですかね。



余談


文系の友人に情報系っていうとWordやExcelの達人だと勘違いされるのは私だけですかね?


むしろそういう一般的なツール全然使わなさすぎて就職してから周りの人たちにおいていかれそうで心配です。


次の記事はこちらから↓

riririririn.hatenablog.com


では。



PythonでExcelに書き込みができるらしい|女子大生エンジニアの備忘録 #1

こんにちは、鈴です。

 

ただいま卒業研究真っ只中の大学4年生です。(言わずもがなピンチ)

 

情報系専攻なのでPythonを使ったシステム構築を行っています。

 

 

備忘録とついた記事はまさしく言葉通り、メモ書き、雑記的な記事にするつもりなので、あとでちゃんと整理した記事をあげるつもりです。

 

整理した記事が上がったらここにリンクを貼りますね。

 

 

本題

 

 

これはPythonExcelへの出力を行う方法があるらしいっていうメモ記事です。

 

ざっくりこんな感じ。

 

f:id:riririririn:20211124233146p:plain

PythonExcelに書き込むプログラム

 

これでフォルダ"ver25"にあるExcelファイル"result.xlsx"のシート"Sheet1"のセルA1、A2にそれぞれ文字列が記述されます。

最後のセーブは忘れずに。

 

スクリーンショットミスってしまいましたが、このテキストの上に import openpyxl というおまじないを記述してopenpyxlを使えるようにしてください。

 

 

余談

 

だいたい予定していたツールの作成が済んだので、動作確認のテストをしようと思ったのですが、想定可能な全パターンを手動でテストして記録しようと思ったら莫大な労力を要することが明らかになりました。

 

よって、全て自動化できるように色々試行錯誤中です。

 

エンジニアはある程度怠惰な方が優秀になれるらしいですね。

 

次の記事はこちらから↓

 

riririririn.hatenablog.com

 

 

では、また。

 

 

メルカリで値段交渉された時のコツ | 女子大生の副業メモ #1

こんにちは、鈴です。

 

9月ごろから本格的にメルカリを始め、11月現在で40点ほどの商品を販売することができました。

 

その経験を踏まえて、メルカリでお値段を交渉された時のコツや対処法、チェックすべき項目をいくつかご紹介します。

 

早急に対応しなくてはならない場合は、目次のみチェックしてメルカリサイトにお戻りくださいませ。

 

 

 

 

お値引きは元の販売価格の1割まで

 

これはメルカリ上の相場として認識されている価格です。

 

これより高い金額のお値引きを要求された場合は、以下のようなユーザーである場合があります。

 

  • 値段交渉の相場を知らないメルカリ初心者
  • こちらが初心者なのを見抜いてカモにする悪徳ユーザー
  • 単に強欲なメルカリ乞食

 

「メルカリ乞食」というのは積極的な値段交渉を行うユーザーのことを指す言葉らしいです。筆者が命名したわけではありません。

 

どのようなユーザーかどうか、コメントだけではわからないことも多いです。そんな時は、次のアクションを試してみてください

 

 

コメント上のユーザーアイコンをタップする

 

値段交渉されたユーザーのアイコンを押すと、そのユーザーのホームを覗き見ることができます。

 

その場合、以下の点を確認してください。

 

  1. 評価一覧
  2. プロフィールの説明欄
  3. 出品している商品の個数と評価数
  4. 出品中の商品の詳細

 

順に詳しく説明していきます。

 

 

1. 評価一覧

 

評価一覧には、過去に取引したユーザーの評価が過去100件まで残っています。

 

その件数があまりにも少ない場合、初心者であるためにお値引き交渉の相場を理解していない可能性が高いです。

 

また、ここに残念な評価が残っている場合は、どのようなコメントかどうかも確認しましょう。

 

 

2. プロフィールの説明欄

 

ここにも歴の差が出ます。事細かにルールを記載しているタイプの人は、「お値引き交渉不可」「確認次第コメント削除します」などの強気な内容が記されている場合があります。

 

プロフィール欄に強い言葉が並んでいるユーザーの場合、お値引き交渉に応じてもトラブルになる可能性があります。

 

慎重に取引を進めてもいいですが、トラブルを避けるためにコメントをスルーしてしまうのも手だと思います。

 

大前提として、今値引きをしなくては売れないわけではないということを忘れないでください。

 

 

3. 出品している商品の個数と評価数

 

出品している商品の個数が少ないからといって初心者ユーザーだとは限りません。

 

メルカリには現在、取引終了から2週間経過後にはその商品を削除できる機能があります。

 

評価数が多く、かつ購入者からの評価コメントが多い場合は、取引が終了した商品を削除しているだけで初心者ではありません。

 

 

 

4. 出品中の商品の詳細

 

コメントしてきたユーザーがどのように出品しているかもユーザーを知る指標になります。

 

例えば、自分はデパコスを安値で出品していてお値引きを要求されたのに、そのユーザーはプチプラコスメを高値でお値引き不可で出品している、など。

 

このようなユーザーは自分の利益しか考えていない場合があるので、取引中にトラブルに発展する場合もあります。

 

取引する場合には慎重な対応を心がけてください。

(筆者はこのようなユーザーとの取引はなるべく行わないようにしています。)

 

 

 

ここから先は、対処に困りそうなコメントをいくつかあげて、対処例をご紹介します。

 

 

 

「お値引き可能でしょうか?」

 

これ、一番困るタイプのコメントですよね。。具体的な金額を提示せずに可否だけ尋ねられると、コメントのやりとりの負荷が大きく、出品者に負担がかかります。

 

返答例は以下の通りです。

 

「××円(例:1割引した価格)にお値下げ可能です」

 

お値下げしても良いと考えている、またはある程度お値下げ分も考慮して価格設定をしている場合は、このようにコメントを返すと良いでしょう。

 

 

「こちらの商品はお値下げ/出品したばかりで現在お値下げは考えていません」

 

値下げをしたくない場合、またはその手前にお値下げを既に行っている場合はこのようなコメントがベストだと思います。

 

少し強気な発言にも見えますが、このようなコメントを残すことで、現在の価格で納得して即購入してくれるユーザーが現れる場合もあります。

 

 

「お気持ち程度ではありますが、××円(端数)程度であればお値下げ可能です」

 

あまりお値下げしたくないけれど、確実に購入に結びつけたい場合は、このようなコメントを返すと良いでしょう。

 

 

次の例に行きます。

 

「××円で即決させていただきます」

 

これです。これもよくありますね。。。

 

筆者的には横柄なユーザーだな、と思います。そもそもお値引きを要求している時点で即決ではありません。

 

返答例は以下の通りです。

 

「申し訳ありませんが、ご要望にはお答えいたしかねます」

 

正直、これがベストだと思います。

 

下手に取引してクレームをつけられて自分の評価欄に傷がつくのが一番困るからです。

 

ですが、それでも取引したい!という方は、一つ目の例と同様の方法で対処すると良いと思います。

 

 

最後の例に行きます。

 

(一度お値引きを断った後)「××円ではいかかでしょうか(><)」

 

食い下がってくるパターンですね。

 

この場合は先ほど紹介したようにユーザーのプロフィール欄などを先に確認しておくと良いでしょう。

 

そうすると、本当にその商品が欲しくてお金がない人か、メルカリ乞食を見分けることができます。

 

筆者がコメントを返すとしたらこうです。

 

「送料等もありますので、××円(端数お値下げ)が精一杯です」

 

どうしようもない理由があるので、これ以上は無理だけど、譲歩をしているという姿勢を見せるようなコメントです。

 

今までの経験上一番トラブルになりにくい方法かな、と思います。

 

 

まとめ

 

いかがだったでしょうか。

 

全てが即購入でスムーズに取引終了すると一番良いと思いますが、取引数が増えるとどうしても色々なトラブルに遭遇するものです。

 

トラブルに遭遇した時は、「一つ対処法を学んだ」と、プラスに捉えてめげずに頑張りましょう!

 

みなさんが良いメルカリライフを送れますように。

 

 

 

階乗|Python|初心者と歩くプログラミング上達への道

こんにちは、鈴です。

 

私はコンピュータ系を専門とする大学1年生です。

 

現在未経験からプログラミングを学んでおり、このブログはそんな私の備忘録であるとともに、同じような状況の方の手助けにもなればいいなという思いがあります。

 

前回の記事はこちら⬇︎

 

riririririn.hatenablog.com

 

 

では、今回のテーマは

 

階乗

 

です。

 

外部から入力された自然数に対して、その数の階乗を求めるプログラムを作成しようと思います。

 

それでは早速いってみましょう!

 

一度自分で解いてみるもよし、この後のプログラム例をみるもよしです!

 

<目次>

 

 

プログラム例

f:id:riririririn:20190108092332p:plain

階乗 Python プログラミング例

 

私の書いたプログラムはこんな感じです。

 

何をやったか簡単に説明すると、

 

①任意の整数を入力してもらいます。

 

②入力された数字が2以上の場合、はじめに0でおいた変数sumに1を足し、2から入力された数字iまでを繰り返しかけてsumをどんどん更新していき、

iまでかけ終わったらsumを出力します。

 

③入力された数字が1の場合、そのまま1を出力します。

 

④入力された数字が②、③以外の数字である場合、"error"と出力します。

 

使った手法

続いて、このプログラムで使った手法について補足していきます。

 

if, elif, else 文

elifを使うと、3つ以上の条件分岐が可能になります。

 

今回は3つですが、elifはいくつも並べることができるためです。

 

ですから、言葉で説明するとしたら

 

「この条件の時〜(if)、この条件の時〜(elif)、・・・、それ以外は〜(else)」

 

という形のイメージになります。

 

for j in range(2,i+1):

これは、2からi(入力された2以上の任意の数字)の間にある任意の文字jについて・・・

 

という表現です。

 

各要素は必ず1回ずつ利用されます。

 

気をつけて欲しいのが、rangeは「1つ目の数字以上、2つ目の数字未満の整数に対して以下の動作を繰り返す」というものなので、

 

iまで行いたい場合は2つ目の数字にjを設定することです。

 

まとめ

 

いかがでしたか?

 

もっと簡単に書ける!という人もいるかもしれません(その場合はコメント等で教えていただけると筆者非常に喜びます)が、参考になっていれば幸いです。

 

プログラミング初心者にはわからないことが多すぎて結構大変ですが、

一緒に頑張っていきましょう!

 

閲覧ありがとうございました。

 

 

追記

この記事を書いていて気づいたのですが、sumをもともと1でおいても問題ないですよね(笑

 

f:id:riririririn:20190323231254p:plain

 

謎に0で始めないほうがスッキリします。

あえてこちらは追記として元のプログラムは残しておきます(笑 

 

あるあるですが、出来上がってから修正をしていくとプログラムを書く前は想像できなかったくらいあっさりとしたプログラムになることがよくあります。

 

できるだけシンプルに汎用性、互換性のあるプログラムを書ける人が優れたプログラマーだと思うので、もっと頑張らないとなあ、、って感じですね。

 

総和|Python|初心者と歩くプログラミング上達への道

こんにちは、鈴です。

 

私はコンピュータ系専攻の学部1年で、大学からプログラミングをはじめました。

 

このブログは私の備忘録であり、同じように未経験からPythonを学んでいる方の参考になればいいなと思っています。

 

学校の課題等が忙しく、久々の更新となってしまいました。

 

私の話はさておき、今回も早速行きましょう!

 

 

今回のテーマは、

 

任意の数字を入力し、1からその数までの総和を求める

 

ことです。

 

今回のプログラムでは、1より小さな値が入力された場合はエラー表示することとします。

 

 

一度自力でやってみるもよし、私の書いたプログラムをみて納得するもよしです。

 

 

<目次>

 

 

プログラム例

f:id:riririririn:20190102013607p:plain

総和 Python プログラミング例

 

何をやったか簡単に説明して行きます!

 

5、6行目は入力コマンドですね。

 

これで入力された値を整数型で保存しています。

 

 

私の計画は、

 

リストに1から入力された数字までを全て突っ込み、そのリストの総和を求めることによって総和を出す

 

というものでした。

 

よって、

 

①空のリスト作成

 

 今回は数字を突っ込むのでリストの名前を"num"としました。

 (この辺は自分の好みで決めてください笑)

 

 

②入力された値が1以上であるか

 

 これはif文を利用して記述しました。

 

 

③1以上であれば、1から入力された値までの間でリストに数字を追加

 

 数字の置き方で混乱してくるかもしれませんが、iまでの範囲にあるjという数字について考えるfor文になっています。

 文字が増えると少しややこしくなりますね。

 

 ①で作った空のリストにfor文の条件に該当する数字が1から順番に追加されるようになっています。

 

④sum_nという変数として、numの総和を格納

 

 該当する数字を全てリストに追加した後、リスト自体の総和を求め、その値を"sum_n"として格納しました。

 

 

⑤出力処理

 

 以上の処理によって得た総和をprint関数で出力します。

 

⑥入力された値が1より小さかった場合の処理

 

 ②から⑤までは全て同じif文の中に収められた処理です。

 if文の条件に該当しない数字(1よりも小さい数字)が入力コマンドで入力された場は、今回はelse文を利用してエラー表示する仕様にしました。

 

 

以上が私のプログラムの説明になります。

 

もっといいプログラムの書き方もあるとは思いますが、とりあえず動作確認して問題なかったので、大丈夫だと思います!笑

 

 

使った手法

 

続いて、このプログラムで使った物をかき並べて行きます。

 

list = [ ]

空のリストを作成する処理です。

 

前回のプログラムでも出てきましたね。

 

if・else文

条件に合わせて処理を変更します。

 

else文はif文内の条件に該当しない物を全て処理してくれるので使い勝手がいいですね。

 

range(i+1)

これは使ったものの説明というよりは補足なのですが、rande(数字)で範囲を特定する場合、その範囲は0から()に記述した数字−1までの値になります。

 

今回は()内に入力した値まで全て利用する必要があったので、rangeの()内がi+1になっています。

 

sum(list)

これは、リスト内の要素を全て足し合わせる処理をします。

 

 

まとめ・余談

 

いかがでしたか?

 

プログラミングはただだらだら長く書けばいいわけじゃないってことが最近わかってきました。

 

いかに簡単に一意的な文でコンピュータに命令を出せるか、が大事なんですよね。

 

そのためには、初見の人にも何がしたいのかがすぐに伝わるようなプログラムを書く必要があります。

 

少しずつではありますが、この場を通して人に伝わるプログラムを意識することで自分の能力が向上すればいいなあ。。と思っています。

 

 

最近、大学ではC言語に取り組むようになってきました。

 

進度が早すぎて、未経験の人間には難しすぎるような課題も多いです。

 

正直つらいですが(笑)、そのぶん早く能力が身につくはず!とプラスに考えて食らいついております。

 

同じようにプログラミングに取り組んでいる方、一緒に頑張って行きましょうね。

 

Pythonの記事がある程度溜まったら、C言語についての記事も書いていこうと思ってます。

 

また、時間に余裕がありましたら閲覧していただけると幸いです。

 

 

最後まで読んでくださってありがとうございました!

 

 


 

失楽園 “Paradise Lost” って?|毎日を少し豊かにする雑学

こんにちは、鈴です。

 

今回の雑学ブログは、ジョン・ミルトンの『失楽園』がテーマです!

 

皆さんも耳にしたことがあるのではないですか?

 

では、早速いってみましょうか!

 

 

<目次>

 

失楽園とは?

イギリスの詩人ジョン・ミルトンが、旧約聖書『創生期』で語られている話を膨らませて執筆した叙事詩です。

 

ジョン・ミルトンの最高傑作と言われており、また、英語で書かれた中で最高の叙事詩とされています。

 

内容は、地獄に落ちたサタンが禁断の木の実をイブに食べさせ、罪を犯したアダムとイブが楽園から追放されるというものです。

サタンは、己のことを地獄に落とした神に復讐するためにアダムとイブを堕落させました。

人間は、神様が被造物のなかで一番大切にしていた存在であったからです。

 

サタンの計画により楽園を失ったアダムとイブは、現世の重荷を背負いつつ、キリスト教徒となり幸福を求めて歩み始めます。

物語はここまでの一連の流れが壮大なスケールで書かれています。

 

失楽園では、サタンがもっとも複雑な心境で、魅力的な人物として描かれています。

 

「天国で奉仕するくらいならば、地獄で君臨する方がいい」

 

など、サタンには多くの名言があり、失楽園を読んだ人の中にはサタンに好感をもつ人も少なくありません。

 

文学上とはいえ、

「ミルトンはサタンに肩入れしているのではないか」

と批判した人々もいたそうです。

 

失楽園』には続編があります。

『復楽園』という名で新約聖書に登場しており、こちらではキリストがサタンの誘惑に打ち勝つことで、楽園が再び戻ってくるという内容になっています。

 

 

出てきた用語について

この記事内で出てきた言葉で引っかかりそうなものを集めてみました。

 

ジョン・ミルトン

旧約聖書

旧約聖書は、ユダヤ教聖典であるタナハを元に書かれたキリスト教聖典です。

 

現在はキリスト教の正典とされていますが、本来はユダヤ教の正典です。

なぜなら、ユダヤ教キリスト教の母体であるからです。

ユダヤ教キリスト教は、全く別の宗教というわけではありません。

 

ちなみに、旧約聖書の「約」には、「契約」という意味が込められているそうです。

翻訳の「訳」だと思っていた方、いませんか?(私と同類ですよ)

 

『創生期』

旧約聖書の中に『創生期』というものがあります。

 

『創生期』には、世界中の万物、人間、イスラエル民族の起源が述べられています。

 

叙事詩

叙事詩は英雄詩とも呼ばれ、一般的には歴史的事件や伝説、英雄の事績などについてある程度の長さで書かれた詩です。

 

その内容の多くは民族や社会集団において語り継がれるべきと考えられたもので構成されています。

代表的なものとしては、失楽園の他にはギリシアホメロスの「イリアス」「オデュッセイア」などがあります。