sagantafのブログ

なんでも自分の思ったこと、経験したことを書いて生きます。

【Python】倍数チェックプログラムを作成してみた

現在、オライリー社の「Pythonからはじめる数学入門(Amit Saha著)」を読んで数学とPythonを勉強しています。
 
この本には各章の末尾に問題が用意されています。
その各問題にアレンジを加えてみました。
 
 問題1−1は以下のような内容でした。(問題文は大幅に要約しています。)
 
問題1−1 奇数偶数自動判別プログラム
 
「入力された数が奇数か偶数かを判定せよ。またその入力された数とその後に9つの奇数または偶数を続けて表示せよ。なお、整数ではない数値が入力されたときはエラーメッセージを表示せよ。」
 
 
この問題自体は、if文でa % 2 などを判定して、rangeで9つprintすればよいと思いますが、これを以下のようにアレンジしてみました。
 
「1番目に入力した数値が2番目に入力した数値の倍数かどうか判定せよ。また、
入力が整数以外だった場合には、エラーとして終了するのではなく、整数が入力されるまでinputし続けられるようにせよ。」

 

どうせだから実用的にするために、想定している値が入力されるまでinputできるようにしたい、と思い、こんな問題にしてみました。

 

自分なりの解答は↓です。

 

"""
Check 1st input number can be divided by 2nd input number.
"""
def check(first,second): #倍数判定する関数作成
    if first % second == 0:
        print("{0} can be divided by {1}.".format(int(first), int(second)))
    else:
        print("{0} can NOT be divided by {1}.".format(int(first), int(second)))
 
 
if __name__=="__main__":
    while True:
        f = input("Please enter 1st number:")
        try:
            f = int(f)  #inputはstr型で格納されるのでintに変換
            break     #intに変換できればwhileループを抜け出す
        except ValueError: #intに変換できない場合は、ValueErrorが発生する
            print("Please enter an integer.") #breakがないので、ループの最初に戻る
 
 
    print("-----")
    while True:
        s = input("Please enter 2nd number:")
        try:
            s = int(s)
            break
        except ValueError:
            print("Please enter an integer.")
 
    check(f,s)
 

 

倍数判定は、「first % second == 0」で実現してます。
 
また、整数が入力されるまでinputを表示させるために、「while True と break」「tryとexcept」を組み合わせて実現しました。
 
これで、整数が入力されたら倍数チェックを実施し、小数や文字列が入力されたらもう一度inputを促す文言が出力されるようになりました。
 
 
#倍数判定
#入力エラー処理

【Python】リスト・辞書・タプルのコピー

要約

リストや辞書をコピーして別のものとして使いたい場合は、copy()メソッドでコピーする必要がある。タプルはコピーできない。
 

解説

普通にリストを新たな変数に代入しても、以下のように別のリストとしては扱えない。
 
>>> a = [1,2,3]
>>> b = a
>>> a[2] = 9     ←リストaに更新をかける
>>> a
[1, 2, 9]
>>> b
[1, 2, 9]       ←リストbも更新されてしまっている
  
リストbはリストaと同じ場所を参照するだけなので、リストaが参照しているデータを更新するとリストbが参照しているデータも更新されてしまう。
 
 
そこでcopy()メソッドを使う。
 
>>> a = [1,2,3]
>>> b = a.copy()   ←(リスト).copy() という使い方
>>> a[2] = 9
>>> a
[1, 2, 9]
>>> b
[1, 2, 3]       ←リストbは更新されていない
 
 
copy()を使ってリストbを設定することで、別のリストとして扱えるようになる。
 
 
辞書も同様。
>>> d1 = {"a":1, "b":2, "c":3}
>>> d1
{'b': 2, 'a': 1, 'c': 3}
>>> d2 = d1.copy()          ←(辞書).copy() という使い方
>>> d2
{'b': 2, 'a': 1, 'c': 3}
>>> d1['b'] = '99'
>>> d1
{'b': '99', 'a': 1, 'c': 3}
>>> d2
{'b': 2, 'a': 1, 'c': 3}          ←辞書d2は更新されない
 
 
タプルをコピーしようとすると、以下のようにエラーになってしまった。
タプルはimmutable(変更不可)なオブジェクトだから、copy()メソッドが用意されていないらしい。
(リストと辞書はmutable(変更可能)なオブジェクト)
 
