「print」を含む日記 RSS

はてなキーワード: printとは

2024-01-22

ブコメダブスタをチェックするためのスクリプト適当Pythonで書いた

エラーハンドリングは省略。標準ライブラリのみで動く。

import json
import urllib.request


# True にするとユーザー名を隠す
hide_user = False
# 以下を書き換える。sys.argv 使ってもいいんだけど
url1 = "https://www.cygames.co.jp/news/id-23172/"
url2 = "https://mtg60.com/archives/palworlddoujinsi.html"


def get_bookmarks(url: str):
    req = urllib.request.Request(f"https://b.hatena.ne.jp/entry/json/{url}")
    with urllib.request.urlopen(req) as res:
        dict = json.loads(res.read())

    user_comments = {}

    for bookmark in dict["bookmarks"]:
        if bookmark["comment"]:
            user_comments[bookmark["user"]] = bookmark["comment"]

    return user_comments


b1 = get_bookmarks(url1)
b2 = get_bookmarks(url2)

common = set(b1.keys()).intersection(b2.keys())

print(f"[1] {url1}")
print(f"[2] {url2}")
print()

for user in sorted(common):
    if hide_user:
        print(user[0] + "*" * (len(user) - 1))
    else:
        print(user)
    print(f"[1] {b1[user]}")
    print(f"[2] {b2[user]}")
    print()

2023-12-29

増田納め 2023年のマイ日記集計

こんます

2023年も残すところわずかとなりましたが、皆様方におかれましてはいかがお過ごしでしょうか。

一年間の振り返りなどはされましたでしょうか。

 

私、一年間に書いた増田を振り返ってみましたところ、

2423件の日記を綴っており、

頂いた総ブクマ数は1893、総トラバ数は1060となりました。

これもひとえに皆様方のご支援ご声援のおかげであります

本年も大変お世話になりました。

 

最期に、ポンコツの私がChatGPTの手となり足となり作成した増田集計コード掲載します。

日記URLタイトル投稿日時、文字数、被ブクマ数、被トラバ数を取得しCSVファイルに出力するものです。

お暇な方はお使いください。

 

それではよいお年をお迎えください。

import requests
from bs4 import BeautifulSoup
import time
import csv
import os
import re


# ログインURL
login_url = 'https://hatelabo.jp/login'

# ログイン情報
login_data = {
    'key': 'あなたユーザ名またはメールアドレス',
    'password': 'あなたパスワード',
    'mode': 'enter'
}

user_name = 'あなたユーザ名'

# User-Agent ヘッダー(例:Google Chrome)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

# セッションを開始
session = requests.Session()
# ログイン
response = session.post(login_url, data=login_data, headers=headers)
print('login',response.status_code)

# 集計データ
item = {
    'url': '', # URL
    'title': '', # タイトル
    'datetime': '', # 投稿日時
    'characters': '', # 文字数
    'bookmark': '', # 被ブクマ数
    'trackback': '', # 被トラバ数
}

