Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x - Fatal编程技术网

如何让python将几个总数相加并打印出总数

如何让python将几个总数相加并打印出总数,python,python-3.x,Python,Python 3.x,我正在为我的模拟考试编写一些代码,我被困在了必须将所有分数相加,然后打印总分数的部分。代码的目的是让两名玩家掷2个骰子,如果数字相同,他们将掷第三个骰子。然后,代码将模具相加,并根据总数是否可以除以2打印总数。 重复此操作5次后,代码应将所有总计相加,并显示总总计。 但它只打印最后一个总数,并没有将所有5个总数相加。如果有人能帮助我,我将不胜感激,我也为noob的问题感到抱歉。我是新来的 import random score = 0

我正在为我的模拟考试编写一些代码,我被困在了必须将所有分数相加,然后打印总分数的部分。代码的目的是让两名玩家掷2个骰子,如果数字相同,他们将掷第三个骰子。然后,代码将模具相加,并根据总数是否可以除以2打印总数。 重复此操作5次后,代码应将所有总计相加,并显示总总计。 但它只打印最后一个总数,并没有将所有5个总数相加。如果有人能帮助我,我将不胜感激,我也为noob的问题感到抱歉。我是新来的

import random                   
score = 0                      
for i in range(5):
    print ("\n")
    dice1 = random.randint(1,6)
    dice2 = random.randint(1,6)            
    dice3 = random.randint(1,6)
    print ("player 1: roll 1 = ",dice1)
    print ("player 1: roll 2 = ",dice2)         
    if dice1 == dice2:
        print ("player 1: roll 3 = ",dice3)         
    score = dice1+dice2
    if dice1 == dice2:
        score = dice1+dice2+dice3                                 
    if score % 2 == 0:
        score = score+10                   
    if score % 2 == 1:
        score = score-5                    
        print ("player 1: score = ", score)

print ("\n")
overalltotal = score
print ("total for player 1:", overalltotal)       

我希望输出是所有5个分数的总和。然而,实际输出永远只是最后一个分数

我认为您需要在for循环的末尾包含overalltotal+=score,而不是在for循环之后设置overalltotal=score。所以你的代码应该是:

import random                   
score = 0
overalltotal = 0 # <-- initialize here                      
for i in range(5):
    print ("\n")
    dice1 = random.randint(1,6)
    dice2 = random.randint(1,6)            
    dice3 = random.randint(1,6)
    print ("player 1: roll 1 = ",dice1)
    print ("player 1: roll 2 = ",dice2)         
    if dice1 == dice2:
        print ("player 1: roll 3 = ",dice3)         
    score = dice1+dice2
    if dice1 == dice2:
        score = dice1+dice2+dice3                                 
    if score % 2 == 0:
        score = score+10                   
    if score % 2 == 1:
        score = score-5                    
        print ("player 1: score = ", score)
    overalltotal += score # <-- add value of each round here

print ("\n")
print ("total for player 1:", overalltotal)
随机导入
分数=0

您的问题不是Python,而是程序逻辑。用一张纸和一支铅笔首先描述应该做什么,一步一步地进行测试、循环和分块。然后在不同的用例中遵循纸上的流程。当您认为它应该工作时,将其转换为Python代码,添加跟踪打印以控制发生的情况并运行。你应该能自己解决一切问题

作为应该修复或改进的提示:

  • 2个不同的
    如果dice1==dice2:
    测试一个接一个。最好在普通的测试之外进行分组(
    score=dice1+dice2
    ),而不是对特定的测试使用单一测试(
    score+=dice3
  • 打印(“玩家1:score=,score)
    在if块内。如果
    分数%2!=1
    。这真的值得吗
  • 在主循环之前初始化
    overalltotal
    ,并在循环内部用
    score
    增加它
  • 您的代码总是计算dice3,即使没有使用它。如果dice1==dice2:
块,为什么不只在
块中计算它呢

如果你想改变你提到的分数,那么你必须改变你的陈述

score = dice1+dice2 --> score += dice1+dice2 (do this for dice things)
score = score+10 --> score += 10 (for score things)
score = score-5 --> score -= 5 (for score things)

score=score+dice1+dice2
score=score+dice1+dice2+dice3
初学者注意:
a+=b
大致相当于
a=a+b
。对于
-=
*=
等,情况也一样(不完全相同,因为这是一个就地修改;有关详细信息,请参阅)