2012-12-07 97 views
1

我是python的新手。我正在嘗試製作一個小型演出程序。在Python中將str更改爲int

代碼:

import time 
elavator = True 
# 0 is B floor // basement 
elavatorFloors = [0,1,2,3,4,5] 

while elavator == True: 
    getLevel = input ("Which floor would you like to visit? (1 - 5) ") 
    time.sleep(2) 
    print "you're now at floor, " +int.getLevel 

我得到這個錯誤:AttributeError的:對象類型「詮釋」有沒有屬性「getLevel」 除了將STR爲int,我使用的任何壞的技術?我真的想要改進我的編程思想和代碼編寫。謝謝:)

+1

使用'INT(getLevel)'。你爲什麼不要求0級? –

+2

你正在使用'input',所以getLevel將會是一個整數。也就是說,你應該使用'raw_input'並明確地轉換爲一個整數。 – Xymostech

+2

@Xymostech雖然OP使用的是2.x,但值得注意的是你所說的只適用於老版本的Python。在3.x中,'input()'不計算字符串。 –

回答

8

int()是一種類型,所以要實例化它,你需要做int(getLevel),而不是int.getLevel

檢查the docs的例子和更多。

另請注意,getLevel是變量的奇怪名稱,因爲它暗示它是一個給出關卡的函數。一個更好的名字將只是level

另外值得一提的是,input()評估輸入爲Python代碼(在Python 2.x中,以3.x中它作爲raw_input()確實在舊版本),所以getLevel就已經是數字,但我會建議使用而是保持從一個字符串到一個整數的轉換,因爲它不允許任意執行代碼,這會更好。

+0

謝謝。它的工作原理,但更重要的是,我會在你的解釋中得到它。我必須練習才能流利。我讚賞關於level vs getLevel的建議:) –

-1

這裏是修改的示例代碼:

import time 
elevator = "false" 
# 0 is B floor // basement 
elavatorFloors = [0,1,2,3,4,5] 
getLevel = input("Which floor would you like to visit? (1 - 5) ") 
for x in elavatorFloors: 
    if x == getLevel: 
     time.sleep(getLevel) 
     print "you're now at floor, " + str(getLevel) 
     elevator = "true" 
     pass 
    else: 
     pass 
if (elevator == "false"): 
    print "There is no floor: " + str(getLevel)