我是编程新手,并且在家庭作业中遇到问题。这是家庭作业的问题:
\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>>>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\nRun Code Online (Sandbox Code Playgroud)\n\n这是我到目前为止所拥有的:
\n\ndef 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))\nRun Code Online (Sandbox Code Playgroud)\n\n我可以到达它指出答案是否正确的地方,但无法弄清楚如何让它运行 n 次并显示结果。
\n\n任何提示将不胜感激!
\n显示的代码片段存在几个问题,一些是功能性的,一些与样式和可读性有关。
首先,循环不重复的原因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)