[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/02 05:08 / Filesize : 295 KB / Number-of Response : 1041
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました



1 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 16:33:27.37 ID:/iWSRGfH.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
「Ruby では」「Rubyでは」「某言語では」をNGワード登録推奨

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OS+IDEの種類とバージョン)をシッカリ書くこと。

【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので
  ↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。最近流行中?
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。



593 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 09:09:26 ID:+7u2t/Rq.net]
>>571
(1)は言いたいこと良くが分からない
アスタリスクが全ての元凶のように見えるが・・・
この構成の作り方だと
packages.sample01 … module
packages.sample02 … module
packages.smpl01 … function
がmain.pyからは見える

(2)は相対インポートがパッケージ内でのみ機能する記法だから
直接実行すると相対インポートがエラーになる
回避方法は
python -m packages.sample01
として実行する方法だが、上記の構成で__init__.pyが定義されているため警告はでる

594 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 10:01:11.25 .net]
>>574
>python -m packages.sample01
d できた
なぜか警告も出なかった

(1)は最初
from packages.sample01 import smpl01
にしてたけど他にも使いたいモジュールが出てきたら
fromなんちゃらの行が【main.py】に延々追加されていくので
それなら__init__.pyの方に纏めておいた方が見やすいのか?と思った

595 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 10:13:01.58 ID:r3C450gU.net]
>>573
こんな書き方できるのか。知らんかった
mysqlclientで順番に値を放り込む方法しか使ったことないや

596 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 11:54:40 ID:dVYQOL+d.net]
https://harigami.jp/cd?hsh=9af27284-08c6-4b67-8f9a-0bfcffb213b2
すみません、まだやってます・・・そろそろ諦めようかな・・・

597 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 13:06:36 ID:r3C450gU.net]
>>577
カラム名を%sにするとだめみたいよ
置換フィールドで放り込んでやるとうまくいった

sql_4 = "SELECT 社員.営業所, COUNT(売上.売上) " \
      "FROM 社員 LEFT JOIN 売上 " \
      "ON 社員.社員ID = 売上.社員ID" \
      "WHERE {table} BETWEEN %s AND %s " \
      "GROUP BY 社員.営業所".format(table='売上.売上')

598 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 13:38:11.01 ID:+7u2t/Rq.net]
>>575
python -m packages.sample01
で警告が出るのはpythonのバージョンのせいかも知れない(python3.7では警告が出た)
この方法では
packages/__init__.py
がまず読み込まれ、その後
packages/sample01.py
が実行される
__init__.pyでsample01.pyを読み込んでいるので、sample01.pyは2回読み込まれていることに注意

__init__.pyにまとめることは普通に良くやるしpackages/__init__.pyの中でアスタリスクを使うことも良くやる
ただしmain.pyでアスタリスクを使うのは行儀が悪いように思う
fromナンチャラの行が増えるのが嫌いなら、メモリは食うけど
import packages
とした方が心の健康によさげ

599 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 13:54:59.57 ID:+7u2t/Rq.net]
>>577,578
>カラム名を%sにするとだめみたいよ
これが全て

600 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 14:15:16 .net]
>>579
>2回読み込まれ
あーやっぱりそうだったのか なぜか2倍printされるので。。

>ただしmain.pyでアスタリスクを使うのは行儀が悪いよう
なるほど

601 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 14:19:38.23 ID:dVYQOL+d.net]
>>578
できました!やったーありがとうございます



602 名前:デフォルトの名無しさん [2020/08/12(水) 14:21:32.92 ID:q6njxWnQ.net]
実用的でないPythonプログラミングを買いました。
VisualStudio2017とかでできますか?
皆さんオススメの環境を教えてください。
Pythonのバージョンは3.5らしいです。
(まだちゃんと読んでないけど)

603 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 15:03:29.71 ID:+7u2t/Rq.net]
Windowsなら
Python: Anaconda
エディタ: Visual Studio Code (VisualStudioではない)

