0

これが私のコードです:

import urllib
import re
import requests
import httplib
import socket
from colorama import *
from time import gmtime, strftime
  def hell():
    hcon = raw_input(Fore.RED + Style.BRIGHT + "Website: ")
    r = requests.get("http://" + hcon + "/phpmyadmin")
    r2 = requests.get("http://" + hcon + "/pma")
    if r.status_code == 404:
     print(strftime("[%H:%M:%S]", gmtime()) + " /phpmyadmin/ not found!") 
    elif r: 
     print(strftime("[%H:%M:%S]", gmtime()) + " /phpmyadmin/ successfully found! %s /phpmyadmin") % (hcon)
    elif r2:
     print(strftime("[%H:%M:%S]", gmtime()) + " /phpmyadmin/ successfully found! %s /pma") % (hcon)
    else:
     print(strftime("[%H:%M:%S]", gmtime()) + " nothing found, sorry! try another website.")

hell()

ご覧のとおり、選択した Web サイトにページ /phpmyadmin または /pma が存在する場合は、正常に検出されたことが出力されます。そうでない場合は、「nothing found etc..」と表示されます。

しかし、私はこのエラーを受け取ります: unindent does not match outer indentation level, 以前の Python スクリプトでこのエラーが発生したことはありません。

できる限りインデントを修正しようとしましたが、それで解決するとは思いません。誰か助けてもらえますか?

4

5 に答える 5

2

あなたの場合、hellメソッド定義はルート インデント レベルにある必要があります。

于 2013-08-01T21:28:43.490 に答える
0

のインデントを修正する必要がありますdef hell():

import urllib
import re
import requests
import httplib
import socket
from colorama import *
from time import gmtime, strftime

def hell():
    hcon = raw_input(Fore.RED + Style.BRIGHT + "Website: ")
    r = requests.get("http://" + hcon + "/phpmyadmin")
    r2 = requests.get("http://" + hcon + "/pma")
    if r.status_code == 404:
        print(strftime("[%H:%M:%S]", gmtime()) + " /phpmyadmin/ not found!") 
    elif r: 
        print(strftime("[%H:%M:%S]", gmtime()) + " /phpmyadmin/ successfully found! %s /phpmyadmin") % (hcon)
    elif r2:
        print(strftime("[%H:%M:%S]", gmtime()) + " /phpmyadmin/ successfully found! %s /pma") % (hcon)
    else:
        print(strftime("[%H:%M:%S]", gmtime()) + " nothing found, sorry! try another website.")

hell()
于 2013-08-01T21:42:25.410 に答える
0

def hell() および以下のすべてのインデントを 1 つ少なくする必要があります。

于 2013-08-01T21:29:13.213 に答える
0

これは回答っぽいので、コメントからコピーされました。

貼り付けたコードは不完全であるため、発生しているエラーを直接修正することはできません。

エラーは通常、X スペースでインデントされた行、次に X+Y+Z スペースでインデントされた行、最後に X+Y スペースでインデントされた行がある場合に表示されます。レベルを下げると、Python は以前のレベルの 1 つと同じレベルに戻ることを要求します。例えば:

def foo():
    print "hi!"
  return 42

return ステートメントのインデントは 2 つのスペースですが、前の行が 2 つのスペースでインデントされていないことに注意してください。これは許可されていません。4 つのスペースにインデントするか、print ステートメントを 2 つのスペースに戻す必要があります。

于 2013-08-01T21:36:41.743 に答える
0

スペースとタブが混在しています。コードをメモ帳などで 8 スペースのインデント レベルで開いてみて、どのように表示されるかを確認してください。あなたが投稿したものとは絶対に一致しません。そうしないと、インデント解除の問題ではなく、「予期しないインデント」エラーが発生します。

于 2013-08-01T21:37:55.013 に答える