Python中的交互式输入

-1 投票
2 回答
6033 浏览
提问于 2025-04-17 20:23

这是我需要做的事情的说明:

你需要写一个完整的程序,获取三种数据,然后处理这些数据。这三种信息分别是一个布尔值(就是对或错)、一个字符串(就是一串文字)和一个整数(就是一个数字)。程序的逻辑是这样的:如果布尔值是对(True),就把字符串打印两次,一次带双引号,一次不带双引号;如果布尔值是错(False),就把这个数字打印两次。

这是我目前的代码:

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

有没有人能帮我一下?

2 个回答

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)
3

在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,如果是就返回 True,否则返回 False
  • 接着,print(''.format()) 用字符串格式化的方式来构建一个双字符串(用 \n 分隔)。
  • 最后,当你用 int(Integer) 将字符串 Integer 转换成一个整数 int 时,如果转换失败,就会抛出一个 ValueError 异常,这个异常会被捕获并显示一个友好的错误信息。

if __name__ == "__main__": 这一部分是为了让你的代码只有在作为脚本运行时才会执行,而在作为库导入时不会执行。这是Python中定义程序入口点的标准方式。

撰写回答