- 締切済み
Pythonについて
Pythonはスマホのメモ帳などでもできるの ですか? htmlやcssは、メモ帳(テキストファイル)を ファイルに保存して拡張子を.htmlにすれば 機能するのですが、Pythonではできるの でしょうか? また、変数など、どのようにしてPythonと htmlを連携?すれば良いのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- cametan_42
- ベストアンサー率62% (162/261)
あ、順位は絶対出力すんのか。 だったらもっと簡単になる。 -------------------------------------- #!/usr/bin/env python3 # coding:utf-8 import random number = random.randint(1, 3) # メッセージ分離方式: # f-string(フォーマット文字列)はプレースホルダー{}に条件式を書き込める # 条件式 -> https://docs.python.org/ja/3/reference/expressions.html#conditional-expressions msg = f"あなたの順位は{number}位です\n{'おめでとう' if number == 1 else ''}" if __name__ == '__main__': print(msg) ---------------------------------------------------------------- フォーマット文字列はかなり強力で、{}(プレースホルダーと呼ぶ)に任意の値を入れる事が出来る。 従って、ここは条件式をハメる事が可能だ。 値を「返す」条件分岐の書き方を条件式、と言う(反面、if「文」は返り値がない -> Pythonには条件文と条件式の2種類がある)。 Pythonでは「条件文」より「条件式」の方に慣れよう。 条件式は 値1 if 条件1 else 値2 if 条件2 else 値3 if 条件3 else ... と複数の条件と値のコンビを繋げていける。 (いけるが、あまりに長くなった場合、大体では「他の方策がある」って疑った方がいい) ここでは 'おめでとう' if number == 1 else '' としてるが、変数numberが1だった時には'おめでとう'と言う文字列を返し、そうじゃなければ空文字列''を返せ、と言っている。 結果、乱数によってnumberが何の数になるか、でmsgが確定する。 numberが1の時 => msg = "あなたの順位は1位です\nおめでとう" numberが2の時 => msg = "あなたの順位は2位です" numberが3の時 => msg = "あなたの順位は3位です" プレースホルダー込みのフォーマット文字列はホント便利だ。 これを使うと既存のプログラミング言語の「文字列」を使うのがかったるくなる(特にC言語に始まる「書式指定子」を使うタイプの文字列だ)。 Pythonでもこの「フォーマット文字列」ってのはかなり新しい機能なんだけど、あっと言う間に愛用者が増加した。恐らく、元々MicrosoftのC#の機能から借りてきたんじゃないか、って思ってるんだけど、英断だ。 注意点は一つ。上のケースのように、「文字列に別の文字列をハメる」場合、ダブルクオテーション(")だけ使って「文字列」を作ろうとすると混乱する事が多い。 そういう場合は、Pythonは基本的にシングルクオテーション(')でも文字列が作れるんで、適宜切り替えて、「この文字列はどこで終わりになるのか」視覚的にハッキリさせよう。 そうしておけばそうそう混乱しない筈だ。
- cametan_42
- ベストアンサー率62% (162/261)
> パソコンは、残念ながら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節が使われるかどうか、が決定する。 いずれにせよ、合成データを利用した際に生じる「エラー」を利用してプログラムを仕上げる、ってのは現代のモダンなプログラミングでは「重要なテクニック」となる。 結果「条件分岐文を全く使わずに」題意のプログラムは実現出来るわけ。 プログラミング初心者には情報量が多い、とは思うんだけど、別にロジック自体が「難しい」って事はないと思う。色々詰めたのは事実だけど、「現代のモダンなプログラミングに於けるテクニック」をある程度網羅してるんで、これを解読しただけでもかなりテクニックの上昇は見込めると思うよ。 参照リンクも辿って、頑張って理解してみて。 繰り返すけど、貴女は才能がありそうだから、ね。
- cametan_42
- ベストアンサー率62% (162/261)
> htmlやcssはスマホでやってましたね笑 貴女、ホント根性あるよ(笑)。 マジメな話、恐らく貴女はプログラミングを学び始めたらすぐ学べるタイプだろうな。 劣悪な環境でも「何かをモノに出来る」ってのは、「我慢強」くて、「根性が」あって、「何が何でも目的を達成しようとする姿勢」がある。 多分、才能あるよ。 > "自分のパソコン"はないので、 > 買ったらやってみます! 自分のパソコンは無くても家のパソコンはある、って事かな。 もう立ち止まってるのも勿体ないんで、すぐPythonを「家のパソコン」でいいからインストールして立ち上げちまいな。 Python: https://www.python.org/downloads/release/python-3122/ 最新版はこの3.12.2(Windows版)だ。 下の方に「Files」ってコーナーがあって、そこに「Windows installer (64-bit)」ってのがある。恐らく今どき、家のパソコンも64bitだろうから、ここのリンクをクリックすればいい(32bitの場合は、上の「Windows installer (32 -bit)」をクリックする・・・けど、2024年現在、32bitパソコンは殆ど無いだろう)。 あとはダウンロードしたインストーラをダブルクリックすればインストーラが立ち上がる。ガイドに従ってインストールしていけばいいけど、デフォルト設定でほぼ間に合う筈だ(ただし、最初の起動画面で「パスを通す」にチェックボタンを入れておく事・※)。 インストールが終了したら、Windows左下の「スタートメニュー」の"P"の項目からPythonを出して、IDLEをクリックすればそれだけでPythonインタプリタが立ち上がる。 これでプログラムを書く事が出来る。 いずれにせよ、なんせ「才能がある」可能性があるんで、立ち止まってるのは勿体ないと思う。 Pythonをまずは「触る」程度なら、教科書購入前に次のドキュメントをサラーッと流し読みながら、IDLEを使っていけばいい。 Python チュートリアル: https://docs.python.org/ja/3/tutorial/ 正直言うと、このドキュメントはプログラミング初心者には難しいと思う。と言うのも対称読者に「プログラミング経験はあるけどPythonは初めて」と言う人を想定してて、ズブの素人向けには書かれてないから、だ。 逆に言うと、「あれ?これってどうやって書いたっけ?」とか疑問に思った時、簡易なリファレンスとしては役立つ構成にはなっている。 ただ、教科書入手前に「取り敢えずワケが分からなくてもPythonを動かしてみる」には適当なドキュメント、だとは言えます。 ※: 一応、インストールガイドを参考にしておいた方がいいだろう。 Windows版Pythonのインストール: https://www.python.jp/install/windows/install.html あとは家のパソコンがMacってのもあったりするが・・・20軒に1軒くらいの割合で(笑)?・・・iPhone人気のお陰で若干購入者が増えたらしい(笑)。 Macの場合はヴァージョンが古くてもPythonはデフォルトで持ってたんじゃなかったかな・・・端末立ち上げてpythonって打ち込んでインタプリタが起動したら既に入ってる。まぁ、Macは詳しくないんで、junkoさん家がMacじゃない事を祈ってる(笑)。 なお、本当の事を言うと、今の(殆どの)スマホはMacと同じように、UNIX系OSを搭載してるんで、本当はスマホもパソコンと同じ「真っ当なコンピュータ」ではあるんだ。「電話付きコンピュータ」ってのがスマホの正体だ。 UNIX: https://ja.wikipedia.org/wiki/UNIX ただ、電話が付いてる、ってだけのコンピュータなんだけど、敢えて「コンピュータ」部分を「使えない」ように制限を加えてるわけだな。 一つはやっぱりセキュリティの問題。スマホもPCと同じように「悪意のあるコードを実行されると」乗っ取られる可能性があり、特に個人情報の保管率やクレジットカードなんかに紐付けされる頻度がPCの比ではないんで、極めて危険だ。言っちゃえば「パーソナルコンピュータ」よりパーソナルな情報に溢れかえってる可能性が高い。 そんなわけで、実の事を言うと、スマホにもプログラミングを初めとして、「プログラムを実行可能な」端末(Windowsで言うDOS窓/コマンドプロンプト/PowerShell: 黒画面で文字ばっかで打ち込むブツ)が入ってる。入ってるが、「使えないように」ガードして設定されてるわけだ。 で、第二の問題として「スマホは商売の為に作られている」(笑)。まぁ、当たり前だよな。 特にAppleなんだけど、本来の「コンピュータ」としてはそれ用のソフトウェアをどこで拾ってきてインストールして使おうと構わない筈なんだ。でもAppleもGoogleもそれを望ましくは思ってない。どっちかと言うと「ソフトウェアを資産として一元管理してApple/Googleを経由して"お金を払って"購入して欲しい」って思ってるわけだよ。 もちろん、最初に挙げたセキュリティの問題もある。ただ、それもあるけど、「お金を落として欲しい」。結局一番いいのは、Apple/Googleが認めた「正規ルート」以外でソフトウェアをダウンロードしてインストールさせないようにしたいわけ。その為にはやっぱり「端末を使えないようにする」のが一番、って話になるわけだ。 PCのOS(オペレーティングシステム)では、Windowsなんかではユーザー側はあまり意識しないんだけど、「端末がキモ」なの。「端末」があらゆるソフトウェアの「実行」を行う場だ。 従って「端末を使用禁止にする」のはセキュリティリスクを抑えるだけ、じゃなくって、「自在にソフトウェアをダウンロードしてインストールする」事も防ぐわけだ。そして「防がれる」為に、Pythonみたいなプログラミング言語でさえ、スマホにダウンロードしてインストールするのも難しくなる、ってわけだな。 まぁ、スマホとPCだと、OSが親戚でもCPUが違うんで(パソコンの場合はIntel製のチップ、スマホだとARMのチップ、ってのが殆どじゃないか?)、さすがに「PC用Pythonをダウンロードしてインストール」は出来ないんだけど、いずれにせよスマホは「かなり強固な制限を付けてる」コンピュータ、となる。 そして繰り返すけど、それは1にセキュリティの為。2に「勝手にソフトウェアを作られて配布されて、それ以上にそれでお金を勝手に儲けられたら困る為・笑」パソコンに比べると遥かに多くの制限を「わざと」かけてるわけだ。 故に、そういう「強固な制限付きの環境」でプログラミングを行うのは、賢い選択肢にはならない、って事になる。
- cametan_42
- ベストアンサー率62% (162/261)
一応、次のような記事もあるけど。 スマホでPythonプログラミングを始める方法〜導入・実践・勉強方法を解説〜: https://miyabikno-jobs.com/mobile-phone-programming/ ただし、そこにも書いてあるけど、「プログラミングをやるならパソコンは絶対必要な投資です」。 パソコン持ってないの? 繰り返すけど「プログラミングをやるならパソコンは絶対必要な投資です」。 これはJavaScriptを選択しようが変わりません。 > Pythonはスマホのメモ帳などでもできるの > ですか? > htmlやcssは、メモ帳(テキストファイル)を > ファイルに保存して拡張子を.htmlにすれば > 機能するのですが、Pythonではできるの > でしょうか? どのプログラミング言語だろうとPC、スマホに関わらずメモ帳で書ける。 ただし、「不便なだけ」だ。 HTML/CSSでさえ「メモ帳で書くより専用のエディタで書いた方がラク」だ。 ・・・・・・いや、言い換えると「今までメモ帳でやってきました」ってぇのなら驚き、だわ(笑)。凄い根性だ(笑)。 ちなみにPythonの拡張子は.py。 > また、変数など、どのようにしてPythonと > htmlを連携?すれば良いのでしょうか? いや、別にhtmlと連携する必要はないです。PythonはPython「だけ」で動く。 こういう記事もあるにはあるけどね。 PyScript Webブラウザ上(HTML内)でPython実行: https://miyashinblog.com/pyscript/ これはブラウザのAPI(アプリケーション・プログラム・インターフェース)側が「プログラミング言語をJavaScriptだ」と限定してないで設計されてるから「可能性として出来た」って事ではあるんだけどだけど(だから、例えばconsole.logはプログラミング言語側にAPIとやり取りする仕組みがあれば、JavaScript以外でも使えるように設計されている)。 ただ、元々JavaScript以外の「どの言語」でも、ブラウザで動かすように「HTML/CSSと組み合わせられるように設計されてはいない」です。原則、ブラウザで動かす、のではなく、「サーバーサイドプログラミング」が出来るようになってる。 【完全初心者向け】サーバサイドとは? 一体なんぞや?: https://miyabikno-jobs.com/mobile-phone-programming/ JavaScriptのようなスタイルは「クライアントサイド」でのプログラミングなんだけど、JavaScript「でさえ」サーバーサイドプログラミングの比率が多い。 取り敢えず、プログラミング初心者段階では「htmlとの連携」とかは忘れた方がいい。 と言うか、「忘れた方がいい」からPythonなんかを薦めたわけ。 取り敢えずPCが無いなら中古(例えばHard Offででもいいから)でいいから入手しよう。「スマホで何でもやろう」なんつーのはあまりにも「非効率」だ。 現時点では、エディタの問題も含め、PCの方が強力な環境を入手出来るのだから。 写真: PCでPythonをインストールすると付属してくるPython専用エディタ「IDLE」。初心者はこれを使ってPythonでプログラミングすれば充分。逆に余計な「プロ用開発環境」を使おうとすると設定だ何だ、でややこしくなる。 PCでPythonを入手 -> 黙ってIDLE使っておけ、ってのが初心者向けの正しい流れだ。 そしてプログラミングをやってるうちに「PCにも詳しくなっていって」、ある時期を境に「プロ用開発環境」を導入して「自分で環境設定が出来る」ようになっている。
お礼
htmlやcssはスマホでやってましたね笑 "自分のパソコン"はないので、 買ったらやってみます! 何度も回答ありがとうございます。
補足
パソコンは、残念ながらMacです笑 Macに詳しい人がなかなかいないんですよね そこで、一つ聞きたいのですが、 1から3までの数値を ランダムに生成して、順位として表示します。 1位の時には「おめでとう」と表示する。 これはどのような構文に、すればいいですか? # coding: utf-8 # if文による条件分岐 import random number = random.randint(1, 3) print("あなたの順位は" + str(number) + "位です") #ここにif文を追加する if number == 1 #条件式が成立した時の処理 print("おめでとう") これだとエラーが発生してしまいます。 どうすれば良いでしょうか????