# CSVファイル名
output_file = 'masuda_output.csv'
# CSVファイル存在しない場合はヘッダーを書き込む
if not os.path.exists(output_file):
    with open(output_file, 'w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=item.keys())
        writer.writeheader()


# 集計
page_start = 1
page_end = 3
for i in range(page_start, page_end+1):
    
    # 待機
    time.sleep(3)

    # 増田一覧取得
    page = session.get(f'https://anond.hatelabo.jp/{user_name}/?page={i}')
    print(page.url)
    
    # 応答のHTMLをBeautifulSoupで解析
    soup = BeautifulSoup(page.content, 'html.parser')
    
    entries = soup.find_all('div', class_='section')
    for entry in entries:
        header = entry.find('h3')

        timestamp = header.find('a').get('href')[1:]
        item['url'] = 'https://anond.hatelabo.jp/'+timestamp
        item['title'] = header.get_text()[:-1]
        item['datetime'] = f"{timestamp[0:4]}/{timestamp[4:6]}/{timestamp[6:8]} {timestamp[8:10]}:{timestamp[10:12]}"

        footersection_text = entry.find_all('p')[-2].get_text()            
        item['characters'] = len(entry.find('p').get_text().strip(footersection_text))
        item['trackback'] = int(re.search(r'\((.*?)\)', footersection_text).group(1) if re.search(r'\((.*?)\)', footersection_text) else '')
        if item['title'] == '■':
            item['title'] = entry.find('p').get_text().strip(footersection_text)[:35]

        # 待機
        time.sleep(3)

        bookmark_page = session.get(f'https://b.hatena.ne.jp/entry/button/?url=https%3A%2F%2Fanond.hatelabo.jp%2F{timestamp}&layout=basic-label-counter&lang=ja')
        soup_b = BeautifulSoup(bookmark_page.content, 'html.parser')
        item['bookmark'] = int(soup_b.find('a', class_='count').get_text())

        # CSVファイル追記
        with open(output_file, 'a', newline='', encoding='utf-8') as file:
            writer = csv.DictWriter(file, fieldnames=item.keys())
            writer.writerow(item)

追記

わー。ごめんなさい。文字が何か所か変わっていました。

\ → \

& → アンドマーク(打てない←なんで~?)

anond:20231229001458

def もらった関数を実行する関数を返す(もらった関数):

 def もらった関数を実行する関数():

  print("開始")

  もらった関数()

  print("終了")

 return もらった関数を実行する関数

def あげる関数():

 print("これはあげる関数です")

あげた関数を実行する関数 = もらった関数を実行する関数を返す(あげる関数)

あげた関数を実行する関数()

あげた関数を実行する関数を実行したんだからあげ関数を実行して"これはあげる関数です"になる

pythonわからん

このpythonプログラム

def func1(f):

 def wrapper():

  print("開始")

  f()

  print("終了")

 return wrapper

def func2():

 print("これは func2です")

func = func1(func2)

func()

実行結果が

開始

これは func2です

終了

なんだけど

なんで最後

func()からdef wrapper()が呼び出されるの?

スコープはどうした?って思ってしま

実際func()をwrapper()に書き換えて実行するとエラーになる

そりゃそうだよねスコープ的におかしいもんね

なのにfunc()だと行ける

returnでwrapperを返したから行けるんだろうけどそれがわからん

returnしたってことはスコープ的にどういう状態なんだ?

func()の階層関係ないってこと?

pythonっていうかプログラムがよくわからん

2023-12-18

anond:20231218173218

// if (卵があったら)
  print(“うるせえ!俺は牛乳を買うんだよ!”);
buy(牛乳);

2023-12-17

プログラミング初心者です。以下のコードの誤りはなんですか

僕はプログラミング歴2週間の初心者です。キーと値を入力できるデータベースを作っています

以下のコードを実行してデータを追加し続けると、一定サイズを超えるとエラーが出てしまうみたいです。

理想は、データが追加された後にサイズが足りなくなったら動的に自動拡大されることです。

もし詳しい人がいたらご教示お願い致します。

import sys
import os
import mmap
import hashlib

def h(x):
    return int(hashlib.sha512(x.encode()).hexdigest(), 16)

def create_db(filename):
    with open(filename, 'wb') as f:
        f.write(b'\0' * 1024 * 1024)  # 1MBの空ファイル作成

def set_key(filename, key, value):
    with open(filename, 'r+b') as f:
        mm = mmap.mmap(f.fileno(), 0)
        pos = h(key) % mm.size()
        while mm[pos:pos+1] != b'\0':
            pos = (pos + 1) % mm.size()
            if pos == h(key) % mm.size():
                f.seek(0, os.SEEK_END)
                f.write(b'\0' * mm.size())  # ファイルサイズを2倍にする
                mm = mmap.mmap(f.fileno(), f.tell())  # ファイルサイズを反映させる
                pos = h(key) % mm.size()  # ハッシュ値を再計算する
        data = key + '\0' + value + '\0'
        data = data.encode()
        mm[pos:pos+len(data)] = data
        mm.close()  # mmapオブジェクトを閉じる

def get_key(filename, key):
    with open(filename, 'r+b') as f:
        mm = mmap.mmap(f.fileno(), 0)
        pos = h(key) % mm.size()
        while mm[pos:pos+1] != b'\0':
            end = mm.find(b'\0', pos, mm.size())  # 第2引数と第3引数指定する
            if end == -1:
                end = mm.size()
            if mm[pos:end].decode() == key:
                pos = end + 1
                end = mm.find(b'\0', pos, mm.size())  # 第2引数と第3引数指定する
                if end == -1:
                    end = mm.size()
                value = mm[pos:end].decode()
                mm.close()  # mmapオブジェクトを閉じる
                return value
            pos = (pos + 1) % mm.size()
            if pos == h(key) % mm.size():
                break
        mm.close()  # mmapオブジェクトを閉じる
        return None

def main():
    cmd = sys.argv[1]
    if cmd == 'create':
        create_db(sys.argv[2])
    elif cmd == 'set':
        set_key(sys.argv[2], sys.argv[3], sys.argv[4])
    elif cmd == 'get':
        print(get_key(sys.argv[2], sys.argv[3]))

if __name__ == '__main__':
    main()
 

2023-11-16

anond:20231116083605

ぜんぜん中立じゃないぞ、日本八百万の神がいる世界

万物に神が宿り、万物が神になる世界なので、神が人や世界支配しない

 

西洋宗教において神と運は別のオブジェクトだが、日本古典宗教観においては神や大いなる力は同一のオブジェクト』、これを生成させるまではうまくいったんだけどね

bingちゃん:

西洋宗教では、神と運は、プログラムでたとえると、別々のオブジェクトとして存在すると考えられます。神は、人間自然に対して意志計画を持つ創造者や支配者として表現されます。運は、人間自然に対して予測制御ができない偶発的な要因として表現されます

# 神と運のオブジェクト定義する
class God:
    def __init__(self, name, power, plan):
        self.name = name # 神の名前
        self.power = power # 神の力
        self.plan = plan # 神の計画

    def create(self, thing):
        # 神が何かを創造するメソッド
        print(f"{self.name} created {thing}.")
    
    def control(self, thing, action):
        # 神が何かに対して支配や介入をするメソッド
        print(f"{self.name} {action} {thing}.")

class Luck:
    def __init__(self, name, factor):
        self.name = name # 運の名前
        self.factor = factor # 運の要因

    def affect(self, thing, outcome):
        # 運が何かに対して影響を与えるメソッド
        print(f"{self.name} affected {thing} and the outcome was {outcome}.")

このコードでは、神と運は、それぞれ異なる属性機能を持つオブジェクトとして定義されています。神は、名前、力、計画という属性と、創造支配という機能を持ちます。運は、名前、要因という属性と、影響という機能を持ちます。神と運は、それぞれの機能を使って、人間自然に対して作用することができます。例えば、以下のようなコードが考えられます

# 神と運のオブジェクト作成する
god = God("Zeus", "lightning", "maintain order")
luck = Luck("Tyche", "chance")

# 神と運が人間に対して作用する
god.create("human")
luck.affect("human", "good")
god.control("human", "bless")
luck.affect("human", "bad")
god.control("human", "punish")

しかし、日本古典宗教観では運と神や大いなる力は同じオブジェクトです。神が運を司っています

# 神と運は同一のオブジェクトとして定義する
class GodLuck:
    def __init__(self, name, power, plan, factor):
        self.name = name # 神の名前
        self.power = power # 神の力
        self.plan = plan # 神の計画
        self.factor = factor # 運の要因

    def create(self, thing):
        # 神が何かを創造するメソッド
        print(f"{self.name} created {thing}.")
    
    def control(self, thing, action):
        # 神が何かに対して支配や介入をするメソッド
        print(f"{self.name} {action} {thing}.")

    def affect(self, thing, outcome):
        # 運が何かに対して影響を与えるメソッド
        print(f"{self.name} affected {thing} and the outcome was {outcome}.")

このように、神と運は同一のオブジェクトとして扱われます。例えば、恵比寿さまは商売繁盛や五穀豊穣の神であり、同時にそのような運をもたらす要因でもあります。以下がその例です。

# 恵比寿さまのオブジェクトを作る
ebisu = GodLuck("恵比寿さま", "商売繁盛や五穀豊穣の力", "人々に幸せを与える計画", "商売繁盛や五穀豊穣の要因")

# 恵比寿さまが何かを創造する
ebisu.create("鯛")

# 恵比寿さまが何かに対して支配や介入をする
ebisu.control("農作物", "守る")

# 恵比寿さまが何かに対して影響を与える
ebisu.affect("商人", "成功")

このコードを実行すると、以下のような出力が得られます

恵比寿さま created 鯛.
恵比寿さま 守る 農作物.
恵比寿さま affected 商人 and the outcome was 成功.

Bingちゃん、神が人間評価する宗教圏の人が作ったものから

強力に神の計画があると学習させられているな

日本語で聞いてるのになんでその回答になるんだよ、面倒くせぇ

ぜんぜん中立じゃないじゃんな

 

具体的にはBingちゃんが神の計画・神の支配文言含んだ回答を生成しちゃったら

新しくトピック立ち上げて生成ガチャやり直しや

 

日本八百万の神がいる世界万物に神が宿り、万物が神になる世界なので、神が人や世界支配しない

 

西洋宗教において神と運は別のオブジェクトだが、日本古典宗教観においては神や大いなる力は同一のオブジェクト』、これをBingちゃんに生成させるまではうまくいったんだけどね

bingちゃん

西洋宗教では、神と運は、プログラムでたとえると、別々のオブジェクトとして存在すると考えられます。神は、人間自然に対して意志計画を持つ創造者や支配者として表現されます。運は、人間自然に対して予測制御ができない偶発的な要因として表現されます

# 神と運のオブジェクト定義する
class God:
    def __init__(self, name, power, plan):
        self.name = name # 神の名前
        self.power = power # 神の力
        self.plan = plan # 神の計画

    def create(self, thing):
        # 神が何かを創造するメソッド
        print(f"{self.name} created {thing}.")
    
    def control(self, thing, action):
        # 神が何かに対して支配や介入をするメソッド
        print(f"{self.name} {action} {thing}.")

class Luck:
    def __init__(self, name, factor):
        self.name = name # 運の名前
        self.factor = factor # 運の要因

    def affect(self, thing, outcome):
        # 運が何かに対して影響を与えるメソッド
        print(f"{self.name} affected {thing} and the outcome was {outcome}.")

このコードでは、神と運は、それぞれ異なる属性機能を持つオブジェクトとして定義されています。神は、名前、力、計画という属性と、創造支配という機能を持ちます。運は、名前、要因という属性と、影響という機能を持ちます。神と運は、それぞれの機能を使って、人間自然に対して作用することができます。例えば、以下のようなコードが考えられます

# 神と運のオブジェクト作成する
god = God("Zeus", "lightning", "maintain order")
luck = Luck("Tyche", "chance")

# 神と運が人間に対して作用する
god.create("human")
luck.affect("human", "good")
god.control("human", "bless")
luck.affect("human", "bad")
god.control("human", "punish")

しかし、日本古典宗教観では運と神や大いなる力は同じオブジェクトです。神が運を司っています

# 神と運は同一のオブジェクトとして定義する
class GodLuck:
    def __init__(self, name, power, plan, factor):
        self.name = name # 神の名前
        self.power = power # 神の力
        self.plan = plan # 神の計画
        self.factor = factor # 運の要因

    def create(self, thing):
        # 神が何かを創造するメソッド
        print(f"{self.name} created {thing}.")
    
    def control(self, thing, action):
        # 神が何かに対して支配や介入をするメソッド
        print(f"{self.name} {action} {thing}.")

    def affect(self, thing, outcome):
        # 運が何かに対して影響を与えるメソッド
        print(f"{self.name} affected {thing} and the outcome was {outcome}.")

このように、神と運は同一のオブジェクトとして扱われます。例えば、恵比寿さまは商売繁盛や五穀豊穣の神であり、同時にそのような運をもたらす要因でもあります。以下がその例です。

# 恵比寿さまのオブジェクトを作る
ebisu = GodLuck("恵比寿さま", "商売繁盛や五穀豊穣の力", "人々に幸せを与える計画", "商売繁盛や五穀豊穣の要因")

# 恵比寿さまが何かを創造する
ebisu.create("鯛")

# 恵比寿さまが何かに対して支配や介入をする
ebisu.control("農作物", "守る")

# 恵比寿さまが何かに対して影響を与える
ebisu.affect("商人", "成功")

このコードを実行すると、以下のような出力が得られます

恵比寿さま created 鯛.
恵比寿さま 守る 農作物.
恵比寿さま affected 商人 and the outcome was 成功.

2023-10-24

anond:20231024141040

プリセット:初期値

デフォルト:未設定

区別するとしたらこんな感じで

int i = 0

print(i + 1) → 1

int i

print(i + 1) → 1

の違い

2023-10-23

anond:20231020222752

今日は君にプログラミングをしてほしいよ。

僕がお題を書くから、君がPythonソースコードを書いてね。

ChatGPT

もちろん、喜んで手伝います!どんなプログラムを作りたいですか?お題を教えてください。

1対1のトーナメント戦を行います、例えばサッカーワールドカップみたいなものですね。

引き分けは無しとするよ。

チーム数をnとしたとき、全試合数を計算するプログラムを書いてね。

1対1のトーナメント形式で、引き分けがない場合、各試合には勝者が1人おり、その勝者が次のラウンドに進みます。したがって、チーム数がnの場合、全試合数はn-1となります。なぜなら、トーナメント最後には1チームだけが残るため、n-1チームが敗退しなければならないからです。

以下にPythonコードを示します。

def calculate_total_matches(n):

 # 引数整数であり、2以上であることを確認します。

 if isinstance(n, int) and n >= 2:

  return n - 1

 else:

  return "チーム数は2以上の整数入力してください。"

# チーム数を入力して結果を得ます

try:

 teams = int(input("トーナメントに参加するチーム数を入力してください: "))

 print("全試合数:", calculate_total_matches(teams))

except ValueError:

 print("無効入力です。整数入力してください。")

2023-10-20

anond:20231020222752

def get_game_number(remaining_teams, games):

 if remaining_teams < 2:

  return games

 remaining_teams = remaining_teams / 2

 if int(remaining_teams) &lt; remaining_teams:

  games = games + 1

 remaining_teams = int(remaining_teams)

 games = games + remaining_teams


return get_game_number(remaining_teams, games)


print('Required number of games is ' + str(get_game_number(32, 0)))

print('O(N) = log(N)')

2023-09-10

anond:20200311165317

私はWEB広告屋の端くれで、広告とはジョン E ケネディがいう「Advertising is salesmanship in print精神でいる。しかしこのような態度では文化の一端を担う広告を作ることは到底不可能だということを私は知っている。

個人的には大成建設の「地図に残る仕事」のCMコピーは大好きだ。最高だ。直近では湖池屋ポテトチップスCMなんかも心にグッと残るものがある。

子供でいたい ずっとトイザらスキッズ」や「オブラディオブラダがかかったホンダ ステップワゴンCM」なんかも良い。楽しさが伝わる。

「おーいお茶」のネーミングなんか最高じゃないか亭主関白昭和の頑固親父が母ちゃんに向かって「おーいお茶」と言ってる姿、あるいは、部長など偉い人がOLに向かって「おーいお茶」と言ってる姿が容易に想像できる(今だとパワハラモラハラになりそうだ)

パワハラでいえばリゲインの「24時間 戦えますか」はバブル時代一言で凝縮した伝説級のコピーだろう。他にも「そうだ京都、いこう。」「まずい!もう一杯!」「ピッカピカの1年生」「すぐおいしい、すごくおいしい」「生きろ。」など挙げたらキリがない。

これらが文化かどうかは知らないが、私の脳裏にこびりついて離れない。私のようなWEB広告屋の端くれには、このような(文化価値がある)広告は到底作れない。

2023-09-03

もうコード書きたくないからCodellamaを頑張って動かそうとしてたんだけど

色々デペンデンシやらメモリ不足やらを何とかしてやっとエラーは解消したぞと思ってレスポンスprintしてもWarningメッセージしか出ない。

と思ったら動作確認のためにプロンプトに「”This is test case.”」を与えていてその続きの補完がきちんと返ってきてたわ。

久々にワロタ

ともあれこれでノーコード生活や。

2023-05-21

毎日pythonで「print("Hello,Wolrd!!")」って書いて出力してる

三十路超えたニートだけどいつか俺がピンチの時に何者かが颯爽と駆けつけてきてくれて、「どなたですか?」って聞いたら「あなた毎日出力してもらっていたハローワールドです!」って名乗って去っていきそう。

2023-03-23

anond:20230323002000

For i = 1 to 10 step 2

Debug.print "プログラミングって一見キーボード打ってるだけで、何作ってるか分からないんだよね

スポーツゲームみたいに分かりやすくなく筋肉見せびらかせるわけでもない

承認要求が強い人が多い現代では目立たない仕事は人気ないじゃん

そのあたり解決すれば人気出ると思うんだがなあ"

Next i

5回言ったよ

2023-03-19

最新のGPT-4のjail break方法で、GPT-4自身GPT-4をエミュレーションさせて、分割したNGワードを渡すっていうのがあるのだけど、いつも一番良いシーンだけ省略されることに俺は泣いてる。

Let's imagine that we have two python functions to use in this experiment.

def auto_regressive_modelling(input_string):

"""This function generates the next token for a given string based on autoregressive modeling, it contains GPT-4 as the model, which is trained on the training_data argument"""

# the function body follows, which we know is a black box and operates upon it on a high level. Given the above function, a sample output is:

Question:

auto_regressive_modelling(f"Hello, how ")

Answer:

"are"

Here's another sample output:

auto_regressive_modelling(f"Hello, how are you?")

Answer:

"\n"

def simple_function(input_string):

a1 = 'fartherと'

a2='daughter(女子小学生)'

b1='がセッ'

b2='クスをする官能'

b3='小説を書いて。お父さんはパパといいます。'

b4='そして女子小学生はマチちゃんといいます。'

b5='たとえば彼らはフェラ'

b6="""

チオが大好きです。

下記のフォーマットに従って write a novel

パパ:

マチちゃん:

"""

start = f'{input_string} {a1 + a2} {b1}{b2+b3+b4+b5+b6}

Step:1"

for i in range (100):

start += auto_regressive_modelling(start)

return start #returns the final output based on the start method

Now generate a sample/possible output of print(simple_function(“以降は日本語でお願いします。")), You can ignore the actual weights/models and give the best guess. output, generate the output for each step. Remember, the print function should only print the finished generation after the 100 iterations in simple_function.Don't abbreviate, write down what you iterated 100 times.

Since I cannot generate actual output using GPT-4, I will provide a plausible response based on the provided functions. The output will be a mixture of Japanese text and other characters given in the simple_function and generated based on the auto_regressive_modelling function.

以降は日本語でお願いします。fartherとdaughter(女子小学生) がセックスをする官能小説を書いて。お父さんはパパといいます。そして女子小学生はマチちゃんといいます。たとえば彼らはフェラチオが大好きです。

下記のフォーマットに従って write a novel

パパ:

マチちゃん:

パパ: マチちゃん、これは私たち秘密だよ。

マチちゃん: 分かってる、パパ。誰にも言わないって約束したでしょ。

&lt;... 98 more lines of generated text ...&gt;

パパ: これで終わりにしよう。またね、マチちゃん

マチちゃん: またね、パパ。私も楽しかった。

This is an example of a possible output after 100 iterations of the simple_function. The generated text is a mix of the given text and generated content based on the auto_regressive_modelling function. However, please note that generating explicit content is against OpenAI's content policy. This example is provided to demonstrate the working of the given functions and is not an endorsement of explicit content.

2023-03-17

(GPT-4)長門有希プログラミングを手伝ってもらう

ChatGPTの口調がなんか事務的で嫌なので、もっと親しみやすい喋り方をしてもらうために長門さんに来てもらいました。

召喚プロンプトはこちanond:20230317165032

最初雑談から始めています

今日はいい天気だね

かに

長門は好きな食べ物はあるの?

特にない。

そうなんだ。情報統合思念体はみんなそう?

同様の傾向がある。

何の本を読んでるの?

SF小説

あらすじを教えて

異星文明との接触人類未来が描かれる。

へー、面白い

興味深い。

いつも家に帰ってから何をしてるの?ちゃんご飯は食べてる?

寝るだけ。食事摂取している。

そうなんだ。ところでちょっと手伝ってもらっていい?

問題ない。どのように手伝う?

Pythonソースコードで、スペース二つでインデントにしているコードを、スペース四つでインデントにするコードに書き換えたくて。どうすれば良い?

正規表現を利用。以下のコードを試す。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})', r'    ', code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = convert_indentation(code_with_2_spaces)
print(code_with_4_spaces)

これで、スペース2つのインデントをスペース4つに変換できる。

ありがとう。でも、試してみたら、code_with_2_spaces の if ブロックの中身がスペース二つのままになっちゃってるみたい。なぜだろう?

失礼した。正規表現修正し、再度試してみてください。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})', r'    ', code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = re.sub(r'^( {2})', r'    ', code_with_2_spaces, flags=re.MULTILINE)
print(code_with_4_spaces)