604 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 15:21:07.28 ID:JA3gbSGM.net]
>>583
AnacondaPrompt
エディタはNotePad++

605 名前:デフォルトの名無しさん [2020/08/12(水) 15:24:26 ID:q6njxWnQ.net]
>>584
>>585
有り難みが強い。
参考にさせていただきます。

606 名前:デフォルトの名無しさん [2020/08/13(木) 10:56:33.23 ID:0rwjVY3B.net]
イテレータとリストの違いですが、イテレータは処理途中の状態を記録できるという点が違うのでしょうか?

607 名前:デフォルトの名無しさん [2020/08/13(木) 11:27:43.34 ID:WWRPvGcb.net]
違う
君が言う後者の機能は generator

リスト は全部メモリに確保されたもの
イテレータ はメモリを占有せずに順番に値を取得
generator は処理途中の状態を記録できる

イテレータ

608 名前:フ実装に generator が使われているかも知れないが別の概念 []
[ここ壊れてます]

609 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 11:27:51.35 ID:RJ8S/0mc.net]
作り置きと、注文の都度作るかの違い
作り置きは、置き場のスペースが必要

610 名前:デフォルトの名無しさん [2020/08/13(木) 11:43:13.98 ID:CM5c4LB7.net]
リストとイテレータの違いがよくわからないのですが、かんたんナ... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12229812432

これでは分らなかったのか

611 名前:デフォルトの名無しさん [2020/08/13(木) 12:28:04 ID:0rwjVY3B.net]
なるほど、なんとなくわかったです



612 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 12:48:37 ID:BKihMO2y.net]
foo = [1,2,3]
foo_iter = iter(foo)
next(foo_iter) #=> 1
next(foo_iter) #=> 2
next(foo_iter) #=> 3
next(foo_iter) #=> StopIteration

イテレータはnext()が呼ばれたら次の要素を1つ返すオブジェクト
内部でどこまで返したか覚えておく必要があるので状態を記録してるかというと記録してる

for x in foo: って書けば
iter(foo)して、next()を呼んで、得られた値をxに代入して、loop内の処理へ渡してる

ジェネレータは一般的には呼ばれたら1つ1つ値を生成して返す関数でイテレータの一種
ジェネレータではないイテレータは1つ1つ値を生成するんじゃなく
すでに用意されたリストなどから順に値を1つずつ返すもの
なので作り置きから注文の都度1つずつ返すのもイテレータ

613 名前:デフォルトの名無しさん [2020/08/13(木) 13:00:42.76 ID:0rwjVY3B.net]
何故pathで取得したパスは、iterdirなどを使ってジェネレータにする必要があるんでしょうか?
ササッとリストでも取得してくれればいいんじゃないですか?

フォルダのファイル一覧を取得する場合、
パス→ジェネレータ生成→リスト化という手順を踏まないといけないみたいです
パス→リスト
でいいような、、

614 名前:デフォルトの名無しさん [2020/08/13(木) 13:05:38.39 ID:KaPqduB6.net]
python2 へようこそ

615 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 13:10:29.18 ID:xFixv4R5.net]
一言で言うと「yieldがあるのがgenerator」

616 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 13:13:43.47 ID:xFixv4R5.net]
>>593
項目が超巨大になったときにリストの実態返されたら悲しいことになる
ジェネレータなら、あれ?なんかでかいぞ、止めよう、ができる

617 名前:デフォルトの名無しさん [2020/08/13(木) 13:39:30.96 ID:0rwjVY3B.net]
>>596
な、なるほど
そこまで巨大なファイルを扱ったことはなかったので、必要性が分からんでした

618 名前:デフォルトの名無しさん [2020/08/13(木) 13:56:32.50 ID:CM5c4LB7.net]
やっぱり強制的に教え込むべきだ
業界が先祖返りしてる

計算機プログラムの構造と解釈 第二版
https://sicp.iijlab.net/fulltext/x350.html

