python语法错误的die-roll程序

2024-09-30 04:35:11 发布

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

    import random
#set counters
counter2=0
counter3=0
counter4=0
counter5=0
counter6=0
counter7=0
counter8=0
counter9=0
counter9=0
counter10=0
counter11=0
counter12=0
doubles=0

def main():
    #get input from user
    rolls = int(input("How many times would you like to roll the dice?")
    for count in range(rolls+1)
        #roll dice
        die1 = random.randint(1,6)
        die2 = random.randint(1,6)
        #add up dice totals to counters
        if die1 + die2 = 2:
            counter2 += 1
        if die1 + die2 == 3:
            counter3 += 1
        if die1 + die2 == 4:
            counter4 += 1
        if die1 + die2 == 5:
            counter5 += 1
        if die1 + die2 == 6:
            counter6 += 1
        if die1 + die2 == 7:
            counter7 += 1
        if die1 + die2 == 8:
            counter8 += 1
        if die1 + die2 == 9:
            counter9 += 1
        if die1 + die2 == 10:
            counter10 += 1
        if die1 + die2 == 11:
            counter11 += 1
        if die1 + die2 == 12:
            counter12 += 1
        if die1 == die2:
            doubles += 1
    #print data
    print("2 - ", counter2, \
          "3 - ", counter3, \
          "4 - ", counter4, \
          "5 - ", counter5, \
          "6 - ", counter6, \
          "7 - ", counter7, \
          "8 - ", counter8, \
          "9 - ", counter9, \
          "10 - ", counter10, \
          "11 - ", counter11, \
          "12 - ", counter12, \
          "Doubles - ", doubles)
main()

程序的目标是掷2个骰子,不管用户想要多少次,然后列出掷骰子1、2、3、4等的次数随机.randint(1,6)和die2=随机.randint(1,6)给我一个语法错误,并强调“die1”的意思,告诉我我做错了什么?在


Tags: ifrandomrandintdie2die1counter2counter4counter5
3条回答

in相等运算符是==不是=

if die1 + die2 == 2:



rolls = int(input("How many times would you like to roll the dice?")) <- missing this parentheses

一些错误:

  • if不带冒号的语句
  • 相等性检验是==,而不是{}
  • 缺少右括号
  • 全局变量在函数中不可访问,使它们成为局部变量

下面是正确的版本:

import random

def main():
    #set counters
    counter2=0
    counter3=0
    counter4=0
    counter5=0
    counter6=0
    counter7=0
    counter8=0
    counter9=0
    counter10=0
    counter11=0
    counter12=0
    doubles=0

    #get input from user
    rolls = int(input("How many times would you like to roll the dice?"))
    for count in range(rolls+1):
        #roll dice
        die1 = random.randint(1,6)
        die2 = random.randint(1,6)
        #add up dice totals to counters
        if die1 + die2 == 2:
            counter2 += 1
        if die1 + die2 == 3:
            counter3 += 1
        if die1 + die2 == 4:
            counter4 += 1
        if die1 + die2 == 5:
            counter5 += 1
        if die1 + die2 == 6:
            counter6 += 1
        if die1 + die2 == 7:
            counter7 += 1
        if die1 + die2 == 8:
            counter8 += 1
        if die1 + die2 == 9:
            counter9 += 1
        if die1 + die2 == 10:
            counter10 += 1
        if die1 + die2 == 11:
            counter11 += 1
        if die1 + die2 == 12:
            counter12 += 1
        if die1 == die2:
            doubles += 1
    #print data
    print("2 - ", counter2, \
          "3 - ", counter3, \
          "4 - ", counter4, \
          "5 - ", counter5, \
          "6 - ", counter6, \
          "7 - ", counter7, \
          "8 - ", counter8, \
          "9 - ", counter9, \
          "10 - ", counter10, \
          "11 - ", counter11, \
          "12 - ", counter12, \
          "Doubles - ", doubles)
main()

我把你的程序修好了一点。在

请注意,在嵌套联接调用中使用生成器表达式可以提高效率。在

print '\n'.join(['' if not globals().update({'rolls' : [(__import__("random").randint(1,6),__import__("random").randint(1,6)) for count in range(int(input("How many times would you like to roll the dice?")))]}) else '', '\n'.join("%d - %d" % (i, len(filter(lambda x: sum(x)==i, globals()["rolls"]))) for i in range(2,11)), "Doubles %d" % len(filter(lambda r:r[0]==r[1], globals()["rolls"]))]).lstrip()

相关问题 更多 >

    热门问题