2017-06-10 1 views
0

ユーザ入力に応じてHTTPまたはFTP接続を作成するコードは次のとおりです。 if条件とelif条件は、常にFALSEと評価されます。 1と0を入力すると「Sorry、wrong answer」と表示されます。ユーザ入力に関係なく条件が常にfalseに評価された場合のPython

domain = 'ftp.freebsd.org' 
path = '/pub/FreeBSD/' 

protocol = input('Connecting to {}. Which Protocol to use? (0-http, 1-ftp): '.format(domain)) 
print(protocol) 
input() 

if protocol == 0: 
    is_secure = bool(input('Should we use secure connection? (1-yes, 0-no): ')) 
    factory = HTTPFactory(is_secure) 
elif protocol == 1: 
    is_secure = False 
    factory = FTPFactory(is_secure) 
else: 
    print('Sorry, wrong answer') 
    import sys 
    sys.exit(1) 

connector = Connector(factory) 

try: 
    content = connector.read(domain, path) 
except URLError as e: 
    print('Can not access resource with this method') 
else: 
    print(connector.parse(content)) 

出力:

 
Connecting to ftp.freebsd.org. Which Protocol to use? (0-http, 1-ftp): 0 
0 

Sorry, wrong answer 
$ python abstractfactory.py 
Connecting to ftp.freebsd.org. Which Protocol to use? (0-http, 1-ftp): http 
http 

Sorry, wrong answer 
$ python abstractfactory.py 
Connecting to ftp.freebsd.org. Which Protocol to use? (0-http, 1-ftp): 1 
1 

Sorry, wrong answer 

$ 

してくださいアドバイス。私はここで間違って何をしていますか?おかげさまで

答えて

0

Pythonの入力は、()を明示的に

if int(input) == 0: 
    # Do something 
elif int(input) == 1: 
    # Do something 
、同様に0を整数として入力を比較する必要があり、Unicode文字列として入力を受け取り、
3

使用しているように見えるPython 3の入力は、文字列として入力されます。 int()を介してキャストする必要があります(入力が不適切な場合は注意と例外処理を行う必要がありますが、これを整数と比較する必要があります)。

関連する問題