我正处于使用Python的计算机科学入门的最后一章。有人能告诉我我的代码有什么问题吗?结果只是 BLANK 。
#Write a function called "input_type" that gets user input and
#determines what kind of string the user entered.
# - Your function should return "integer" if the string only
# contains characters 0-9.
# - Your function should return "float" if the string only
# contains the numbers 0-9 and at most one period.
# - You should return "boolean" if the user enters "True" or
# "False".
# - Otherwise, you should return "string".
#Remember, start the input_type() function by getting the user's
#input using the input() function. The call to input() should be
#*inside the* input_type() function.
def input_type(userInput):
digitTable = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
test1 = userInput.find(digitTable)
if userInput == "True" or userInput == "False":
return "boolean"
elif test1 == -1: # No digits
return "string"
elif userInput == "True" or userInput == "False":
return "boolean"
else: # Contains digits
test2 = userInput.find(".") # find decimal
if test2 == -1: # No decimals means it is an integer
return "integer"
else: # Yes if float
return "float"
userInput = input()
print(input_type(userInput))
答案 0 :(得分:1)
为了改善您的代码并使其更短更好,您可以执行以下操作:
import re
def input_type(userInput):
if userInput in ("True", "False"):
return "boolean"
elif re.match("^\d+?\.\d+?$", userInput):
return "float"
elif userInput.isdigit():
return "int"
else:
return "string"
res = input()
print(input_type(res))
适合我:)
答案 1 :(得分:1)
这是你的错误。
当您运行该程序时,它正在等待input()
。你应该输入一些东西。所以这就是整个计划。
您的计划的另一个问题。您已在print(input_type("0.23"))
中对参数进行了硬编码。所以无论你输入什么,它都是一样的。
答案 2 :(得分:0)
解决您的问题:
def input_type(userInput):
digitTable = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
test1 = userInput.find(''.join([str(x) for x in digitTable]))
if userInput == "True" or userInput == "False":
return "boolean"
elif test1 == -1: # No digits
return "string"
elif userInput == "True" or userInput == "False":
return "boolean"
else: # Contains digits
test2 = userInput.find(".") # find decimal
if test2 == -1: # No decimals means it is an integer
return "integer"
else: # Yes if float
return "float"
userInput = input()
print(input_type("0.23"))