【问题标题】:How do I get python to tell me whether my answer of if a number is odd or even is correct?如何让 python 告诉我我对一个数字是奇数还是偶数的回答是否正确?
【发布时间】:2015-10-22 01:12:59
【问题描述】:

我正在执行一项任务,但我完全被卡住了。几天来我一直在努力解决这个问题,但我是一个初学者,感觉就像我只是在旋转我的轮胎。

对于分配,我必须导入一个随机数,并询问用户它是奇数还是偶数。然后根据答案,我必须让程序返回它是否正确。但是,使用我粘贴在下面的这段代码,我根本无法让它执行我的 while 循环。

def assign2PartA():
  import random
  strNumber = random.randrange(1,50)
  answer = raw_input("Is '" +  str(strNumber) +  "' Odd or Even?")  
  while strNumber % 2 == 0:
    if answer is "odd":
      return "incorrect"
    else:
      return "correct"
  while strNumber % 2 != 0:
    if answer is "odd":
      return "correct"
    else:
      return "incorrect"

任何帮助都将不胜感激。我只需要一些指示来让我朝着正确的方向前进,因为我已经花了几个小时实际上一无所获。

【问题讨论】:

  • 在定义函数之后,您实际上是在调用函数 assign2PartA() 吗?
  • 我不会告诉你答案的。这应该是一个任务。提示:想想你的控制流。您正在使用没有多大意义的 while 循环。尝试使用 if 语句。

标签: python jython


【解决方案1】:

其实你们很亲近:

def assign2PartA():
  import random
  strNumber = random.randrange(1,50)
  answer = raw_input("Is '" +  str(strNumber) +  "' Odd or Even?").lower()
  while strNumber % 2 == 0:
    if answer == "odd":
      return "incorrect1"
    else:
      return "correct1"
  while strNumber % 2 != 0:
    if answer == "odd":
      return "correct"
    else:
      return "incorrect"

我改变了两件事,一个是你的raw_input(),我添加了较低的。另一个而不是is 你需要==is 检查对象身份,而== 检查相等性。

确保在课程结束时调用该函数assign2PartA()

【讨论】:

  • 使用永远不会循环的while 而不是if 是不好的做法。
  • @TigerhawkT3,我同意,但我不想重新创建他的作业解决方案。这个答案只是为了帮助说明他的代码出了什么问题。
  • @Snark - Wrong.
  • @Snark 不,它会检查身份,如果 str 恰好指向相同的身份,那么它与相等性相同。
【解决方案2】:

您不需要循环,只需一个简单的if..elif..else。此外,is 检查身份。您需要检查是否相等。您可以使用lower() 使用户的答案不区分大小写。将import 语句放在代码的顶部。最后,标准缩进是四个空格。

import random

def assign2PartA():
    strNumber = random.randrange(1,50)
    answer = raw_input("Is '" +  str(strNumber) +  "' Odd or Even?").lower()
    if (strNumber%2 and answer == 'odd') or (not strNumber%2 and answer == 'even'):
        return 'correct'
    else:
        return 'incorrect'

如果您不喜欢那么长的if 声明,您也可以将答案存储在list 中:

import random

def assign2PartA():
    strNumber = random.randrange(1,50) % 2
    answer = raw_input("Is '" +  str(strNumber) +  "' Odd or Even?").lower()
    answers = ['even', 'odd']
    if strNumber == answers[strNumber]:
        return 'correct'
    else:
        return 'incorrect'

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 2014-07-26
  • 2011-09-06
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多