[英]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.