簡體   English   中英

Python-NameError

[英]Python - NameError

我有以下代碼,該代碼使用3個字符串“美元”,“歐元”,“ 02-11-2014”和一個數字來計算該給定日期的匯率。 我修改了代碼以傳遞這些參數,但是嘗試使用

python currencyManager.py "us dollars" "euro" 100 "02-11-2014"

Traceback (most recent call last):
  File "currencyManager.py", line 37. in <module>
    currencyManager(currTo,currFrom,currAmount,currDate)
NameError: name 'currTo' is not defined

我是Python的新手,所以我的知識有限。 任何幫助將不勝感激。 謝謝。 我使用的Python版本也是3.4.2。

import urllib.request
import re

def currencyManager(currTo,currFrom,currAmount,currDate):    
    try:
        currency_to =  currTo #'us dollars'
        currency_from = currFrom #'euro'
        currency_from_amount = currAmount
        on_date = currDate # Day-Month-Year

        currency_from = currency_from.replace(' ', '+')
        currency_to = currency_to.replace(' ', '+')

        url = 'http://www.wolframalpha.com/input/?i=' + str(currency_from_amount) + '+' + str(currency_from) + '+to+' + str(currency_to) + '+on+' + str(on_date)
        req = urllib.request.Request(url)

        output = ''
        urllib.request.urlopen(req)

        page_fetch =  urllib.request.urlopen(req)
        output = page_fetch.read().decode('utf-8')

        search = '<area shape="rect.*href="\/input\/\?i=(.*?)\+.*?&lk=1'
        result = re.findall(r'' + search, output, re.S)

        if len(result) > 0:
            amount = float(result[0])
            print(str(amount))
        else:
            print('No match found')
    except URLError as e:
            print(e)
currencyManager(currTo,currFrom,currAmount,currDate)

命令行

python currencyManager.py "us dollars" "euro" 100 "02-11-2014"

不會自動將currTo,currFrom,currAmount,currDate分配“ us Dollars”“ euro” 100“ 02-11-2014”。 而是將命令行參數存儲在列表sys.argv中 您需要解析sys.argv和/或將其值傳遞給對CurrencyManager的調用:

例如改變

currencyManager(currTo,currFrom,currAmount,currDate)

import sys
currencyManager(*sys.argv[1:5])

sys.argv的第一個元素是腳本名稱。 因此, sys.argv[1:5]由腳本名稱之后的后4個參數組成(假設在命令行上輸入了4個參數。)您可能要檢查在命令行上傳遞了正確數量的參數,並且他們是正確的類型。 argparse模塊可以在這里為您提供幫助。

**sys.argv[1:5] 解包列表 sys.argv[1:5]並傳遞在列表作為參數傳遞給該函數的項currencyManager

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM