Créons un script qui s'enregistre avec Ideone.com en Python.

Python으로 Ideone.com에 업로드하는 스크립트를 만들어보자.

Au début (개요)

Partage de code (코드 의 공유)

En regardant divers sites communautaires de programmation, Pour afficher votre code, pour appliquer d'autres points forts de la syntaxe, Vous pouvez voir que vous utilisez différents Web IDEs. En effet, il n'est pas possible d'écrire les polices et les couleurs de texte avec des balises HTML une par une.

여러 프프로그래밍 커뮤니티를 둘러보다 보면, 자신의 소스 코드를 보여주기 위해, 혹은 Syntax Highlighting을 적용시키기 위해, 여러가지 Web IDE를 사용하는 것을 발견할 수 있다. 일일히 HTML 태그를 적어가며 폰트를 지정하고, 글자 색을 입힐 수는 없는 노릇이다.

À propos de divers IDE Web (여러 Web IDE 에 대해)

codepad, Ideone, JSFiddle (HTML / CSS / Javascript uniquement) En tous cas), Coding Ground (disponible sur la plateforme «Web Shell»), Il y en a beaucoup comme Pastebin.com (faites-le simplement paraître inexécutable), Pour moi, «ideone.com »était le plus simple à utiliser. Il prend en charge de nombreux langages et vous permet d'exécuter réellement votre code. C'est un bonus que les points forts de la syntaxe semblent bons.

codepad, Ideone, JSFiddle(HTML / CSS / Javascript 밖에 못 쓰지만 아무튼), Coding Ground(여기는 Web Shell 기반으로 이용 가능함), Pastebin.com(실행은 부가능하고, 보여주기만 가능) 등 많이 있는데, 나는 ideone.com 쪽이 제일 쓰기 쉬웠던 것 같다. 지원하는 언어도 많을 뿐더러, 실제로 소스 코드를 실행해 볼 수도 있기 때문이다. Syntax Highlight 기능이 보기 좋게 꾸며주는 것은 덤.

Cependant, c'est aussi gênant (허나, 이것 마 저도 귀찮다)

Trouvez un navigateur Web, connectez-vous à quelque chose comme ʻideone.com`, copiez mon code et copiez à nouveau l'URL créée. Ce n'est qu'alors que vous pourrez partager le lien. C'est une décision vraiment inefficace. Alors, essayons d'obtenir l'URL dès que nous la créons et la téléchargeons l'une après l'autre.

웹 브라우저로 가서, ideone.com 등으로 접속하고, 내 소스 코드를 복붙하여 실행 후, 만들어진 URL을 또 다시 복붙한다. 이제야 링크를 공유할 수 있다. 실로 비효율적인 움직임이다. 그러므로, 작성하고 바로 업로드해서 바로 URL을 얻을 수 있도록 해보자.

Analyse du flux de données (데이터 흐름 의 분석)

Simulation pour les tests (테스트 를 위한 시뮬 레 이션)

Pour l'instant, connectons-nous à ʻideone.com` et enregistrons le code.

우선 실제로 ideone.com 으로 접속해서 소스 코드를 등록해보자.

0001.png

N'écrivez simplement que «test». Si vous cliquez sur le bouton Exécuter ici, une URL qui peut être partagée apparaîtra, mais ce n'est pas le but maintenant. Voyant que l'adresse change, il est probable qu'il utilisera la balise «Form» et la transmission «POST». Il est nécessaire de connaître l'adresse et les données de la destination à laquelle les données sont transmises. Essayez d'utiliser les outils de développement Chrome pour cela.

간단하게 test만 적어둔다. 여기서 Run 버튼을 누르면 공유가 가능한 URL이 나올테지만, 지금 목적은 그게 아니다. 주소가 바뀐다는 사실을 보면 Form 태그로 POST 전송을 이용할 가능성이 높다. 데이터를 전송할 목적지의 주소와 데이터를 알아낼 필요가 있다. 이를 위해 Chrome의 개발자 도구를 사용한다.

0002.png

Lorsque toutes les pages ont été chargées de cette manière, effacez l'onglet réseau et attendez. Et «Run». Après cela, arrêtez le travail avec le bouton ʻESC` au bon moment. Quand cela arrive,

위와 같이 페이지 로딩이 완전히 끝난 상태에서 Network 탭을 비워둔다. 그리고 Run. 그 후 타이밍에 맞춰 ESC 버튼을 눌러 동작을 정지시킨다. 그러면,

Résultat (결과)

0003.png

Comme le montre l'image, les informations de la page transmise «POST» et la page créée pour se déplacer ultérieurement apparaissent. Si vous cliquez sur cette page soumettre et regardez les informations dans l'en-tête, il est dit:

사진처럼 POST 전송한 페이지의 정보와, 앞으로 이동할 만들어진 페이지가 나타난다. 이 submit 페이지를 클릭하여 헤더 정보를 보면 이렇게 적혀있다.

0004.png

Lors de la connexion à / ideone / Index / submit /, il reçoit HTTP 302 et redirige avec l'en-tête Location. Jetons un coup d'œil aux données envoyées d'ici.

/ideone/Index/submit/에 접속하면 HTTP 302를 받으며 Location 헤더를 통해 리다이렉션한다. 이쪽에서 보낸 데이터를 보자.

0005.png

Diverses variables ont été transmises ensemble. Et vous pouvez voir que la variable file est le code que vous avez créé précédemment. Si vous essayez de vous connecter en entrant directement l'adresse de l'en-tête Location,

여러 변수가 함께 전송되었다. 그리고 file 변수에 아까 적은 소스 코드가 적혀있는 것을 확인할 수 있다. Location 헤더의 주소를 직접 입력하여 접속해보면,

0006.png

La page correcte est certainement créée.

제대로 된 페이지가 확실히 만들어져있다.

Organiser (정리)

Organisons-le ici.

여기까지 일단 정리해보자.

--Run envoie des données à la page/ ideone / Index / submit /avec POST.

C'est simple. En utilisant ces informations, écrivons en fait le code du script.

매우 심플하다. 이번에는 이 정보를 이용해서 실제로 스크립트 코드를 적어보자.

Créer un script (스크립트 의 작성)

L'environnement de test utilise Python 3.5 dans ʻUbuntu. Vous avez déjà installé les bibliothèques requests et lxml avec pip. Cependant, depuis que j'ai utilisé à l'origine Windows 10, j'ai commencé à utiliser les outils de développement de Chrome à partir de Windows. Le fait est que cela peut être n'importe où.

테스트 환경은 Ubuntu 에서 Python 3.5를 사용한다. 이미 pip로 requests와 lxml 라이브러리를 설치해둔 상태이다. 그러나 원래 Windows 10을 사용하고 있기 때문에 Chrome의 Developer Tool은 Windows에서 사용했다. 말하자면, 어디든 상관 없다는 이야기다.

Code de test # 1 (테스트 코드 # 1)

Tout d'abord, incarnons-le tel qu'il apparaît sur la capture d'écran.

우선, 스크린 샷에 나와있는 대로 구현해보자.

ideone-test-1.py


from requests import get, post

from pprint import pprint

url = "http://ideone.com/ideone/Index/submit/"

headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }

data = {
    "p1": "69fc2d31721791fd3912a444035b0ba6",
    "p2": 9,
    "p3": 20,
    "p4": 1710,
    "clone_link": "/",
    "file": "Lorem ipsum dolor sit amet",
    "input": '',
    "syntax": 1,
    "timelimit": 0,
    "note": '',
    "_lang": 116,
    "public": 1,
    "run": 1,
    "Submit": '',
}

rs = post(url, headers=headers, data=data)
print(rs)
pprint(dict(rs.headers))

Le contenu du code a été changé en Lorem ipsum dolor sit amet. J'ai changé l'en-tête ʻUser-Agent en celui de Chrome` parce que je ne sais pas s'il sera banni du serveur. Maintenant, cours.

소스 코드의 내용은 'Lorem ipsum dolor sit amet' 으로 변경했다. 혹시 서버에서 밴당할까 싶어 User-Agent 헤더도 Chrome의 것으로 바꿨다. 이대로 실행.

<Response [200]>
{'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, '
                  'pre-check=0',
 'Connection': 'Keep-Alive',
 'Content-Encoding': 'gzip',
 'Content-Length': '11067',
 'Content-Type': 'text/html',
 'Date': 'Tue, 02 Aug 2016 05:23:03 GMT',
 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT',
 'Keep-Alive': 'timeout=1, max=90',
 'Pragma': 'no-cache',
 'Server': 'Apache/2.2.22 (Debian)',
 'Set-Cookie': 'JIDEONE=d6e51e6c3ec5a653d7e1be24b87cf050; expires=Thu, '
               '02-Aug-2018 05:23:04 GMT; path=/',
 'Vary': 'Accept-Encoding',
 'X-Powered-By': 'PHP/5.4.15-1'}

Le n ° 200 arrive. Oh, j'ai raté la redirection. Ajoutez ʻallow_redirects = True` à l'argument de la fonction post et réexécutez.

