有两个玩家的游戏。在这个游戏中,每个玩家轮流从三个袋子中取出1到5个物体:A,B,C。拿走最后一个物体的玩家获胜。规则如下:
•游戏开始时,每个包包含10个物品。
•玩家可以一次从一个包中取出物品。
•玩家不能选择移除0个对象。对象数必须介于1和5之间(包括1和5)。
•游戏结束时,所有的袋子都是空的。
•当前玩家必须首先选择包(A或B或C),然后选择必须从该包中移除的对象数量。
•您还必须检查用户的输入是否有效。是有效的行李(a、B或C)?这是一个有效的数字(1到5之间)?还有,袋子里有足够的东西吗?如果不满足这些条件中的任何一个,请再次要求用户输入。(您需要使用循环来执行此操作)
示例:
A B C
10 10 10 Player1从B获取5个对象。
10 5 10 Player2从C获取5个对象。
10 5 5 Player1从A获取3个对象。
7 5 5播放器2从B获取3个对象。
7 2 5 Player1从C获取5个对象。
7 2 0 Player2从A获取2个对象。
5 2 0 Player1从A获取1个对象。
4 2 0 Player2从A获取3个对象。
1 2 0 Player1从B获取1个对象。
1 10 Player2从B获取1个对象。
1 0 0 Player1从A获取1个对象。
*注意:*我必须只使用循环或如果条件没有列表或其他
我已经做到了:
A=5
B=5
C=5
total_objects=15
Player1=0
Player2=0
while total_objects>0:
selected_bag=input("Choose the bag:")
if selected_bag == A or B or C:
print("Valid bag")
else:
selected_bag=input("Not a valid bag choose again:")
removed=int(input("How many objects do you want to remove?"))
if removed>5 or removed<1:
int(input("You must enter between 1 and 5:"))
elif removed == 1 or 2 or 3 or 4 or 5:
if selected_bag == A:
A-=removed
if selected_bag == B:
B-=removed
if selected_bag == C:
C-=removed
if A>0:
print("There are",A,"objects left")
elif B>0:
print("There are",B,"objects left")
elif C>0:
print("There are",C,"objects left")
print("You win!")
这条生产线有两大问题:
正如aikid已经解释过的,第一个问题是
or
不是那样工作的;您需要in
。在第二个问题是要检查用户是否输入了字符串},而不是检查他是否输入了
"A"
、"B"
和{A
、B
和C
变量的值。在所以,你想要的是:
^{pr2}$您再次重复这两个问题,并需要再次修复它们:
…需要
…或者更好
然后,在这里面:
…需要
…B和C也是一样的
最后,本部分:
…什么都没用。它要求用户输入另一个数字,将结果转换为
int
,然后忽略它并落到if A>0:
部分。如果你想一直问直到用户给出有效答案,你需要某种循环。当然,你必须把这个值存储在某个地方,这样它才会有用。例如:您在
selected_bag
输入部分也有一个非常类似的错误。在如果你想处理两个玩家,你需要跟踪当前轮到谁了。一种简单的方法是存储一个
current_player
变量,并通过循环每次更新它。例如:如果你想“掷硬币”来决定谁先走,你只需将第一行改为:
你不是这样检查物品的。这条线:
不像你想的那样。它计算
A or B or C
,然后将其与您的selected_bag
进行比较。在请改用
^{pr2}$in
运算符。另外,您需要检查的是字符串,而不是变量:正如阿巴内特提到的,你还需要改变其他人。在
同时,更改以下行:
为了正确地循环,当条件为false时,您需要
continue
:一个简单的
else
语句。在老实说,你的代码有很多问题。@阿巴内特解释得比我好得多。在
相关问题 更多 >
编程相关推荐