2014-02-13 59 views
0

我正在使用Python 3中的Farenheiht-Celsius轉換器。我給出了一些示例代碼,但這不起作用,但我不知道爲什麼。這裏是我的代碼:未知的代碼錯誤涉及到Python float(sys.argv [1])

#!home/andres/Documents/Executables 
import sys 
f = int(sys.argv[1]) 
print (f, "degrees farenheit is equal to",) 
print (5.0/9*(f - 32), "degrees Celsius.") 

當然,我得到一個語法錯誤如下:

Traceback (most recent call last): 
    File "/home/andres/Documents/Executables/f2c.py", line 3, in <module> 
    f = int(sys.argv[1]) 
IndexError: list index out of range 
>>> 

有些東西需要注意:

  1. 我的(粗略的)認識sys.argv命令,它與命令行參數一起使用。

  2. 我的老師打算讓我這樣做。

    $ ./f2c.py 212
    212.0攝氏度等於100.0攝氏度。

(是的,我知道上面的部分沒有顯示出來的代碼,但我不知道如何解決它。) 3.我運行Ubuntu,但我還是習慣了。請原諒我的無知。

認爲就是這樣。謝謝!

編輯:這是我的shell會話,這可能有助於:

[email protected]:~/Documents/Executables$ ./f2c.py 
bash: ./f2c.py: /bin/env: bad interpreter: No such file or directory 
[email protected]:~/Documents/Executables$ chmod +x f2c.py 
[email protected]:~/Documents/Executables$ ./f2c.py 12 
bash: ./f2c.py: /bin/env: bad interpreter: No such file or directory 
[email protected]:~/Documents/Executables$ 
+1

在交互式解釋器中使用'sys.argv'並沒有什麼意義。只有按照指示運行腳本纔有意義,因爲'sys.argv'包含了來自shell的命令行指令。 – roippi

+1

Your shebang'#!home/andres/Documents/Executables'沒有什麼意義。 – ThiefMaster

回答

3

我相信你正在運行的解釋器中的代碼,或者使用一個IDE或Python提示。這不會工作,因爲sys.argv依賴於從終端命令行調用程序。 當我這樣做你的代碼工作正常,

[[email protected] ~]$ python f2c.py 12 
12 degrees farenheit is equal to -11.1111111111 degrees Celsius. 

要運行它,你需要做兩件事情./f2c.py,

編輯你的代碼以類似以下

#!/usr/bin/env python 

import sys 
f = int(sys.argv[1]) 
print (f, "degrees farenheit is equal to",) 
print (5.0/9*(f - 32), "degrees Celsius.") 

這是一個命令,用於諸如bash之類的linux shell來調用'env'程序並告訴它我們需要使用python來運行它

其次,我們需要讓文件執行表,這是因爲

chmod +x f2c.py 

做到現在,您可以撥打如下

[[email protected] ~]$ ./f2c.py 12 
12 degrees farenheit is equal to -11.1111111111 degrees Celsius. 

BTW,正確的拼寫是華氏溫度。

+0

請注意,在Windows上,您可以直接運行它作爲'./f2c.py',而無需執行任何這些步驟(假設您讓Python安裝程序安裝啓動程序並正確掛接它,我認爲這是默認的至少來自python.org的CPython 3.3和3.4)。我意識到OP使用的是Ubuntu,我只是想在這裏留言,以防遇到同樣問題的任何Windows用戶來到這裏,想知道爲什麼'chmod'給他們錯誤,爲什麼shebang沒有任何作用,等等...... – abarnert

+0

andres @Beta:〜/ Documents/Executables $ ./f2c.py bash:./f2c.py:/ bin/env:糟糕的解釋器:沒有這樣的文件或目錄 andres @ Beta:〜/ Documents/Executables $ chmod + x f2c.py andres @ Beta:〜/ Documents/Executables $ ./f2c.py 12 bash:./f2c.py:/ bin/env:錯誤的解釋器:沒有這樣的文件或目錄 andres @ Beta:〜/ Documents/Executables $ – Qu0rk

+0

@ Qu0rk不知道如何發生。我認爲這個問題可能是你如何運行python。 '哪個python'顯示給你的命令是什麼?你是如何安裝和運行python的?你是否從Windows複製文件?這也會搞亂#!/ bin/env python。我在我的答案中粘貼了整個腳本以進行澄清 – abnowack