0

我被设置了一个简单的任务:

为一个游戏编写一个程序,其中计算机生成一个介于 20 到 30 之间的随机起始数字。玩家和计算机可以轮流从数字中删除 1,2 或 3。像这样... 起始编号:25 您要删除多少?3 22 left 计算机删除 2 20 left 必须删除最后一个值以将数字降至 0 的玩家是失败者。剩下 1 计算机删除 1 你赢了!

我正在尝试创建它,以便玩家只能输入数字 1、2 或 3 来删除。

我在 if 语句所在的位置收到无效语法的语法错误:

import random
import time

start=random.randint(20,30)

print('Starting number is',start)

personremove=int(input('How many do you want to remove? '))

if personremove=<3 or >1:
    print('Enter a number between 1 and 3')
    personremove=int(input('How many do you want to remove? '))


current=start-personremove

print(current,'left')

compremove=random.randint(1,3)

current=start-personremove-compremove

print('Computer removes',compremove)

print(current,'left')

任何帮助将不胜感激,正如您可能知道的那样,我只是 python 的初学者。

4

5 回答 5

6

if personremove=<3 or >1:应该

if personremove <= 3 or personremove > 1:
于 2013-04-09T21:01:39.917 回答
3

您需要重新排序这些语句:

if 1 < personremove <= 3:

python 的or运算符需要左右两边都有一个对象或表达式。正如你所写的那样,右边有另一个运算符,这是非法的。另外,=<不是 python 运算符。它是<=

于 2013-04-09T21:01:41.677 回答
2

personremove=<3 or >1 不是合法的表达方式。利用:

if not (1 <= personremove <= 3):

这利用了链式比较运算符;它的含义大致相同:

if personremove < 1 or personremove > 3:

但是personremove只计算一次,我们更清楚地表明该数字超出了 1 - 3 的范围。

您可能想改用while循环来继续要求正确的数字:

personremove = 0
while not (1 <= personremove <= 3):
    print('Enter a number between 1 and 3')
    try:
        personremove = int(input('How many do you want to remove? '))
    except ValueError:
        pass
于 2013-04-09T21:01:41.167 回答
0

你的if陈述只需要稍微调整一下。尝试:

if 1 <= personremove <= 3:
    ...

希望有帮助

于 2013-04-09T21:02:21.900 回答
0

有几个错误:

  1. 你的指示不一致。唯一介于1 和 3 之间的整数是 2。但这肯定不是您的意思。您的意思是输入 1、2 或 3。
  2. 您具有大于向后的语法。应该personremove > 3读为 personremove 大于 3。
  3. 您不能只在>1之后添加or,您必须再次说明应该与什么变量相关1。这将起作用personremove < 1

    如果 personremove < 1 或 personremove > 3:

一般来说,还有更好的方法来编码。例如,将此部分放入一个循环中。

于 2013-04-09T21:15:34.907 回答