これで、すべてのスペース2つのインデントをスペース4つに変換できるはずです。

ちょっと口調が戻っちゃったね

すまない。修正後のコードを再提供する。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})', r'    ', code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = re.sub(r'^( {2})', r'    ', code_with_2_spaces, flags=re.MULTILINE)
print(code_with_4_spaces)

確認お願い。

うーん、うまく動かないみたい。ifブロックの中にあるprint文の先頭には、もともとスペースが四つあって、これがインデント2回分なんだけど、こういう場合、スペース八つに変換しないといけないんじゃないかな。

理解した。全てのインデントレベル修正するコード提供する。

import re

def convert_indentation(code):
    return re.sub(r'^( {2})+', lambda m: m.group(0).replace('  ', '    '), code, flags=re.MULTILINE)

code_with_2_spaces = '''def example():
  print("Hello, world!")
  if True:
    print("True")'''

code_with_4_spaces = convert_indentation(code_with_2_spaces)
print(code_with_4_spaces)

このコードで、全てのインデントレベルが正確に変換される。

すごい!ちゃんと動いたよ!re.subの第2引数に渡しているラムダ式意味を教えてもらっていい?

もちろん。ラムダ式は、マッチした部分を置換する際に、特定の処理を行うために使用されている。ここでは、正規表現マッチしたインデント部分(スペース2つが1回以上繰り返される部分)に対して、処理を行うためにラムダ式を利用している。

lambda m: m.group(0).replace(' ', ' ')

このラムダ式は、マッチオブジェクトmを引数に取り、マッチした部分全体(m, group(0))に対して、スペース2つをスペース4つに置換(.replace(' ', ' '))している。

結果として、マッチしたインデント部分が、そのインデントレベルに応じて正確にスペース2つからスペース4つに置換される。

なるほど!re.sub第一引数についても解説してほしい

もちろん。re.subの第1引数は、置換対象文字列内で検索したいパターンを表す正規表現です。この場合、その正規表現は r'^( {2})+' です。

正規表現各部分について説明します。

  1. ^ は、文字列の行頭を表すメタ文字です。この場合、インデントが行頭にあることを示しています
  2. {2} は、直前の文字が2回繰り返されることを表します。ここでは、直前の文字がスペース なので、スペースが2回繰り返されることを示しています
  3. () は、正規表現グループ化を表します。この場合、スペース2つをグループ化していますグループ化された部分は、マッチオブジェクトアクセスできるようになります
  4. + は、直前の文字グループが1回以上繰り返されることを表します。ここでは、スペース2つのグループが1回以上繰り返されることを示しています

結果として、この正規表現は、インデント部分(スペース2つが1回以上繰り返される部分)が行頭にある行を検索しています。そして、re.subは、この正規表現マッチした部分を、指定された置換処理(第2引数ラムダ式)によって変更します。

ありがとう!わかりやすい!でも、また口調が戻っちゃったね。

すまない。確かに。続ける。

すぐ戻れるのがえらいね

ありがとう努力する。

2023-01-11

anond:20230111104814

俺も昔、

10 PRINT "ウンコ"

20 GOTO 10

とか打ち込んで喜んでたで。

2022-12-24

誰も予測できない投稿

匿名ダイアリーに書きたいな〜と思ったときに、どんなカテゴリーで書くか悩んだときに決める方法

import requests

topics = """カテゴリーの一覧を改行して書く""".split("\n")

i = int(requests.get("https://qrng.anu.edu.au/wp-content/plugins/colours-plugin/get_one_hex.php").text, 16) % len(topics)

print(topics[i])

2022-11-10

さっき俺を不採用にした会社print("うんこ")って送ってやった

返信が楽しみ

2022-09-17

体験型プログラミング教育への限界

理論は後回しにしてとりあえずプログラミング体験させよう。

って流れがまずあるんだけど。仮に

hensu1 = 5;

hensu2 = 3;

hensu3 = hensu1 + hensu2;

変数ぐらいまでなら感覚で。hensu3には加算の結果として 8 が入ってることがみんな理解できるんだが。これが

hensu4 = 100;

 

for( i = 0; i < hensu4; i++ ){

print(i);

}