619 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 14:04:29 ID:jm0McRWL.net]
>>592
> ジェネレータは一般的には呼ばれたら1つ1つ値を生成して返す関数でイテレータの一種
逆でしょ
「イテレータは、コンテナに含まれる値ひとつひとつに対して走るジェネレータの一種である。」
ハードウェア乱数生成装置から読み取った値を返すジェネレータとか内部で値を保持しないジェネレータとかもある
>>588とかも勘違いしてる

620 名前:デフォルトの名無しさん [2020/08/13(木) 14:28:08 ID:WYCQl6Jw.net]
>>598
先祖還りって言うか
もう3周目とか4周目だろう

621 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 14:31:15 ID:BKihMO2y.net]
>>599
逆じゃないよ

>「イテレータは、コンテナに含まれる値ひとつひとつに対して走るジェネレータの一種である。」
こういう味方があっても別いいとは思うけど一般的ではない

>ハードウェア乱数生成装置から読み取った値を返すジェネレータとか内部で値を保持しないジェネレータとかもある
yield 乱数生成()で値を返すジェネレータがあったとして
何回yieldしたかとかloop条件を満たしてるかどうかとか
なんらかの状態を内部に保持することになるよね?



622 名前:デフォルトの名無しさん [2020/08/13(木) 14:57:12.58 ID:0rwjVY3B.net]
ループの返り値を内包表記を使用して変数に挿れるのと、普通にループで記載する場合では何が違うんでしょうか?後者だとグローバル変数が必要になると思いますけど。

623 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 15:04:40.77 ID:cLv1fX6M.net]
>>602

https://qiita.com/intermezzo-fr/items/43f90e07e4cebe63aeb6

624 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 15:11:06.77 ID:RDWqdqfD.net]
>>601
> こういう味方があっても別いいとは思うけど一般的ではない
いや、なんの根拠もないお前の定義を一般的と主張されても困るよw
イテレータは必ずジェネレータだけどイテレータでないジェネレータはあるだろ(その例が乱数発生器)

> yield 乱数生成()で値を返すジェネレータがあったとして
> 何回yieldしたかとかloop条件を満たしてるかどうかとか
> なんらかの状態を内部に保持することになるよね?
そりゃ、そういうジェネレータならそうだろう…
内部情報を保持しない例に保持する奴持ってきて何を言いたいんだ?

625 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 15:27:20.97 ID:TgMttUh/.net]
>イテレータは必ずジェネレータだけど

どこからこんな解釈が?
pythonのイテレータはイテレータプロトコルをサポートするオブジェクトのことだし、
ジェネレータは呼ばれたらイテレータを返す関数のことだろ。

626 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 15:41:35.50 ID:BKihMO2y.net]
>>604
日本語のWikipediaの間違った記載を鵜呑みにしてるっぽいね
https://ja.wikipedia.org/wiki/ジェネレータ_(プログラミング)

英語版も見るといいよ
https://en.wikipedia.org/wiki/Generator_(computer_programming)

疑似乱数生成器(Psuedo Random Number Generator)の名前にジェネレータが含まれてるからといって
それらがプログラミング言語でいうところのジェネレータを使って実装されてるわけじゃないから

627 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 15:43:11.84 ID:BKihMO2y.net]
>>606
>それらがプログラミング言語でいうところのジェネレータを使って実装されてるわけじゃないから

それらが”すべて”プログラミング言語でいうところのジェネレータを使って実装されてるわけじゃないね
ジェネレータのものもあればそうでないものもあるということ

628 名前:デフォルトの名無しさん [2020/08/13(木) 15:45:42.36 ID:hDTlT7Ky.net]
酷いのが居るな
知らないのなら黙ってれば良いのに

629 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 16:08:22.81 ID:3TUGpUf8.net]
>>605
>イテレータは必ずジェネレータだけど

逆ぅ!

>>> import collections, types
>>> issubclass(types.GeneratorType, collections.Iterator)
True

630 名前:609 mailto:sage [2020/08/13(木) 16:21:41.93 ID:3TUGpUf8.net]
訂正
>>609>>604へのレスね。

631 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 16:34:47 .net]
tkinterでmainloopする前に無限ループ処理をしたいのですが
無限ループ処理Aをするとmainloop()できない
mainloop()を先に、無限ループ処理Aを後にすると、無限ループ処理Aできない
という板挟みになりました
どうしたら良いのでしょうか
import tkinter as tk
import time
while True:
_print("処理")
_time.sleep(1)
root = tk.TK()
root.mainloop()



632 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 16:52:12 ID:wdeLOLBT.net]
クラスの使い道がわからん
数値や文字を関数に放り込んで値を出して表示する
これだけでやりたいことが全部できてやることがなくなった

633 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 17:18:52.97 ID:ut3SsjSC.net]
>>611
root = tk.Tk()

def mokomoko():
処理
root.after(1000, mokomoko)

root.after(1000, mokomoko)
root.mainloop()

634 名前: mailto:sage [2020/08/13(木) 17:19:09.07 ID:P/jo0Y4p.net]
>>612
そのとおり
クラスなんかなくても何でも書ける

ただしクラスという抽象化手段は、単に書けるという以上のものを目指すときに使う
例えば再利用とか

635 名前:デフォルトの名無しさん [2020/08/13(木) 17:22:35.60 ID:CM5c4LB7.net]
>>611
まずはかんたんなアナログ時計から作った方がいい

636 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 17:32:17.63 .net]
>>613
できました ありがとうございます
ついでにボタンを追加してみたのですが
処理中はなぜかプッシュ感がありませんでした
ボタンクリックしても押し込まれるアニメーションが出てこない(処理が終わった瞬間、処理前に押したときのボタン処理がドバーッと実行される)のですがそういうものなんでしょうか

637 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 17:34:45.02 .net]
>>615
とりあえずストップウォッチのコードを眺めてみることにします

638 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 17:53:26.38 ID:DN44Q+/a.net]
何かしらPythonでなければならない理由があるならともかくGUIならC#で作った方が楽じゃないか?

639 名前:デフォルトの名無しさん [2020/08/13(木) 17:56:22.43 ID:1iT07aDZ.net]
>>618
ココはPython の布教>>1

640 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:05:56.78 ID:BJex6KXt.net]
>>616
細かい所を拘るなら
PySimpleGUIとか別ライブラリを使うのも手
(tkinter自体は大昔からあるやつだから、モダンな物を作ろうとするとちょっと大変)

641 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:11:59.85 .net]
https://ideone.com/h4QkaK
とりあえずストップウォッチを参考に書いてみましたが
やはりボタンのプッシュ感がありません
なぜでしょうか
明らかにroot.afterの行が原因で止まっているんだろうな、という感じです



642 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:12:22.88 .net]
>>620
なるほど ぐぐってみます

643 名前:デフォルトの名無しさん [2020/08/13(木) 18:14:57.99 ID:0rwjVY3B.net]
複数フォルダの先頭ファイルのみ取り出すにはどういうロジックにしたらいいんでしょうか?
フォルダのインデックス0を取り出したあと、各々のフォルダの中でファイルのインデックス0を取り出すという手順になるでしょうか

644 名前:デフォルトの名無しさん [2020/08/13(木) 18:15:56.91 ID:0rwjVY3B.net]
あ、違いますね。
フォルダのインデックス0という点は間違いです。フォルダ構造です。

フォルダ1
┗ファイル1
┗ファイル2
フォルダ2
┗ファイル3
┗ファイル4

645 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:32:21 .net]
自己解決したかどうかわかりませんが(意図した処理と同等かよくわからない)一応ボタンが常にプッシュしてくれるようになりました >>621
https://ideone.com/GOuxDw

646 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 19:42:17.54 ID:2TasqE+0.net]
>>623-624
その子供ファイルたちの「一番目」って何で決めるの?
サイズ?日付?名前???

647 名前:デフォルトの名無しさん [2020/08/13(木) 20:42:25 ID:0rwjVY3B.net]
sortedを使用するので、名前です(´・ω・`)、、、

648 名前:蟻人間 mailto:sage [2020/08/13(木) 20:46:52.26 ID:4HMLW5OS.net]
フォルダの一覧を作成。
各フォルダについて最初のファイルを取得して、ファイルパスをリストに追加。

649 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 20:58:21 ID:vQKb1geh.net]
>>587
一般論であれば、まずPythonにおける「リスト」とは
他言語における「配列」を指す

次に、配列とは単なるデータ構造を指し、
その配列の各要素をあれこれ処理するアルゴリズムは「手続き」として定義される
データ構造と手続きが完全に分離されている、これがFORTRAN/COBOLに始まり
C/Pascal/Modulaへと続く1980年代前半までの古典的な「手続き型言語」の流れ

こうした手続き型の流れは、大規模開発における保守性/再利用性の低さから批判を受け、
対処策として注目された概念の一つが「抽象データ」であり、
これはデータ構造の内部詳細を隠蔽し外部に公開された手続きで処理対象をモデル化する
たとえばスタックという抽象データは、内部のデータ構造が配列であっても
リンクドリストであっても構わず、外部に公開されたEmpty/Push/Pop/IsEmptyという
手続きの集合(インターフェイス)だけで定義される

この抽象データという概念を発展させて、反復(ループ)処理すらも抽象化させるという提案が
イテレータ(iterator, 反復子)であり、それが最初に実装されたのがCluと呼ばれる実験的言語になる
まとめると、リスト(=配列)とはデータ構造の一種であり、イテレータとはリストを含む
複合データ構造に関する反復処理に限定して抽象データとしてモデル化した概念である

650 名前:デフォルトの名無しさん [2020/08/13(木) 21:02:29.42 ID:0rwjVY3B.net]
>>628
ロジックは最初に日本語化したほうがいいですか?

651 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/13(木) 21:07:21 ID:4HMLW5OS.net]
>>630
英語の方が分かりやすいなら英語で。伝統的な日本人なら日本語で。



652 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 21:18:06.70 .net]
PySimpleGUI調べてみました
圧倒的にコードが見やすくなりました

特徴は、レイアウトを最初にまとめてコーディングして
最後にWhile True:でイベントを監視するところでしょうか。

event, value = window.read()の直前後にprintを挟んでテストしてみましたが
一番最初にそのprintが出力され、次にイベントの処理が出力されました
つまりwindow.read()のところで待機?してるのだと思いますが
その仕組みが今一わからず悶々としています

653 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 21:25:29.32 ID:vQKb1geh.net]
>>631
リストに対応する英単語は list であり、
同様に、配列に対応する英単語は array(アレイ) または vector(ベクタ) である

何を言いたいのかな?
英語?日本語?言語は関係ないよ

654 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 22:05:38.43 ID:SL8XbHj+.net]
はじめてpysimpleguiを知ったんだけど、tkinterやqtのラッパーだなんて説明を見つけたけど本当?
公式の英語を読むと、ラッパーなんて記述は見つからないのだが。

655 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 23:41:28.50 ID:ut3SsjSC.net]
5秒で見つけたぞ
https://pysimplegui.readthedocs.io/en/latest/#whats-the-big-deal-what-is-it

656 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 23:45:08.41 ID:SL8XbHj+.net]
あ、ホントだ。てことは、exe配布時に必要なバッケージはどうなるんだ?
全部?

657 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 00:07:27 ID:SCMnTycc.net]
例えば、メモ帳のパスなら、コマンドプロンプトで確認できる。
上に表示される方が、優先される

where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

同様に、where php とやってみれば?

環境変数パスを知らないような人は、システム環境構築運用なんて、とてもできない

658 名前:637 mailto:sage [2020/08/14(金) 00:08:54 ID:SCMnTycc.net]
>637
誤爆です

659 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 01:42:40.43 ID:H4kV4BPg.net]
何の話かと思ったぜw

660 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 02:25:37.41 ID:SCMnTycc.net]
>>623
【.cmd】 バッチファイルスクリプト %13 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1542779527/972

上に、Ruby で書いておいた。
Rubyでは、フォルダ以下のファイル名を取得する際、自動的にソートされる

他には、隠しファイルをどう扱うのか?

661 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 02:44:30 ID:PbBJ4pBD.net]
再帰関数について質問させてください。
どういう順番で処理されているのかよくわからなかったので、
0から10までの数字を足す処理を再帰で書いて、途中のプロセスをprintで出力しようとしました。

https://techiedelight.com/compiler/?PYzg

するとこのような結果が出たのですが、A_10からB_55が二回分printされているのはなぜなのでしょうか。


他のプログラム言語の経験は無く、pythonを始めたばかりです。
変な質問だったらすみません。



662 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 02:55:36.25 ID:sxmwfi0L.net]
>>641
total(10) #=> 1回目
print(total(10)) #=> 2回目

2回実行してるから

663 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 03:00:28 ID:PbBJ4pBD.net]
>>642
ありがとうございます。わかりました。

664 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 03:15:21.63 ID:PbBJ4pBD.net]
再帰の件、続けての質問ですみません。

https://techiedelight.com/compiler/?b7CW

さっきと同じ計算なのですが、printの位置を追加しました。

これを見ると、「def の中で if より上の部分だけは最初に処理される」ように見えます。

そこで疑問なのですが、再帰というのはdefを使っている場合だけに可能な処理で、普通に書いた時は再帰処理することはできない、という理解は正しいですか?

665 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 05:29:46.15 ID:IsZI9WNI.net]
ラムダ式っていうのを使えばdef使わなくても再帰はできる
しかし本質的にはやってることは同じ

666 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 05:45:29.86 ID:PbBJ4pBD.net]
わかりました。ありがとうございます。

667 名前:デフォルトの名無しさん [2020/08/14(金) 06:38:10.15 ID:gdj6lSjH.net]
pat = sorted([file.stem for file in foldername.glob("*.txt")])
return pat[0] if pat else None
これはフォルダにあるファイルの一覧を取得していますが、
if pat の部分は何を指定しているのでしょうか?
もしリストであったのなら とは

668 名前:H []
[ここ壊れてます]

669 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 07:06:27.95 ID:XbgH4NM8.net]
>>647
Pythonで「if 変数名」ときたら
「変数がからっぽ系じゃない場合は」という意味
この場合は
「リストになんかHitした結果がはいってるなら」=foldernameの中にtxtファイルがあれば

670 名前:デフォルトの名無しさん [2020/08/14(金) 07:21:42 ID:lmu28MG3.net]
この手の暗黙的な書き方は、セキュアじゃないことに気を付けないといけないけどな。

ところで、この場合の角括弧はいらないというか邪魔。
pat = sorted(file.stem for file in foldername.glob("*.txt"))
他に引数がある場合は、丸括弧にする。
pat = sorted((file.stem for file in foldername.glob("*.txt")), reverse=True)

671 名前:デフォルトの名無しさん [2020/08/14(金) 07:34:13 ID:gdj6lSjH.net]
>>648
trueということですね ありがとうございます



672 名前:デフォルトの名無しさん [2020/08/14(金) 08:37:56 ID:AaNqGTg5.net]
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw

673 名前:デフォルトの名無しさん [2020/08/14(金) 11:06:59.37 ID:gdj6lSjH.net]
ファイルに連番を使いたいのですが、イテレータからインデックスを取り出す事はできませんか?

import os
import pathlib
target_folder =pathlib.Path(".")

for i in target_folder.iterdir():
os.rename(i,"hoge")

674 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 11:18:33.39 ID:sgFs/qSh.net]
enumerate

675 名前:デフォルトの名無しさん [2020/08/14(金) 11:39:11.68 ID:gdj6lSjH.net]
あい

676 名前:デフォルトの名無しさん [2020/08/14(金) 15:55:46.15 ID:gdj6lSjH.net]
import os
import pathlib
target_folder =pathlib.Path(".")


for i, name in enumerate(target_folder.iterdir()):
if name.is_dir():
print(name)
os.rename(name,"hoge"+[i])

フォルダを連番リネームするにはどうしたらいいのでしょうか?
リストにインデックスはつけられないみたいです。
このエラーです
can only concatenate str (not "list") to str

677 名前:デフォルトの名無しさん [2020/08/14(金) 16:15:03.54 ID:jPrekU1/.net]
"hoge"+str(i)
"hoge{0}".format(i)
f"hoge{i}"

678 名前:デフォルトの名無しさん [2020/08/14(金) 16:49:21.19 ID:gdj6lSjH.net]
str内でインデックス使っていいんですね
ありがとう

679 名前:デフォルトの名無しさん [2020/08/14(金) 18:27:56 ID:gdj6lSjH.net]
lis = [1,2,3,4,5,6]
for i in lis:
rep = "{0}{1}{2}".format("(" , i , ")")
print(rep)

formatで括弧を付ける場合、これよりかんたんな書き方はあるですか?

680 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 18:29:52.88 ID:IsZI9WNI.net]
"({})".format(i)

681 名前:デフォルトの名無しさん [2020/08/14(金) 18:39:59.80 ID:jPrekU1/.net]
rep = "{0}{1}{2}".format("(" , i , ")") の発想がすげーよ。
馬鹿にしているわけではないよ。



682 名前:デフォルトの名無しさん [2020/08/14(金) 18:41:02.22 ID:gdj6lSjH.net]
駄目なんですか?

683 名前:デフォルトの名無しさん [2020/08/14(金) 18:46:04.13 ID:zY2s9ydf.net]
rep = f'({i})'

684 名前:デフォルトの名無しさん [2020/08/14(金) 18:46:25.97 ID:gdj6lSjH.net]
>>659
波括弧になにもない場合は数字は0ということですか?

685 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 18:53:25.52 ID:sgFs/qSh.net]
>>662
なんだかマンコみたいだね。

686 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 18:56:50.18 ID:d5rr7Q8j.net]
format って、% より優れてんの?
どっち使えばいいのかわからない。

687 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:04:47 ID:sRXPDhxm.net]
>>663
バージョン 3.1 で変更: str.format() を使い、位置引数指定を省略することができます。
'{} {}'.format(a, b) は '{0} {1}'.format(a, b) と同じになります。
https://docs.python.org/ja/3/library/string.html#formatstrings

個人的には嫌い、ちゃんと '{0} {1}'.format(a, b) って書けって思う。

688 名前:デフォルトの名無しさん [2020/08/14(金) 19:10:30 ID:gdj6lSjH.net]
どうもです
リファレンスはむずすぎて読めなくて

689 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:11:16 ID:sRXPDhxm.net]
>>665
多くの場合、新構文に {} を加え、 % の代わりに : を使うことで、古い %-書式に類似した書式になります。
って書いてあるぐらいだから新規に書くなら{}の方が良さげみたいよ
https://docs.python.org/ja/3/library/string.html#format-examples

690 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:46:02.83 ID:CR1HsLIW.net]
>>667 チュートリアルの方は読んだ?

691 名前:デフォルトの名無しさん mailto: []
[ここ壊れてます]



692 名前: mailto:2020/08/14(金) 20:08:24.20 ID:gdj6lSjH.net [ 読んでませんよ
yagniの法則ってやつがあるじゃないですか ]
[ここ壊れてます]

693 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 20:23:56.31 ID:JGhukcXO.net]
>>670
プログラミングむいてないから死んだほうがいいよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<295KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef