Python中的交互式输入
这是我需要做的事情的说明:
你需要写一个完整的程序,获取三种数据,然后处理这些数据。这三种信息分别是一个布尔值(就是对或错)、一个字符串(就是一串文字)和一个整数(就是一个数字)。程序的逻辑是这样的:如果布尔值是对(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中定义程序入口点的标准方式。