2015-09-26 71 views
0
PhoneValue=0 
    if (condition== "new"): 
     PhoneValue=int(PhoneValue+10) 
    else: 
     PhoneValue=int(PhoneValue+9) 
    if GPS==bool(input("true")): 
     PhoneValue=int(PhoneValue+1) 
    else: 
     PhoneValue=int(PhoneValue) 

    if WiFi==eval(bool(input("true"))): 
     PhoneValue=int(PhoneValue+1) 
    else: 
     PhoneValue=int(PhoneValue) 

    if camera==eval(bool(input("true"))): 
     PhoneValue=int(PhoneValue+1) 
    else: 
     PhoneValue=int(PhoneValue) 
    global PhoneValue 

这是我的代码。我应该能够输入条件,GPS,摄像头和WiFi,代码评估输入并为每个条件给出分数。如果手机是新的,它会得到10分,如果使用它,则获得9分。对于GPS,相机和WiFi,我希望使用布尔值来给它一个真正的点或没有点的假。我想知道如何将输入字符串转换为布尔值以便将其添加到电话值?在输入中使用蟒蛇中的布尔值

回答

0

这段代码有很多错误。首先,input()command is defined

输入([提示])

如果提示参数存在时,它被写入到标准输出末尾没有换行符。

这意味着您致电input("true")会在控制台上打印“true”并等待输入一行。这不是你所希望的。

您使用eval是不好的。在用户输入上几乎每次使用eval都是一个问题。但你不小心将自己救了出来:eval(bool(text))是多余的。 bool()可以返回的唯一东西TrueFalse这两个对eval都不是危险的,但是因为您已经有了一个布尔值,所以评估它没有做任何事情。

转换整数加法到int()的结果是没用的,和你的if/else子句可以更清楚地写为:

if input("Is there a GPS? "): 
    PhoneValue += 1 

与不需要else条款。不幸的是,这几乎没有获得正确输入的机会。如果我输入“True”,则会触发if块。如果我写“否”,“假”或“JosEduSol”,它也会触发,那些也将被评估为True。最后的声明

global PhoneValue 

绝对没有做最后一行。事实上,你应该忘记global存在,因为大多数人都使用它不正确。

代码中有更多的错误,你应该真的得到老师的帮助或者获得更好的学习资源。