>>> t1 = (1,2,3)
>>> t1
(1, 2, 3)
>>> t2 = t1.copy()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'copy'
     ←タプルはcopyメソッドを持っていない、というエラーになる。
 
 
#リストのコピー
#辞書のコピー
#タプルのコピー

【Python】シンプルまとめ( if・else )

 

if文

if文の書き方は以下。かっこは必要ない。
 
 構文)
if 条件文:
    実行文1
    実行文2
 
 
例)
num = 7
if num > 5:
    print(“Bigger than five”)
 
 
実行結果)
"Bigger than five"
 
 
インデントが必須であることに注意。
インデントでif文の中にあるか、外にあるかの判断がされる。
そのため以下のようにインデントをしないと、インデントが必要になることをちゃんと示してくれる。
 
例)
num = 7
if num > 5:
print(“Bigger than five”)
 
 
実行結果)
File "Main.py", line 5
print("Bigger than five")
^
IndentationError: expected an indented block
 
 
 
if文のネストも他の文と同じように記述可能。
 
例)
num = 7
if num > 5:
    print(“Bigger than five”)
    if num > 6:
        print(“Bigger than six”)
 
 
実行結果)
Bigger than five
Bigger than six
 
 

if-else文

 構文)
if 条件文:
    TRUEの場合
else:
    FALSEの場合
 
 
elseの後ろにも ”:” (コロン)が必要なことに注意(ハマったので…)
同じくネスト可能。
 
例)
num = 15
if num = 10:
    print(“Number is 10”)
else:
    if num > 10:
        print(“Number is bigger than 10”)
    else:
        print(“Number is smaller than 10”)
 
 
実行結果)
Number is bigger than 10
 
 
ただ、何度もif-elseを記載してネストしていくのも面倒。。。
ということで elif 文を使う。
 
例)
num = 15
if num = 10:
    print(“Number is 10”)
elif num > 10:
    print(“Number is bigger than 10”)
else:
    print(“Number is smaller than 10”)
 
 
実行結果)
Number is bigger than 10
 
 
 
if文、else文の基本的な使い方は以上! 

ビジネスマンとしてバリバリ仕事をする上で、気にかけている「体に良い食べ物リスト」

 
タイトルのとおり、「体に良い食べ物リスト」として、
テレビやネットで見た情報を「ビジネスマンが必要な」という視点でまとめました!
 
 
①目と脳に効くリスト、②疲れに効くリスト、③ドーパミンを出して精神的に回復するリスト
 
の3種類を紹介します。
 
 
 
 
①目と脳に効くリスト
 
オフィスワーカーだとPCを使って仕事をすることが多くなるため、目をどうしても酷使することになりますよね。
 
また、仕事だけではないが、難しい問題に取り組むとかなり脳が疲れてきます。
 
 
そんな時に摂取したい食べ物リストがこちら↓
 
 
 
〜目と脳によい食べ物リスト!〜
 
 ・キャベツやほうれん草などの青菜
 
 ・卵
 
 ・サケ、イクラ、マグロ、ニシン
 
 ・カレー
 
 ・カシス、ブルーベリーなどのベリー類
 
 ・チョコレート
 
 ・ナッツ類
 
 ・お茶
 
 
 
前菜から主菜、デザートまで揃ってます。
 
これで献立を考えられちゃいますよ。
 
 
 
 
 
②疲れに効くリスト
 
日本のビジネスマンは世界の中で、とてもよく働くと言われています。
 