200번이 온다. 아, 리다이렉트한다는 것을 깜빡했다. post 함수의 인자에 allow_redirects=True 를 추가해서 재실행한다.

<Response [302]>
{'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, '
                  'pre-check=0',
 'Connection': 'Keep-Alive',
 'Content-Encoding': 'gzip',
 'Content-Length': '20',
 'Content-Type': 'text/html',
 'Date': 'Tue, 02 Aug 2016 05:54:25 GMT',
 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT',
 'Keep-Alive': 'timeout=1, max=85',
 'Location': '/',
 'Pragma': 'no-cache',
 'Server': 'Apache/2.2.22 (Debian)',
 'Set-Cookie': 'PHPSESSID=2gg67ij2vmh97d3aapqia8sgt4; path=/',
 'Vary': 'Accept-Encoding',
 'X-Powered-By': 'PHP/5.4.15-1'}

C'est finalement 302, mais l'en-tête Location est faux. Eh bien, ce n'est pas inattendu. Probablement un problème avec les cookies ou le hachage de p1. Cette fois, imitons le comportement du navigateur Web tel qu'il est.

드디어 302가 되었지만, Location 헤더가 맞지 않다. 뭐, 예상 못한 것은 아니다. 아마도 Cookie나 p1 의 해쉬코드가 문제일 것이다. 이번에는 웹 브라우저의 동작을 그대로 따라해보자.

Code de test # 2 (테스트 코드 # 2)

Restauration de racines variables (변수 값 의 복원)

Avant d'écrire le code, il y a quelques points à vérifier. Les variables qui ne sont pas 0, telles que «syntax», «public» et «run», peuvent être devinées avec des variables «booléennes», mais je ne comprends pas la signification de «p1, p2, p3, p4». Connectons-nous à view-source: http: // ideone.com / et vérifions-le.

소스 코드를 적기 전에 몇 가지 확인해야 할 것이 있다. syntax나 public, run 같이 0 혹은 1로 되어있는 변수들은 Boolean 변수로 추측이 가능하지만, p1, p2, p3, p4 의 의미를 알 수가 없다. 당장 view-source:http://ideone.com/ 에 접속해 조사해보자.

0011.png

Vous pouvez le voir dès que vous abaissez un peu le parchemin. Le hachage est directement dans le «p1» des balises «entrée», et les nombres sont également saisis dans «p2» et «p3». Au fait ... Y a-t-il quelque chose dans p4? ?? ?? Vous n'avez pas à paniquer. Vous devriez certainement le donner quelque part. Dans de tels cas, il s'agit souvent de «Javascript». Recherche en utilisant <script ou .js comme mot-clé.

스크롤을 조금 내리니 보인다. input 태그 중 p1 에 해쉬코드가 그대로 들어가있고, p2와 p3에는 숫자가 입력되어있다. 그런데... p4에는 아무것도 없어??? 당황할 필요 없다. 분명히 어딘가에서 값을 줄 것이다. 이런 경우에는 대체로 Javascript로 되어 있는 경우가 많다. '<script' 나 '.js' 로 검색해보자.

0013.png

J'ai beaucoup regardé autour de moi, mais quand j'ai trouvé que ʻideone-common.js` était le plus intéressant et que je l'ai ouvert,

여기저기 둘러봤는데, 이 'ideone-common.js'가 가장 의심스러워 열어봤더니,

0014.png

Je l'ai trouvé.

찾았다.

Calcul des variables (변수 의 계산)

C'est un peu facile à voir car c'est jQuery. Il semble que la fonction «protection» soit utilisée pour «p4» pour factoriser «p1, p2, p3» et substituer le résultat. Cependant, il semble y avoir un problème. Je ne vois pas la définition de la fonction «protection». Et vous pouvez voir protection dans la partie ʻeval` que vous avez déplacée. D'après les facteurs de «p, a, c, k, e, d», il semble que ce soit une lecture aléatoire.

jQuery로 되어 있어 조금 보기 쉽다. p4에 protection이라는 함수로 p1, p2, p3를 인자로 넣어 그 결과를 대입하는 것으로 보인다. 그러나 문제가 있어 보인다. protection 함수의 정의가 보이지 않는다. 그리고 위의 드래그한 eval 부분에 protection이 보인다. p,a,c,k,e,d 라는 인자를 보아하니 난독화된 것 같다.

0015.png

Lorsque vous l'exécutez réellement avec les outils de développement, la fonction protection est créée. C'est un peu intéressant, mais ce n'est pas le but maintenant. Analysons la fonction protection.

실제로 개발자 도구에서 실행시켜보니 protection 함수가 만들어진다. 살짝 흥미가 동하지만 지금 목적은 이게 아니다. protection 함수를 분석해보자.

protection.js


function protection($a, $b, $c) {
    var $r = 0;
    $a = mul($c, 2);
    for (var $i = 0; $i < $c; $i++) {
        $r = add($r, _mul($i, $b))
    }
    return $r;
}

Le code écrit sur une seule ligne est difficile à voir, donc je l'ai envoyé depuis Online JavaScript Beautifier. Ce n'était pas un calcul difficile. Je n'ai pas du tout besoin de «$ a». En bref,

한 줄로 써 있는 소스 코드는 보기 힘들기 때문에 Online JavaScript Beautifier에서 개행했다. 어려운 계산은 아니었다. 심지어 $a는 쓰이지도 않는다. 요약해보면,

protection-summary.js


function protection(a, b, c) {
    var r = 0;
    for (var i = 0; i < c; ++i) r += i * b;
    return r;
}

Ce sera comme ça. Si vous organisez la formule de calcul elle-même,

이렇게 된다. 계산식 자체를 정리해보면,

protection-summary2.js


function protection(a, b, c) {
    return b * ((c - 1) * c) / 2;
}

Ce sera aussi comme ça. C'est ce dont j'ai besoin maintenant. Les matériaux sont prêts. Écrivons un script Python.

이렇게도 된다. 지금 필요한 것이 이것. 재료가 모였다. Python 스크립트를 쓰자.

Code de script complet (전체 스크립트 코드)

ideone-test-2.py


from requests import get, post
from lxml.etree import HTML
namespaces = dict(re="http://exslt.org/regular-expressions")

from pprint import pprint

''' #1:Obtenez des cookies.'''
#Recevez d'abord la page d'index et enregistrez le cookie.
# (먼저 index 페이지를 받아 Cookie 등을 저장)
url = "http://ideone.com/"
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }
rs = get(url, headers=headers)
cookies = rs.cookies
root = HTML(rs.content if rs.ok else "<error/>")

data = {
    "file": "Lorem ipsum dolor sit amet",
    "input": '',
    "syntax": 1,
    "timelimit": 0,
    "note": '',
    "public": 1,
    "run": 1,
    "Submit": '',
}

''' #2: p1, p2,Calculez p4 à partir de p3.(p1, p2, p3을 이용해 p4 계산) '''
#Analysez le contenu HTML et p1 avec XPath, p2,Obtenez p3.
# (HTML의 내용을 분석하여 XPath를 이용해 p1, p2, p3을 가져온다.)
#for x in root.xpath('//*[@id="p1" or @id="p2" or @id="p3" or @id="p4"]'):
#Vous pouvez également le faire avec une expression régulière.
# (정규식으로 이렇게도 가능)
for x in root.xpath('//*[re:test(@id,"p[1-3]")]', namespaces=namespaces):
    data[x.get("id")] = x.get("value")

p2 = int(data["p2"])
p3 = int(data["p3"])
p4 = p2 * sum(range(p3))
data["p4"] = str(p4)


''' #3: _Obtenez la liste des codes lang.(_lang 코드 리스트를 획득) '''
#Obtenez directement une liste des codes de langue et utilisez-les.
# (언어 코드 리스트를 직접 획득하여 사용해 보자.)
_langs = {}
#for x in root.xpath('//li/*[starts-with(@id,"menu-lang-")]'):
for x in root.xpath('//li/*[re:test(@id,"menu-lang-[0-9]+")]', namespaces=namespaces):
    _langs[x.text] = int(x.get("data-id"))

data["_lang"] = _langs["Python 3"]


url = "http://ideone.com/ideone/Index/submit/"
rs = post(url, headers=headers, cookies=cookies, data=data, allow_redirects=False)
print(rs)
pprint(dict(rs.headers))

Quel est le résultat de l'exécution?

실행한 결과는?

<Response [302]>
{'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, '
                  'pre-check=0',
 'Connection': 'Keep-Alive',
 'Content-Encoding': 'gzip',
 'Content-Length': '20',
 'Content-Type': 'text/html',
 'Date': 'Fri, 05 Aug 2016 06:40:25 GMT',
 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT',
 'Keep-Alive': 'timeout=1, max=79',
 'Location': '/UH3fgT',
 'Pragma': 'no-cache',
 'Server': 'Apache/2.2.22 (Debian)',
 'Set-Cookie': 'settings=%7B%22run_lang%22%3A%22116%22%7D; expires=Wed, '
               '01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%2C%22run_run%22%3A%221%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%2C%22run_run%22%3A%221%22%2C%22run_syntax%22%3A%221%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%2C%22run_run%22%3A%221%22%2C%22run_syntax%22%3A%221%22%2C%22run_timelimit%22%3A%220%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/',
 'Vary': 'Accept-Encoding',
 'X-Powered-By': 'PHP/5.4.15-1'}

L'adresse est souvent incluse dans l'en-tête «Location».

Location 헤더에 주소가 잘 들어가있다.

0016.png

La page apparaît également normalement. Eh bien, il peut être utilisé tel quel, et on peut dire qu'il est presque terminé, mais organisons-le pour qu'il puisse être utilisé avec bash.

페이지도 정상적으로 나온다. 뭐, 이대로도 쓸 수 있고, 거의 완성이라고도 할 수 있지만, bash에서 쓸 수 있도록 정리해보자.

Code de référence (정리 소스 코드)

ideone.py


from os.path import exists, split, splitext
from sys import argv

from urllib.parse import urlunparse
from requests import get, post
from lxml.etree import HTML
namespaces = dict(re="http://exslt.org/regular-expressions")

from pprint import pprint


extensions = {
    ".c": "C",
    ".cpp": "C++14",
    ".java": "Java7",
    ".pl": "Perl",
    ".php": "PHP",
    ".py": "Python 3",
    ".ruby": "Ruby",
    ".sql": "SQL",
    ".vb": "VB.NET",
    ".go": "GO",
    ".js": "JavaScript (rhino)",
    ".lua": "Lua",
}

def get_ideone(_lang):
    url = "http://ideone.com/"
    headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }
    rs = get(url, headers=headers)
    root = HTML(rs.content if rs.ok else "<error/>")

    data = {}
    for x in root.xpath('//*[re:test(@id,"p[1-3]")]', namespaces=namespaces):
        data[x.get("id")] = x.get("value")

    p2 = int(data["p2"])
    p3 = int(data["p3"])
    p4 = p2 * sum(range(p3))
    data["p4"] = str(p4)

    _langs = {}
    for x in root.xpath('//li/*[re:test(@id,"menu-lang-[0-9]+")]', namespaces=namespaces):
        _langs[x.text.upper()] = int(x.get("data-id"))
    data["_lang"] = _langs[_lang]

    return rs.cookies, data

def ideone(path, _lang=''):
    d, f = split(path)
    n, e = splitext(f)

    if len(_lang) <= 0:
        _lang = "Text"
        if e.lower() in extensions.keys():
            _lang = extensions[e.lower()]

    cookies, data = get_ideone(_lang.upper())

    data.update({
        "input": '',
        "syntax": 1,
        "timelimit": 0,
        "note": '',
        "public": 1,
        "run": 1,
        "Submit": '',
    })

    with open(path, 'r') as ro:
        data["file"] = ro.read()

    url = "http://ideone.com/ideone/Index/submit/"
    headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }
    rs = post(url, headers=headers, cookies=cookies, data=data, allow_redirects=False)

    scheme = "http"
    netloc = "ideone.com"
    path = rs.headers["Location"]
    params = ''
    query = ''
    favorite = ''
    return _lang, urlunparse((scheme, netloc, path, params, query, favorite))

def usage(name):
    print("Usage: ./{} <file1> <file2> ...".format(name))

def main(argc, args):
    if argc == 1:
        d, f = split(__file__)
        usage(f)
    else:
        for i, x in enumerate(args[1:]):
            d, f = split(x)
            _lang, url = ideone(x)
            print(" - #{} ({}): {} - {}".format(i + 1, f, _lang, url))

if __name__ == "__main__":
    main(len(argv), argv)

Je suis un peu déçu de la méthode de correspondance des extensions de fichiers, mais si vous modifiez la partie «extensions» du code et que vous l'utilisez, les extensions seront automatiquement reconnues et téléchargées.

파일 확장자를 매칭시키는 방법이 조금 아쉽지만, 소스 코드 안의 extensions 부분을 수정해서 사용하면 자동적으로 확장자를 인식하여 업로드 가능하다.

Résultat d'exécution (실행 결과)

root@q:~# python3 ideone.py ideone.py
 - #1 (ideone.py): Python 3 - http://ideone.com/5QJTRR

C'est sorti correctement. Connectons-nous. http://ideone.com/5QJTRR

잘 나온다. 접속해보자.

0021.png

Bien. Le code que j'ai écrit est inclus tel quel.

오케이. 내가 쓴 소스 소드가 그대로 들어가 있다.

Conclusion (결론)

Jusqu'à présent, j'ai d'abord posté sur Qiita comment perdre du temps efficacement. Je l'ai écrit, mais honnêtement, je ne sais pas quand l'utiliser. J'essaierai de l'utiliser un jour.

여기까지 시간을 효율적으로 낭비하는 방법에 대해 Qiita에 처음으로 기술하였다. 내가 적어놓고도 언제 쓸지 솔직히 모르겠다. 언젠간 쓰겠지.

Recommended Posts

Créons un script qui s'enregistre avec Ideone.com en Python.
Créons un groupe gratuit avec Python
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python
Créer une nouvelle page en confluence avec Python
Créons une base de données clients où le code QR est automatiquement émis en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Créer un répertoire avec python
Que contient cette variable (lorsque le script Python est en cours d'exécution)
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur
Créez un faux serveur Minecraft en Python avec Quarry
[Piyopiyokai # 1] Jouons avec Lambda: création d'un script Python
Créer un conteneur DI avec Python
Faisons une interface graphique avec python.
Créez un fichier exe qui fonctionne dans un environnement Windows sans Python avec PyInstaller
Créer un compte enfant de connect with Stripe en Python
Créons un diagramme PRML avec Python, Numpy et matplotlib.
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Créez le code qui renvoie "A et prétendant B" en python
Faisons un graphe avec python! !!
Un ensemble de fichiers de script qui font wordcloud avec Python3
Créer une chaîne aléatoire en Python
Ecrire un script batch avec Python3.5 ~
[Python / Django] Créer une API Web qui répond au format JSON
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
J'essaierai de créer une structure de répertoires Python que je ne regretterai pas plus tard
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un décorateur de fonction Python avec Class
[Python] Un programme qui crée des escaliers avec #
Faisons un jeu de shiritori avec Python
Créer une application GUI simple en Python
Créons un environnement virtuel pour Python
[Python] Créez un environnement virtuel avec Anaconda
Exécuter l'interpréteur Python dans le script
Faisons la voix lentement avec Python
Créez un système stellaire avec le script Blender 2.80
Créer un compteur de fréquence de mots avec Python 3.4
[Python] Créez un LineBot qui s'exécute régulièrement
[GPS] Créer un fichier kml avec Python
Un monde typé qui commence par Python
Créez un framework Web avec Python! (1)
Faisons un calcul de combinaison avec Python
Lançons le script Bash en Java
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
Créez un environnement de test Vim + Python en 1 minute
Créer un fichier GIF en utilisant Pillow en Python
[Python] Récupérez les fichiers dans le dossier avec Python
Créez des données de test comme ça avec Python (partie 1)
Un mémo que j'ai écrit un tri rapide en Python
Créer un graphique de distribution normale standard en Python