编程新手:用 python 创建一个儿童添加游戏

use*_*337 -1 python

我是编程新手,并且在家庭作业中遇到问题。这是家庭作业的问题:

\n\n

开发一个简单的游戏,教幼儿园儿童如何添加个位数。您的函数game()将接受一个整数 n 作为输入,然后询问 n 个个位数加法问题。要添加的数字应从 [0,9] 范围(即 0 到 9(含))中随机选择。用户将在出现提示时输入答案。您的函数应打印 \xe2\x80\x9cCorrect\xe2\x80\x9d 以获得正确答案,并打印 \xe2\x80\x9cIn Correct\xe2\x80\x9d 以获得错误答案。在 n 个问题之后,您的函数应该打印正确答案的数量。

\n\n

例如:

\n\n
>>>game(3)\n8+2=\nEnter answer: 10\nCorrect.\n6+7 =\nEnter answer: 12\nIncorrect.\n7+7=\nEnter answer: 14\nCorrect.\n\nYou got 2 correct answers out of 3\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我到目前为止所拥有的:

\n\n
def game(n):\n  x = random.randrange (0,10)\n  y = random.randrange(0,10)\n  numbers = (x+y)\n  print (x, "+", y)\n  guess = eval(input("Enter your guess: "))\n  count = 0\n  total = 0\n  while total <= n:\n    if guess == numbers:\n      count = count + 1\n      total = total + 1\n      print("Correct.")\n      break\n    elif guess != numbers:\n      total = total + 1\n      print("Inncorrect")\n      break\n  return ("You got" + sum(count) + "correct answers out of" + sum(total))\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以到达它指出答案是否正确的地方,但无法弄清楚如何让它运行 n 次并显示结果。

\n\n

任何提示将不胜感激!

\n

mjv*_*mjv 5

显示的代码片段存在几个问题,一些是功能性的,一些与样式和可读性有关。

首先,循环不重复的原因while是因为语句break。这些导致程序继续执行 while 之后的指令,即它们导致“过早”退出 while 循环。

您还需要将猜测提示等放置在循环...如图所示,它们将在循环之前执行一次,而不是每次迭代。

您不需要sum()计数和总计。

现在讨论风格问题:
编辑:我也想插入Jon Clements评论:避免eval()
eval在其他 SO 帖子中对自己进行了足够的咆哮,理由是:尽管有极少数用例eval()是必要的,但在大多数情况下,对于这个相对“危险”的功能,有更好的替代方案。在这里,使用 int() 将用户的输入转换为整数。

您可以考虑避免重复,total = total + 1因为无论答案正确还是错误,这两种情况都必须这样做。(也可以考虑for x in range(n)使用循环,请参见下文。)
还要用普通替换 elif,else因为测试的条件是“if”条件的逆条件。
[如建议 nneonneo]:在不需要的地方避免括号(如在数字分配中),使用运算符+=(避免重复左值)。

将循环更改为 a 也是一个好主意,for total in range(n)因为这将完全使您免于管理总变量。我没有进行后面的更改,以保持初始代码的精神。

total = 1
while total <= n:
    x = random.randrange(0,10)
    y = random.randrange(0,10)
    numbers = x + y
    print (x, "+", y)
    guess = eval(input("Enter your guess: "))
    total = total + 1
    if guess == numbers:
        count = count + 1
        print("Correct.")
    else:
        print("Incorrect")
 print("You got", count, "correct answers out of", total)
Run Code Online (Sandbox Code Playgroud)

  • (1) 建议您使用 `for Total in range(n)`,(2) 建议您使用 `count += 1`,(3) 建议您删除 `x+y` 周围的括号。(我们也想教人们良好的编码风格!) (2认同)