Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编程新手:用python创建儿童添加游戏_Python - Fatal编程技术网

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

编程新手:用python创建儿童添加游戏,python,Python,我是个编程新手,我的家庭作业有问题。以下是作业问题: 开发一个简单的游戏,教幼儿如何添加一位数。您的函数game()将以整数n作为输入,然后询问n个单位数加法问题。要添加的数字应从[0,9]范围内随机选择(即0到9)。提示时,用户将输入答案。函数应打印“正确”表示正确答案,打印“不正确”表示不正确答案。在n个问题之后,函数应打印正确答案的数量 例如: >>>game(3) 8+2= Enter answer: 10 Correct. 6+7 = Enter answer: 12

我是个编程新手,我的家庭作业有问题。以下是作业问题:

开发一个简单的游戏,教幼儿如何添加一位数。您的函数
game()
将以整数n作为输入,然后询问n个单位数加法问题。要添加的数字应从[0,9]范围内随机选择(即0到9)。提示时,用户将输入答案。函数应打印“正确”表示正确答案,打印“不正确”表示不正确答案。在n个问题之后,函数应打印正确答案的数量

例如:

>>>game(3)
8+2=
Enter answer: 10
Correct.
6+7 =
Enter answer: 12
Incorrect.
7+7=
Enter answer: 14
Correct.

You got 2 correct answers out of 3
以下是我目前掌握的情况:

def game(n):
  x = random.randrange (0,10)
  y = random.randrange(0,10)
  numbers = (x+y)
  print (x, "+", y)
  guess = eval(input("Enter your guess: "))
  count = 0
  total = 0
  while total <= n:
    if guess == numbers:
      count = count + 1
      total = total + 1
      print("Correct.")
      break
    elif guess != numbers:
      total = total + 1
      print("Inncorrect")
      break
  return ("You got" + sum(count) + "correct answers out of" + sum(total))
def游戏(n):
x=random.randrange(0,10)
y=随机。随机范围(0,10)
数字=(x+y)
打印(x,“+”,y)
猜测=评估(输入(“输入您的猜测:”)
计数=0
总数=0

虽然total显示的代码片段存在一些问题,有些功能性问题,有些与样式和可读性有关

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

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

计数和合计不需要
sum()

现在谈谈风格问题:
编辑:我还想插入Jon Clements的备注:避免
eval()

我在其他SO帖子中对
eval
大发牢骚,理由是:虽然有很少的用例需要
eval()
,但在大多数情况下,有更好的方法来替代这个相对“危险”的功能。这里,使用int()将用户的输入转换为整数

你可以考虑避免重复<代码>总数=总数+1 < /代码>,因为这必须在两种情况下完成,无论答案是正确还是错误。(也考虑在x(范围)< /代码>循环中的<代码>,请参阅下面的BR> 也可以用普通的

else
替换elif,因为测试的条件与“if”条件相反
[如
nneonneo
]所建议的那样:避免在不需要的地方使用括号(如在数字分配中),使用
+=
运算符(避免重复左值)

对于范围(n)
内的total,最好将循环更改为a
,因为这将完全避免您管理total变量。为了保持最初代码的精神,我避免了后面的更改

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)
total=1

虽然总数(1)建议您使用
表示范围(n)
内的总数,(2)建议您使用
计数+=1
,(3)建议您删除
x+y
周围的括号。(我们也想教人们好的编码风格!)@nneonneo感谢您的建议(以及修复我的print()语句;-)。我保持循环的原样,显式管理
total
变量的原样。早期教授好的编码风格是正确的,但随着编程语言的掌握水平的提高,允许初学者使用明确的习惯用法,稍后再学习捷径也是可以的。非常感谢您的帮助。在使用上述代码和建议的修改后,我能够得到正确的答案。唯一的问题是,我将总数=1改为0,并添加了计数=0。请不要使用
eval
-而是使用
int
,在这种情况下,我必须秒。。或者第三个。不要使用
eval
,尤其是在用户输入时——这就像从地上拣东西放进嘴里,期望它能很好地结束一样。另外@user2055337如果@mjv帮助了你,你应该真正接受他的回答。