我的实验室问我“提示输入数字,接受正数或负数。使用双重替代”决策“结构并打印一条消息,指示输入的数字是正数还是负数。”
我做了我的代码,但由于某种原因,它不起作用....
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语句时它要求我输入数字,如果我输入否定它将要求我重新输入数字以获得积极的...我只是不要我不知道如何在代码中结合负数和正数,这样就会“打印出指示输入的数字是正数还是负数的信息”。 * 我是python编程的新手,所以我迷失在这里,如果有人向我解释,我将不胜感激 *
答案 0 :(得分:4)
python2.x中的input
函数将尝试并将您传递给它的字符串作为代码进行评估。这可能被认为是不合需要或危险的,通常建议使用raw_input
代替。
话虽如此,raw_input
会给你一个字符串。您需要将其转换为int以与其他整数进行比较:
val_str = raw_input("enter a number")
if int(val_str) >= 0:
print "greater"
请记住,如果用户未输入数字,则该示例会崩溃。您可以使用val_str.isdigit()
检查字符串是否为数字。这适用于整数,而不是浮点数。您的部分检查可以是先确认它是一个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并处理失败。
答案 1 :(得分:0)
使用
num=raw_input(“Please enter a number: “)
代替
答案 2 :(得分:0)
确保输入和括号之间没有空格。你写了这个: num =输入(“请输入数字:”) 什么时候你应该写这个: num =输入(“请输入数字:”) 这将评估一个字符串。没有必要添加原始部分,至少在我使用python编程的经验中