2015-02-24 39 views
-1

爲什麼當我要求的行沒有超出範圍時,將出現錯誤消息IndexError:list index超出範圍。當它不在Python中時,錯誤消息列表索引超出範圍

x = 3 
f = open (testing.txt, "r") 
UserInput = input("Please enter yes if you would like to view the name of the person. Else enter no.") 
if UserInput = "yes": 
    x = x+2 
    Name = f.readlines(x) 
    print (Name) 
else: 
    print ("Thanks for your help") 

沒有理由,這應該發生,因爲有超過20行文件,我想打開,但我不能打印第5行。

+1

這不應該產生您報告的錯誤消息,因爲Python應該拒絕在所有運行它。 if語句中存在語法錯誤。請張貼實際產生您描述的錯誤的代碼。 – user2357112 2015-02-24 02:54:46

回答

1

對於條件檢查目的,您需要使用雙等號。

if UserInput == "yes": 

並且還在引號內包含文件名。

f = open('testing.txt', "r") 

即,你需要改變你的完整代碼,

f = open ('testing.txtr', "r") 
UserInput = input("Please enter yes if you would like to view the name of the person. Else enter no.") 
x = 3 
if UserInput == "yes": 
    x = x+1 
    Name = f.readlines()[x] 
    print (Name) 
else: 
    print ("Thanks for your help") 

如果你想要去除存在於Name變量換行符,你需要使用strip()功能像print (Name.strip())

0

您沒有正確使用f.readlines(x)

我想你想f.readlines()[x](其中f.readlines()[0]是文件中的第一行)

0

f.readlines(x)

x不是行號,但sizehint(如下所述)。

If the optional sizehint argument is present, instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an internal buffer size) are read. https://docs.python.org/2/library/stdtypes.html#file.readlines

您正在尋找f.readlines()[4]

相關問題