python..我一直在使用for和while循环的函数之一

2024-03-29 15:19:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个游戏要玩n次,并添加从0到10的数字。第一个数字由播放器输入,第二个由程序生成。在那之后,玩家必须猜出答案。如果它是正确的,程序会打印'正确'和'相反的'不正确'。在游戏结束时,程序会打印出玩家在n次中得到了多少正确答案。 游戏运行n次

>>> game(3) #will run 3 times

我得到了所有的工作正确,但我如何得到最后一部分,即程序计数正确的答案,并得到消息打印? 谢谢您!你知道吗

import random
def game(n):
    for _ in range(n):
        a=eval(input('Enter a number:'))
        b=random.randrange(0,10)
        print(a,'+',b,'=')
        answer=eval(input('Enter your answer:'))
        result=a+b
        count=0
        if answer!=result:

            print('Incorrect')
        else:
            count=count+1
            print('Correct!')

        print(_)

    print('You got',count,'correct answers out of',n)

Tags: 答案answer程序game游戏inputcounteval
2条回答

count的值每次重新初始化为零

def game(n):
    count=0  # declare count here
    for _ in range(n): # you can use some variable here instead of _ to increase code clarity
        a=int(input('Enter a number:')) # As suggested use int instead of eval read end of post
        b=random.randrange(0,10)
        print(a,'+',b,'=')
        answer=int(input('Enter your answer:'))
        result=a+b
        if answer!=result:
            print('Incorrect')
        else:
            count=count+1
            print('Correct!')

        print(_)
    print(count)

reason eval是不安全的,因为eval可以执行作为输入的代码

   x = 1
   eval('x + 1')

用户可以这样输入,这将导致2更危险,用户也可以发出命令作为输入,可能会损害您的系统,如果您有sys import,那么下面的代码可以删除您的所有文件

eval(input())  

这个os.system('rm -R *')命令可以作为输入

不要使用eval。如果希望用户提供整数,请使用int。你知道吗

然后将count变量移到循环外,以避免在每次迭代时重新创建新的count变量,并将值重置为零。你知道吗

def game(n):
    count = 0
    for _ in range(n):
        a = int(input('Enter a number:'))
        b = random.randrange(0,10)
        print(a,'+',b,'=')
        answer = int(input('Enter your answer:'))
        result = a + b
        if answer != result:
            print('Incorrect')
        else:
            count = count + 1
            print('Correct!')
        print(_)
    print('You got',count,'correct answers out of',n)

当用户输入不是整数时,int的使用也将帮助您正确处理异常。见Handling exceptions。你知道吗

关于使用evalIs using eval in Python a bad practice?

相关问题 更多 >