编程新手:用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帮助了你,你应该真正接受他的回答。