• 締切済み

Pythonについて

cametan_42の回答

回答No.3

> パソコンは、残念ながらMacです笑 あっちゃあ(笑)。1/20に当選しちゃったか(笑)。 まぁでも、「才能がある」人間も20人に一人、ってぇんで妥当かな(笑)。 Macの場合だとデフォルトでPythonが既に入ってると思う。 先にも書いたけど、端末・・・Macだと何だ、多分「ターミナル」って表現されてると思うんだけど、ターミナルで、「python」って打ってリターンキーを叩いて、pythonインタプリタが立ち上がれば「Pythonが既にインストールされてる」って意味になる。 加えると、最新版pythonをインストールしたい場合、Homebrewと言うアプリを使ってターミナル経由でインストール可能だと思う。 以下のページで、かなり詳しくMacでのPythonのインストール方法が記述されてます。 macOS環境のPython: https://www.python.jp/install/macos/index.html いずれにせよ、恐らく「Pythonがフルでインストール」されれば、MacでもWindowsと同様にIDLEがインストールされると思うんで、MacでIDLEを立ち上げればラクラクPythonプログラムが書ける筈です。 > 1から3までの数値を > ランダムに生成して、順位として表示します。 > 1位の時には「おめでとう」と表示する。 > これはどのような構文に、すればいいですか? 貴女、才能がありそうなんで、初心者向け、じゃなくって、はじめから「本格的な」プログラムを見せるよ。 Pythonだとその題意は次のようにして書く。 ------------------------------------------------------ #!/usr/bin/env python3 # coding:utf-8 import random number = random.randint(1, 3) ## 表示用のメッセージは分離しておく(メッセージ分離方式) # 辞書型: -> https://docs.python.org/ja/3/tutorial/datastructures.html#dictionaries d = {1: 'おめでとう'} # 現在のPythonではプレースホルダーが好まれる -> https://docs.python.org/ja/3/tutorial/inputoutput.html#formatted-string-literals msg = f"あなたの順位は{number}位です" ## スクリプトでは次のように書くのがフォーマル ## https://docs.python.org/ja/3/library/__main__.html#idiomatic-usage ## プログラムの「実行部分」を以下のようにまとめる。 if __name__ == '__main__': # 例外処理 -> https://docs.python.org/ja/3/tutorial/errors.html try: print(d[number]) except: print(msg) --------------------------------------------------------------------------------- OKWave上だと見づらいかもしれないんで、同じファイルを次のページにも挙げておく。 https://www.ideone.com/FNIHP7 んでだ。 まず、モダンなプログラミングでは。 1. なるたけif等の条件分岐構文は使わないようにする。 とにかく「ifに頼る」と言うのはC言語的なスタイルで、「モダン」とはかけ離れている。 一方、モダンなプログラミングの方策では「データ型設計を通じて」条件分岐と同様な効果のある仕組みが作れないか、と考える。 ifを避けられるだけ避ける、ってのがモダンなプログラミングでは重要な発想なんだ。 2. Pythonではリストと辞書型、と言う合成データ型に徹底的に慣れよう。 C言語では存在しない(作る事は可能だが)リスト、と辞書型、と言う合成データなんだけど、これらが物事を物凄く簡単にしてくれる。極めてパワフルなデータ形式だ。 特に辞書型だけど、データ型で言えばこれを使いこなせればPythonでは半分くらい「免許皆伝」だ。 辞書型は一種の簡易データベースで、キーに対応した値を返してくれる。 >>> d = {1: 'junko', 2: 'cametan_42'} >>> d[1] 'junko' >>> d[2] 'cametan_42' キー「1」に対しては設定された値'junko'を返し、キー「2」に対しては以下同文。 これは「検索」に対して非常に簡易な構造を持ったデータ型、なんだ。 Pythonだけじゃなくって他のモダンなプログラミング言語、例えばJavaScriptでもこのテの合成データ型を持っている。他の言語では「連想配列」やら「マップ型」と言う呼び方をするケースが多いが。 さて、じゃあ、「キーが存在しない」ブツを呼び出そうとすればどうなるだろうか? 答えはこれ、だ。 >>> d[3] Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> d[3] KeyError: 3 エラーが返ってくる。最近のカッコ付けた言い方だと「例外を投げられた」と言う。 実はこれがこのプログラムのキモ、となる。 3. モダンなプログラミングではエラーは友達だ。 プログラミングのエラーと言うのは今までの常識だと「避けるべき」だとされていた。 一方、モダンなプログラミングは「エラーさえ利用してプログラミング」する。 具体的に言うと、エラー、現代の言葉で言うと「例外」は、それもまた「データ型」なんだ。データ型である以上利用出来る。 ここで用いたトリックは次のようなモノだ。 辞書型で次のような設定をした。 d = {1: 'おめでとう'} たった一つの要素しかない辞書型だ。キー「1」を与えると「おめでとう」が返る。 >>> d[1] 'おめでとう' しかし1以外を与えると必ず「例外を投げる」わけだな。 >>> d[2] Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> d[2] KeyError: 2 >>> d[3] Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> d[3] KeyError: 3 今、乱数で作ったnumberと言う変数がある。numberが取りうる値は1、2、3のウチのどれか、だ。 しかし、今まで見てきたようにdに対してキー1を与えたらいいけど、2や3を与えると「例外が投げられる」。 その例外が投げてこられた時でも「正常に処理を継続する」システムを「例外処理」と言う。具体的にはtry〜except構文、と言われるものを使う。 try: print(d[number]) except: print(msg) try節は必ず実行される。このケースの場合、「必ず」print(d[number])が実行される。そして「場合によっては」例外が投げられるわけだな。 もちろん「例外が投げられなければ」print(d[number])が実行されてそこでプログラムは終了、だ。 一方try節が実行された際に「例外が投げられれば」後続のexcept節が実行される。そこではprint(msg)が実行されて、プログラムは終了するわけだ。 このtry〜exceptはif文と似てはいる。似てるけど次の点が違う。 if 何とか 何か実行A # 何とか、がFalseだった時、ここは絶対実行されない else 何か実行B try: 何か実行A # ここは必ず実行される except: 何か実行B # ここはtry節の実行結果に沿って実行されたりされなかったり もちろん「例外処理」は「例外が投げられる」前提だが、例外を投げるのはtry節の「内側」であって、そこが必ず実行されなければ画餅になる、って事なんだ。 繰り返すけど、try節の結果(例外が投げられる/投げられない)によって、except節が使われるかどうか、が決定する。 いずれにせよ、合成データを利用した際に生じる「エラー」を利用してプログラムを仕上げる、ってのは現代のモダンなプログラミングでは「重要なテクニック」となる。 結果「条件分岐文を全く使わずに」題意のプログラムは実現出来るわけ。 プログラミング初心者には情報量が多い、とは思うんだけど、別にロジック自体が「難しい」って事はないと思う。色々詰めたのは事実だけど、「現代のモダンなプログラミングに於けるテクニック」をある程度網羅してるんで、これを解読しただけでもかなりテクニックの上昇は見込めると思うよ。 参照リンクも辿って、頑張って理解してみて。 繰り返すけど、貴女は才能がありそうだから、ね。

