Python实验室 - 我的实验室代码卡住了

时间:2012-09-04 19:53:22

标签: python-2.7

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

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

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

3 个答案:

答案 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编程的经验中