0

所以我的代码基本上是在每场比赛中模拟棒球运动员 (Joe DiMaggio) 的击球动作。这是到目前为止的代码

import random
i = random.randint(1, 100)
j = random.randint(1, 100)
k = random.randint(1, 100)
l = random.randint(1, 100)
while True:
    if i <= 32:
        i = 1
    else:
        i = 0
    if k <= 32:
        k = 1
    else:
        k = 0
    if j <= 32:
        j = 1
    else:
        j = 0
    if l <= 32:
        l = 1
    else:
        l = 0
    m = i+j+k+l
    print("He went", m, "-4")

我想知道它是否适用于所有不同的 IF 和 ELSE 语句。同样,当我尝试运行它时,它会突出显示 print 语句中的 m 并显示错误:Invalid Syntax。

有关如何解决此问题的任何帮助?编辑:语法错误已修复,但现在它只是第一次将它们相加,其余的打印都是4-4。

4

2 回答 2

3

您需要修复您的打印声明:

print("He went", m, "-4")

或使用字符串连接:

print("He went" + str(m) + "-4")

或字符串格式:

print("He went {} -4".format(m))

然后,您的代码将进入一个无限循环,一遍又一遍地重新计算相同的值,因为不会每次m都重新计算随机值。, ,和是静态的,它们不引用函数调用,它们引用每个调用的返回值。ijklrandom.randint()

您可以使用循环简化代码,该循环每次m都会根据新的随机值重新计算:

m = sum(1 for i in range(4) if random.random() < 0.32)
于 2013-07-07T14:28:37.067 回答
1

您必须使用连接运算符。

print("He went " + str(m) + "-4")

因此,您在打印之前将输出连接为单个字符串

于 2013-07-07T14:30:20.043 回答