長い時間残業して、疲れたわぁぁぁーー!って叫びたくなることも多いとおもいます。
 
 
そんな疲れを回復するための食べ物がこちら↓
 
 
 
疲労回復になる食べ物リスト!
 
 ・鶏むね
 
 ・豚もも
 
 ・カツオ
 
 ・マグロ
 
 
 
こちらはなんだか主菜になりそうなものばかり。
 
 
 
これらには、渡り鳥が多くもっているというイミダペプチドという成分が含まれていて、これが疲労回復になるんです。
 
 
 
 
「目と脳によい食べ物リスト」と組み合わせると効果抜群ですよ!
 
 
 
ドーパミンを出して精神的に回復するリスト
さて最後は、体の物理的な回復ではなく、落ち込んだときなど精神的に回復する食べ物リストです。
 
それは何か・・・(ってすでに書いちゃってますが)
 
ずばり、ドーパミンを増やしてやる気をアップ!です。
記憶力や集中力もあがります。
 
とはいっても、ドーパミン自体は脳から分泌される脳内物質なので摂取するものではありません。
 
ドーパミン自体を摂取するのではなく、「チロシン」というアミノ酸の一種を摂取することで、ドーパミンの分泌を高める方法を取るんです。
 
 
そんなチロシンが多く含まれている食べ物がこちら↓
 
 ・かつお
 
 ・納豆
 
 ・たけのこ
 
 ・ゴマ
 
 ・アーモンド
 
 ・アボカド
 
 ・バナナ
 
 ・乳製品
 
 
このチロシンが含まれる食べ物に加えて、緑茶を飲むことで、緑茶に含まれるテアニンがドーパミンの濃度をアップさせてくれます!
 
 
 
 
 
 
 
以上、ビジネスマンとしてバリバリ仕事をする上で、気にかけるべき「体に良い食べ物リスト」でした。
 
 
結構な種類がありますので、3種類の中から毎日ひとつずつ食べれば、毎日元気に仕事をすることができると思いますよ。
 
ぜひ気にしてみてください!
 

モチベーションを持続させるには

約5年間働いてきて、
モチベーションを高め続けるには、以下の点を実践することが大切だと感じた。
 ・尊敬する人をみつける。近い人ほどよい。
 ・人格を変えて自分が複数人いるようなイメージで働く。
 ・やる気によって左右されないようある程度マニュアルで動く。
 ・競争相手を強くイメージする。
 ・ゲーミフィケーションを取り入れる。
 ・雑に、だらけて、を続けると負のスパイラルにはまってしまうことを意識する。
 ・宇宙のでかさ、自分のちっぽけさを認識する。
 

FXで学んだ用語集

FXをやってみよう、と思って本やWEBページを見て、学んだので用語をまとめておきます。順次追加していく予定です。
(そのうち見やすくもしていく予定・・・)
 
 
トレンド:
市場の方向感のことを表す。FXの基本は、この方向感を予想し通貨を売買して利益を上げること。
円安ドル高が進んでいるときには、円を売ってドルを買い、円安がある程度進んだところで、ドルを売れば利益になる。
最初は円を基本にして取引すると分かりやすい。自分が入金した円でドルを買っておき、ドルが高くなったら売れば良いわけだから。
古本屋で安く本(ドル)を買って、値が上がったところで本(ドル)」を売る。このとき貰えるのは円、ということと同じ。
 
レンジ相場(ボックス相場、もみ合い相場):
一定の値幅で上下を繰り返す局面のこと。がーっと上がったり下がったりせずにゆらゆら上下の動きを繰り返している時間帯。
 
スプレッド:
売り(Bid)と買い(Ask)の値幅がFXでは手数料として持っていかれる。この値幅=手数料をスプレッドと言う。スプレッドは通貨のペアによって異なる。
米ドル、円、ユーロの組み合わせは狭いスプレッドで取引ができ、それ以外の通貨はマイナーになるほどスプレッドが広くなるのが特徴。
 