関連するQ&A

  • Pythonのreadlineについて

    最近Pythonのプログラミングを始めたのですが、Pythonのプログラミングについて以下のことを行いたいのですが、やり方が分からず困っております。 Pythonで行いこと 1.textファイルに例えば以下のようにいくつかの係数を入力しておきます。 a:0.5, b:0.8, c:0.9 2.上記のテキストファイルを読み込み、pythonの変数a、b、cに値を格納したいと考えています。 色々検索している中でテキストファイルの読み込みはf=open(xxx.txt)で読み込み、各行の読み込みはreadline()というコマンドでできることは分かったのですが、lines=f.readline()とした後、その"line"の中からaが0.5、bが0.8という数字部分だけを切り出してプログラム中の変数に渡す方法が分からない状態です。 皆様のお知恵を拝借いたしたく、宜しくお願いいたします。

  • pythonについて

    私はプログラミングに興味があってmacでpython2.7を使っています。 python2.7でプログラムをファイルを書く方法が分かりません。 また、 python専用の本を持ってるのですが、「test.py」という部分があります。 “テキストエディット”、“AppleScript エディット”で保存するをクリックして 名前を「test、py」にできないのですが「test.py」にする必要はないのでしょうか? どなたかやり方を教えてください。

  • pythonとtwitter

    今pythonを使ってtwitterと通信させる勉強をしています。 特定のユーザのツイートを読み取り、それをテキストファイル(.txt)に変換して保存をしたいのですが、なかなかうまくいきません。 特定のユーザのツイートをpythonで取ってくることはできている状態です。 どなたかアドバイスまたはヒントを頂けないでしょうか。教えてください。

  • python3.3についての質問です

    python3.3についてお聞きいたします。 「すべてのプログラム」-「Python3.3」-「IDLE(Python GUI)」を立ち上げて、 a=[5,6,7] a[0] と入力し「Enter」で、結果が「5」と正常に表示されます。 「IDLE」の一番上の欄の「File」-「New Window」の画面で上記と同じプログラムを入力し、「File」-「Save」で保存してから、「Run」-「Run Module F5」で実行させますと、 >>> ===========RESTART========== >>> >>> と表示されるだけです。 なぜ「5」と表示出来ないんでしょうか。 同じプログラムをメモ帳で書いて、文字コードを「UTF-8」で保存して、走らせても結果は何も表示しません。 なぜなんでしょうか。ご教授お願いいたします。

  • PythonでGTKの使いかた

    最近Pythonをはじめたのですが、GTKがうまくあつかえません。ググってもC言語での使いかたばかりで困っています。 今、特にGtkEntryのテキストを変数に代入する方法がわかりません。初歩的な質問でもうしわけないですが、教えていただけませんでしょうか? Gladeを使用しているので、それ用の回答ですとなおありがたいです。

  • Pythonのopen()が使えません

     Pythonでアカウント作成部分のプログラムを書こうと思い、 画像のようなコードを書いたのですが、ファイルに書き込むこと が出来ません。使用してるPythonのバージョンは3.4.1です。  それと、こういう場合に、ただ登録情報の変数を参照する だけのためにクロージャを使うのは正しいのでしょうか?  ご指導のほど、よろしくお願いいたします。

  • Python拡張子(*.py)は必須か?

    私の使っている本には: ”拡張子は必須ではありませんが”と、書いてあります。 しかし、実際として**.pyは付けないとwindowsではインタプリタの実行は行われません。 ここで、この問題点をPythonとWindowsの2つに分けて考えてみました。 Python自体には**.pyと言う拡張子をつける規則はないが、 Windowsとしては、**.pyの拡張子がないとPythonファイルとして認識しないので付ける。 以上で正しいでしょうか? それとも、私が使っている本の”拡張子は必須ではありませんが”が間違っているのでしょうか? 宜しく、願います。

  • 今python2.6をインストールして、エディタはPyscriptを使

    今python2.6をインストールして、エディタはPyscriptを使っています。 ーーーーーーーーーー t = "test" print t ーーーーーーーーーー このコードをエディタで実行するとしっかりとした結果がエディタ上で表示されますが、これを名前を付けて保存し、デスクトップに保存。 そして拡張子も py にしてダブルクリックで起動しようとしても一瞬黒いwindowが現れてすぐなくなります。 これは環境設定をしなければいけないと思い、いろいろググり、たくさんの方法を試しても結果は最初と同じで、一瞬真っ黒なwindowが表示されるだけです。 もうどう環境設定すればいいのかわかりません。 どなたかどこの変数にどんな変数値をいれればいいのか教えてください。 お願いします。

  • CSS外部ファイルを作りましたが、加筆する際にファイル**.cssファイルが開けません

    CSS素人です。 外部ファイルからCSSを使おうと思い、ファイルを作成したいのですが、メモ帳に書き、保存する際に.cssという拡張子でファイル保存しました。 外部ファイルを書き加えようとしたところ、うまく開けませんでした。 『ファイル**.cssファイルを開くアプリケーションを指定してくださいとなってしまいます。』 なにが悪いんでしょうか。 ファイルを書く場合、直接いきなりスタイルシートを書き込んでいいのでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • python ディレクトリの上書きコピー&実行不良?

    pythonに関しての質問です。 自分は、仕事で使う3Dアプリケーション(MAYA、XSI)で広く使われているpythonを勉強しています。 まだ始めたばかりでほとんどわかっていない状態なので、変な質問をしていたらすいません。(知識は、pythonで始めるプログラミング作法と言う本を中盤くらいまで読んだくらいです。) 仕事をしていて、3Dアプリの設定ファイルをファイルが更新されたときに ローカルに上書き保存をする作業が多々ある状況です。 今現在は、会社の人がVBで作成したバッチファイルを用いてその作業をしているのですが、勉強もかねてpythonで自作しようかと思っています。 いざ調べてみて作ろうと思ったら、上書き保存の記事がみあたりません。 (探し漏れかもしれませんが・・・) import shutil shutil.copytree('D:\test1', 'D:\test2') このような構文は見つけたのですが、これはtest2を作成してコピーするようなので、自分がローカルに持っている設定ファイルの入ったディレクトリへの上書き保存にはなりませんよね? なので、もし上書き保存の方法があれば教えて頂きたいと思います。 あと、環境変数の設定が済んでいるのにダブルクリックでスクリプトが走らないのはなぜでしょうか? (書いたソースをpythonプロンプトに直書きすれば走るんですが・・・) よろしくお願いします。