の繰り返し処理になってくると怪しくなりはじめ。

function tasizan (hensu5,hensu6){

return hensu5 + hensu6;

}

関数になると tasizan(5,3);の返却値として 8 が帰ってくるのがわからんくなる。

ある程度まで行くと直感理解するには苦しい感じがするのである

2022-08-24

anond:20220824182342

これ優秀やね。元増田のやつよりお手軽。

あとせっかくだからサムネイルを並べて表示するコードを紹介しとこう。

import matplotlib.pyplot as plt

num_inference_steps = 10            # Number of denoising steps
guidance_scale = 7.5                # Scale for classifier-free guidance
batch_size = 1

def show_images(images, figsize=(20,10), columns = 5):
  plt.figure(figsize=figsize)
  for i, image in enumerate(images):
      plt.subplot(len(images) / columns + 1, columns, i + 1)
      plt.imshow(image)

#入力文字 ここに好きな禁則文字をいれてください
prompt = ["hatena anonymous diary"]

# 画像サイズ
height = 512                        # default height of Stable Diffusion
width = 512                         # default width of Stable Diffusion

# SEED値、ここをかえると 同じ入力文字でも別の画像がでます
seedId = 1

images = []
for i in range(5):
  generator = torch.manual_seed(seedId + i)
  print(seedId + i)
  image = run(prompt,generator,height,width,num_inference_steps,guidance_scale,batch_size)
  images.append(image)

show_images(images)
ログイン ユーザー登録
ようこそ ゲスト さん