通貨ペアの金利差を日割りで毎日受け取れるという、利息のようなもの。
金利の低い通貨を売って金利の高い通貨を買った場合にプラスの利息となるが、逆の場合はマイナスの金利となり支払わなくてはならなくなる。
 
FXはレバレッジがあるから危ない、とよく聞きますが、「レバレッジを高くかければ危ない」が正しくて、レバレッジを少なくすることもかけないこともできます。
 
ロング・ショート:
外貨を買うことをロング、外貨を売ることショートという。
 
エントリー:
ロングかショートで新規注文をすること。ポジションを持つこと。
 
ポジション:
自分の決済していない状態の通貨のこと。「建玉(たてぎょく)」ともいう。
 
決済:
もっているポジションを精算すること。

下っ端の仕事の付加価値の付け方 〜「藤原先生、これからの働き方について教えてください。」を読んで〜

 

これからの人生を考えていこうということで、
 「藤原先生、これからの働き方について教えてください。(藤原和博 著、ディスカバー・トゥエンティワン出版)」
という本を読みました。
 
著者の経験をもとに、
今までの日本社会(成長社会)におけるキャリアの考え方と 
これからの日本社会(成熟社会)におけるキャリアの考え方を比較し、
いかに自分がレアな(希少価値の高い)存在になれるか、
が書かれていました。
 
今回はその書評を、、、ではなく、
タイトルにあるように「下っ端の仕事の付加価値の付け方」 についての内容です。
 
 
この本の中には、仕事の取り組み方について、以下のように書かれていました。
 
誰にでも共通していることが、1つあります。
今の仕事を漫然と続けていても、付加価値は上がらないということ。
  ーP.25 ORIENTATION 1 「自分の仕事の付加価値」を計算する より
 
誰かに与えられて行うことは、仕事ではなく”作業”にすぎません。自分から見つけ出して、取り組むものを”仕事”といいます。
 ーP.191 LECTURE 4−2 21世紀の働き方を体現する「自分ベクトル」の作り方 より
 
上司から与えられた仕事を、ただただ”こなす”だけでは、目の前の仕事は片付いても、自分の血肉にはならないということです。
 
たしかに、誰でも入社したての頃は、上司や先輩に与えられた仕事をひたすら片付けることばかりだったと思います。
しかしその状態のまま「漫然と」働くと、ふとそれまでの仕事を振り返った時に、「私って何をしたんだっけ?」という感覚に苛まれます。(私自身そうなりました…)
そしてただただ与えられたことだけに反応するロボット野郎になってしまいます。
 
では、そんな感覚に苛まれず、ロボット野郎にならないように、
 
 取り組む仕事を自分から見つけ出すにはどうするか。
 ただの下っ端の立場で、どう”仕事”を探してくるか。
 
 
この点がわからないことには、対処のしようがないのですが、本書には書かれていませんでした。。
 
「そこは自分の頭で考えろ!」と言われる気もするので、自分なりに考えてみました。
 
3つ浮かんだのでそれぞれ書きます。
 
 

 

1つめ 仕事はどこからやってくる?

 
与えられる仕事があるということは、その仕事を誰かが見つけ出している人がいるということです。
 
「その人がどうやって仕事を見つけてきているのか」を考えてみたり、あるいは直接聞いてみたりすることで分かることがあるんじゃないか、と。
 
そして、上司に仕事を与えられた時には、「なぜこの仕事が必要なのか」を考え、上司の意図の探ることで、付加価値をつけて結果を残すことができます。
 
 
例えば、「先月のサーバの稼働状況をお客さんに説明するから、この資料のようにまとめておいて」と言われたとします。
 
ここでただ言われたとおりにまとめるだけでは、著者の言葉でいう”作業”になってしまいます。
 
