写一个函数integer_type,它消耗任何类型的值,如果是偶数整数则产生“偶数整数”,如果它是奇整数则产生“奇数”,否则产生“非整数”。
我的代码:
def integer_type(som):
if type(som)==type(0):
if som%2==0:
return "Even integer"
else:
return "Odd integer"
else:
return "Not an integer"
x= input()
print(integer_type(x))
每当我运行它时,无论我输入什么值,它都会打印“非整数”。
我尝试了与elifs不同的问题而且没有任何区别。我仍然获得了我打印的最后一个“其他”回报。
编写一个消耗任何类型数据的函数off_peak,并确定该时间是否符合非峰值速率。您的函数应生成以下输出之一:“Off peak”,“Peak”和“Not a time”。非峰值率基于24小时时间,小于9或大于17的值。
def off_peak(any):
if type(any)==type(0) and any<9 and any>17:
return "Off peak"
elif type(any)==type(0) and 9<any<17 and 0<any<23:
return "Peak"
else:
return "Not a time"
x= input("Peak Dector:")
print(off_peak(x))
任何帮助将不胜感激
答案 0 :(得分:1)
我认为你应该在比较前将输入转换为int:
print(integer_type(int(x)))
答案 1 :(得分:1)
你的功能是正确的,并且完全符合你的要求,这里的问题是input()
总是返回一个字符串,所以当你将它的输出传递给integer_type()
时,它会看到它&#39 ; sa string并返回Not an integer
。
要查看此内容,请尝试使用以下代码:
def integer_type(som):
if type(som)==type(0):
if som%2==0:
return "Even integer"
else:
return "Odd integer"
else:
return "Not an integer"
x= 'integer?'
y = 5
z = 4
print(integer_type(x))
print(integer_type(y))
print(integer_type(z))
它会打印出您想要的内容:
Not an integer
Odd integer
Even integer
答案 2 :(得分:1)
我假设您正在使用Python 3.
input
总是返回一个字符串。您首先要测试的是此字符串是否可以表示有效整数。
您可以简单地尝试转换它,并且如果发生错误,您将知道它无效(在这种情况下为ValueError
)。
如果我们希望函数接受任何类型的输入,包括浮点数和字符串,如&#34; 3.00&#34;或任何对象,事情会变得复杂一些。您可以像这样重写您的函数:
def integer_type(value):
# int("3.00") would raise a ValueError, though 3 is an odd integer.
# We start by converting our input value to a float.
# float(value) will accept integers, floats or strings,
# it will raise a TypeError for None or other invalid types.
try:
value = float(value)
except (ValueError, TypeError):
# If it isn't a float, it's definitely not an integer
return "Not an integer"
# Now we check that our float is an integer:
if not value.is_integer():
return "Not an integer"
if value % 2 == 0:
return "Even integer"
else:
return "Odd integer"
函数的输入可以是字符串,整数,浮点数等等。是否可以将其转换为有效整数,它将始终给出预期结果:
print(integer_type(3))
print(integer_type("3"))
# Odd integer
# Odd integer
print(integer_type(3.1))
print(integer_type("3.1"))
# Not an integer
# Not an integer
print(integer_type(3.00))
print(integer_type("3.00"))
# Odd integer
# Odd integer
print(integer_type(-4.00))
print(integer_type("-4.00"))
# Even integer
# Even integer
print(integer_type("abc"))
# Not an integer
print(integer_type(None))
# Not an integer
如果您使用的是Python 2,请将input
替换为raw_input
。