2012-12-07 60 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)