使用行情打印

时间:2014-02-25 21:19:31

标签: python string input integer boolean

为什么当我使用下面的程序时,我的引号中的“y”与y定义的值相反,后者将是用户输入的字符串

def main():
    x = (input("Give me a boolean: ").lower() == 'true')     
    y = str(input("Give me a string: "))
    z = int(input("Give me a number: "))
    if x == True:
        print (y)
        print ("\"",y,"\"",sep="")
    else:
        print (z*2)



main()

3 个答案:

答案 0 :(得分:3)

我们来谈谈布尔,因为这实际上是问题所在。

x = bool(input("Give me a boolean: "))
# x is ALWAYS True unless the user enters an empty string

这里的问题是所有非空字符串都是布尔True"Hello"True"TRUE"True"False"True。评估为False的唯一字符串是""。因此,当您在此处提示输入,然后稍后进行测试时,除非用户只是绕过测试,否则您将始终通过该测试。让我们继续......

y = str(input("Give me a string: ")) # good here, though no need to call str()
z = int(input("Give me a number: ")) # uh oh...

如果我为z输入ajkldfj,则会抛出ValueError。处理此问题的常用方法是try/except,例如:

z = input("Give me a number: ")
try:
    int(z)
except ValueError as e:
    # handle it

接下来......

if x == True or true:

这与TONS的人有同样的问题。 if foo == 1 or 2并不代表您的想法,它实际上意味着if (foo == 1 is True) or (2 is True)。要执行您要执行的操作,您应该执行if x == "True" or x == "true",但更好的是if x.lower() == "true",更好的是if x.casefold() == 'true',但BEST YET只是if x。请记住,当你提示它时,你已经把它变成了bool。您可以通过放弃bool()来电,然后在此处测试来改变它,在这种情况下,我建议if x.lower() == 'true'if x.casefold() == 'true'。你会经常看到的其他代码是if x in ('true','True'),但是因为我们可以用小写来消除所有歧义:DO IT!

现在打印声明:

    print (y)     # prints the value in y
    print ('"y"') # prints "y"

如果这不是您想要做的,您可以使用字符串格式或任何其他任何东西来正确格式化它。让我知道你想做什么,我们可以进一步讨论!

答案 1 :(得分:0)

您必须使用以下行才能打印y

print(y)

及以下y带括号

print( "(" + y + ")")  
您的代码中的

Warning: ,如果X == False,那么python会给您以下错误

NameError: name 'true' is not defined

答案 2 :(得分:0)

您可以在打印时使用format

print("({0})".format(y))

其中0引用传递给格式的第一个参数,1引用第二个,依此类推。此外,您正在执行x == True or trueor true错误,应该删除。另外bool("True") == bool("False") == True,因为Python中的字符串(长度> 0)是True,你可能想要像

这样的东西
x = str(input("True/False? "))
y = str(input("Input string: "))
z = int(input("Number: "))
if x.lower() == "true":
    print("({0})".format(y))

修改:示例会话

>>> def main():
    x = str(input("True/False? "))
    y = str(input("Input string: "))
    z = int(input("Number: "))
    if x.lower() == "true":
        print("({0})".format(y))

>>> main()
True/False? false
Input string: dog
Number: 2

>>> main()
True/False? true
Input string: dog
Number: 2
(dog)