2015-04-05 66 views
0

這只是我在本網站上發佈的第二次,而我還有一個小問題。這裏是我的代碼:python中的簡單字符串

results = ["2^0 = 1", "2^1 = 2", "2^2 = 4", "2^3 = 8", "2^4 = 16", "2^5 = 32", "2^6 = 64", 
"2^7 = 128", "2^8 = 256", "2^9 = 512", "2^10 = 1024", "2^11 = 2048", "2^12 = 4096", 
"2^13 = 8192", "2^14 = 16384", "2^15 = 32768", "2^16 = 65536", "2^17 = 131072", 
"2^18 = 262144", "2^19 = 524288", "2^20 = 1048576"] 
num = 0 
usr = input("This is a program to show you the powers from 0 to 20. You pick a number between 0 and 20 and the program will show you all the powers within that range. type a number 1 - 20: ") 
print(results[0:usr]) 

的問題是,我似乎無法得到該程序從結果字符串拉:0一路攀升至數用戶已經inputed並打印。

這是我收到的錯誤:

Traceback (most recent call last): 
    File "C:\Users\Justin\Desktop\spring 2015 classes\cosc 250\homework 4\question 1.py", line 15, in <module> 
    main() 
    File "C:\Users\Justin\Desktop\spring 2015 classes\cosc 250\homework 4\question 1.py", line 13, in main 
    print(results[0:usr]) 
TypeError: slice indices must be integers or None or have an __index__ method 

我從來沒有碰到這個錯誤之前就來了。我對編程還不熟悉。非常感激任何的幫助。

謝謝。

+0

你確定「預計算」你的答案(就像你在你的字符串列表中做的那樣)是一個有效的解決方案嗎?我想在循環中計算輸出會好很多。 – Alfe 2015-04-05 23:35:30

+0

我預先計算出答案的唯一原因是因爲我的任務只是爲了確保結果與預期相符。不過,我認爲你的解決方案更好。抱歉新編碼。 – jjflyV7 2015-04-07 01:13:09

回答

0

usr是一個字符串。您需要將其轉換爲整數以將其用作索引或切片。試試這個:

print(results[0:int(usr)]) 
+0

這和上面的一樣,它工作完美。真的很感謝幫助,因爲我正在努力理解我的第一個編程課。謝謝 – jjflyV7 2015-04-07 01:22:09

+0

很高興它有幫助。祝你的班級好運,我希望你繼續學習!編程很棒! – brenns10 2015-04-07 02:36:12

0

試試這個。 input返回str對象。因此,將int應用於切片list

print(results[:int(usr)]) 
+0

這工作完美,我不必使用for循環。我所要做的只是在usr之後加1,因爲它沒有顯示用戶輸入的最後一個數字。謝謝新編程:) – jjflyV7 2015-04-07 01:20:40

0

除了在其他的答案解決的問題,我建議使用某事像這樣來計算在一個循環的輸出:

for i in range(int(usr)): 
    print "2^%d = %d" % (i, 2 ** i) 

「預先計算」的答案不是很什麼與計算機相關;-)

+0

在一行中使用列表格式:'[「2 ^%d =%d」%(i,2 ** i)for i in range(int(usr))]' – 2015-04-05 23:49:37

+0

@MalikBrahimi考慮提問者的顯示知識並重新考慮你的建議;-) – Alfe 2015-04-05 23:56:05

+0

他正在打印一份切片清單。 – 2015-04-06 00:00:14