そうではなく、「どの立場のお客さんに説明するのか」「何の目的で説明するのか」を明確にし、その回答に沿ったまとめ方にするのです。
 
システムのことをあまりよく分かっていない人に説明するならば、言葉をわかりやすく丁寧に記載する。サーバに詳しい人に説明するならば、ある程度言葉を端折って、少し込み入った話も混ぜ込む、といった具合に。
 
そうすることで、上司はお客さんに格段に説明しやすくなり、それが自分なりの「仕事の付加価値」になると思います。
 
 
ただまとめるだけでは、とてもつまらないタスクですが、仕事を与えられた意図を汲み取り、付加価値をつけて返す。
つまり、付加価値をつける、という仕事を見つけ出して、取り組んだことになります。
 
こうすることで自分のしていることが、”作業”から”仕事”へと変わります。
 
(BtoBのシステムの仕事をしている身なので、近い職じゃない方には、イメージしづらい例ですみません…)
 
 

2つめ いつも同じことの繰り返し、を無くす

 
誰でも働く上で、いつも同じことの繰り返しになる仕事が少なからずあると思います。
 
ここに実は付加価値をつけるチャンスがあります。
同じことの繰り返し、ということは、機械化しやすいということです。
 
ツールを自分で作ったり、既製品を導入したりして、同じことの繰り返しを自動化する。
これこそまさに自分で見つけ出した仕事になり、組織に貢献したといえるでしょう。
 
そして何より自分が楽になり、他の仕事に時間をかけられるようになります。
 
 

3つめ こうしたらもっと良くなる!を提案する

 
3つ目は、いわゆる顧客に提案する、というやつです。
 
何も新たな自社サービスを提案する、ってわけではありません。
 
いつも自分がやっている仕事やお客さんがやっている仕事を振り返ってみるんです。
細かい部分まで振り返り、より具体的にイメージすることで、お客さんが気にしている点、大変そうにしている点が見えてきます。
 
たとえば「共有している管理資料の更新をよく間違えてるな」とか「いつもこの点についての質問や確認が来るな」とか「毎週の打ち合わせにいつも時間がかかっているな」といった具合に。
 
 
そしてその点を改善するにはどうするか、お客さんが楽になるにはどうするか、を考えて、提案します。
たとえば先ほどの例に合わせると、
 
共有している管理資料の更新をよく間違えてるな
 → 共有している管理資料を、より見やすく更新しやすくしよう
 
いつもこの点についての質問や確認が来るな
 → いつもお客さんが気にしている点を先回りして回答する、もしくはテンプレート化して定期報告する
 
毎週の打ち合わせにいつも時間がかかっているな
 → 打ち合わせの前に、あらかじめ話す内容を共有しておく
 
といった提案をするのです。
 
そうすることで、お客さんを楽にする、という付加価値をつけたことになります。
 
ただし、他2つに比べて難易度が高いと思います。
いつもやっていることを変えるということでお客さんを説得(魅了?)させる必要がありますし、楽になると思ってやってみたことがミスの温床となるなど裏目にでることもあるからです。
 
そのため、よく上司や先輩と検討して、お客さんに提案する必要があります。
とはいっても漫然とこなす仕事よりも数倍やりがいを感じ、楽しめるはずです。
 
 

 
 
さてさて以上3つが
 取り組む仕事を自分から見つけ出すにはどうするか。
 ただの下っ端の立場で、どう”仕事”を探してくるか。
に対して自分なりに考えた結果です。
(考えた、とはいっても、上司に言われたことや自分の経験、いままで読んだ本や記事がソースにはなっています。)
 
 
 
1、仕事はどこからやってくるか
2、いつも同じことを繰り返していないか
3、何か困りごとはないか
 
以上を意識して、仕事に取り組むことで、「漫然と」働くことは防げます。
 
 
早速、明日から実践してみてはいかがでしょうか。
(私も引き続き、"仕事"をしていきたいと思います。)
 
 
ではでは。