1

我的实验室问我“提示输入数字,接受正数或负数。使用双重替代“决策”结构并打印一条消息,指示输入的数字是正数还是负数。”

我做了我的代码,但由于某种原因它不起作用....

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编程的新手,所以我在这里迷路了,如果有人能向我解释,我将不胜感激*

4

3 回答 3

4

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()。这适用于整数,而不是浮点数。您的部分检查可以是首先确认它是一个 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

期望用户输入除 valid 以外的任何内容可能不是您的任务的一部分int,但此示例显示了如何尝试转换为 int 并处理失败。

于 2012-09-04T19:59:02.393 回答
0

确保输入和括号之间没有空格。你写了这个: num=input (“请输入一个数字:”) 当你应该写这个的时候: num = input(“请输入一个数字:”) 这将评估一个字符串。不需要添加原始部分,至少在我使用 python 编程的经验中

于 2013-11-20T14:24:57.447 回答
0

利用

num=raw_input(“Please enter a number: “)

反而

于 2012-09-04T19:56:07.967 回答