我的实验室要求我“提示输入一个数字,接受一个正的或负的number.Use --一种双重选择的”决策“结构,并打印一条信息,表明输入的数字是正数还是负数。”
我做了我的代码但出于某种原因它不起作用..。
def getNumFromUser():
num=input (“Please enter a number: “)
if num >= 0:
print "The number you entered is positive"
elif num <= 0:
print "The number you entered is negative"
else:
getNumFromUser() 由于某些原因,它不会运行我的代码,当我取出elif语句时,它要求我输入数字,如果我输入负,它会要求我重新输入数字以得到正的数字,只是不知道如何在代码中组合负数和正数,所以它会“打印出输入的数字是正数还是负数。”*I'm是python编程的新手,所以我在这里迷路了,如果有人向me*解释的话,我会很感激。
发布于 2012-09-04 19:59:02
python2.x中的input函数将尝试计算将其作为代码传递的字符串。这可以被认为是不可取的或危险的,通常建议使用raw_input。
话虽如此,raw_input会给你一个字符串。您将希望将其转换为int,以便与其他int进行比较:
val_str = raw_input("enter a number")
if int(val_str) >= 0:
print "greater"请记住,如果用户不输入数字,则该示例将崩溃。可以使用:val_str.isdigit()检查字符串是否为数字。这适用于ints,而不是浮标。您的部分检查可以是首先确认它是一个int,否则再次询问。此外,isdigit无法正确检测到负数,这意味着您可能需要学习如何捕获可能引发的异常.
至于您的总体结构,我觉得简单的while循环检查比每次输入错误信息时对getNumFromUser的递归调用更适合您:
def getNumFromUser():
while True:
num=raw_input("Please enter a number: ")
try:
num = int(num)
except ValueError:
# if the input cannot be converted into an int
# then loop again
continue
else:
# otherwise, we have an int, so stop looping
break
# num is now an int
if num >= 0:
print "The number you entered is positive"
else:
print "The number you entered is negative"
return num除了有效的int之外,期望用户输入任何其他内容可能并不是分配的一部分,但是这个示例展示了如何尝试并转换为int,并处理失败。
发布于 2012-09-04 19:56:07
使用
num=raw_input(“Please enter a number: “)相反,
发布于 2013-11-20 14:24:57
确保输入和括号之间没有空格。您写了这个: num=input (“请输入一个数字:")当您应该写这个: num =input(”请输入一个数字:“)时,这将计算一个字符串。不需要添加原始部分,至少在我使用python编程的经验中是这样的。
https://stackoverflow.com/questions/12270435
复制相似问题