python中的交互式输入

时间:2014-02-28 17:09:33

标签: python

以下是我需要做的指示:

您要编写一个完整的程序,获取三个数据然后处理它们。这三条信息是布尔值,字符串和整数。程序的逻辑是这样的:如果布尔值为True,则打印出两次字符串,一次用双引号打印,一次不打印 - 否则打印两次数字。

这是我到目前为止所做的:

def main():
    Boolean = input("Give me a Boolean: ")
    String = input("Give me a string: ")
    Number = int(input("Give me a number: "))

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

在stackoverflow上,我们来帮助人们解决问题,而不是做功课,因为你的问题很可能听起来......那就是说,这就是你想要的:

def main():
    Boolean = input("Give me a Boolean: ")
    String = input("Give me a string: ")
    Number = int(input("Give me a number: "))

    if Boolean == "True":
        print('"{s}"\n{s}'.format(s=String))
    try:
        print('{}\n{}'.format(int(Number)))
    except ValueError as err:
        print('Error you did not give a number: {}'.format(err))

if __name__ == "__main__":
    main()

一些解释:

  • Boolean is "True"检查包含的字符串是否实际上是单词True,否则返回TrueFalse
  • 然后print(''.format())使用字符串格式构建双字符串(由\n分隔)。
  • 最后,当使用Integer将字符串int转换为int(Integer)时,它会引发一个ValueError异常,该异常会在错误时显示一条好消息。< / LI>

if __name__ == "__main__":部分是为了使您的代码仅在作为脚本运行时执行,而不是在作为库导入时执行。这是定义程序入口点的pythonic方式。

答案 1 :(得分:0)

我喜欢在输入时添加一些逻辑来确保正确的值。 我的标准方式是这样的:

import ast
def GetInput(user_message, var_type = str):
    while 1:
        # ask the user for an input
        str_input = input(user_message + ": ")
        # you dont need to cast a string!
        if var_type == str:
            return str_input
        else:
            input_type = type(ast.literal_eval(str_input))
        if var_type == input_type:
            return ast.literal_eval(str_input)
        else:
            print("Invalid type! Try again!")

然后在你的主要部分,你可以做这样的事情!

def main():
    my_bool = False
    my_str = ""
    my_num = 0
    my_bool = GetInput("Give me a Boolean", type(my_bool))
    my_str = GetInput("Give me a String", type(my_str))
    my_num = GetInput("Give me a Integer", type(my_num))

    if my_bool:
        print('"{}"'.format(my_str))
        print(my_str)
    else:
        print(my_num * 2)