所以我有一个 SteamApp 对象列表:
>>> games
[<SteamApp "Counter-Strike: Global Offensive" (730)>, <SteamApp "XCOM: Enemy Unknown" (200510)>]
Run Code Online (Sandbox Code Playgroud)
我也有这段代码:
ownscs = []
if '"Counter-Strike: Global Offensive"' in games:
print('Owns CS')
ownscs.append(foo)
Run Code Online (Sandbox Code Playgroud)
我想做的就是检查是否有人拥有《反恐精英》,但问题的关键来了,列表游戏不可迭代,并且没有属性查找,如果我尝试这两个游戏,我会得到:
if any('"Counter-strike: Global Offensive"' in s for s in games):
TypeError: argument of type 'SteamApp' is not iterable
Run Code Online (Sandbox Code Playgroud)
和
if games.find('"Counter-strike: Global Offensive"') != -1:
AttributeError: 'SteamApp' object has no attribute 'find'
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:当《反恐精英:全球攻势》显然既不可迭代也不可找到时,我如何检查它的游戏列表。
如果您想知道那是什么,我使用https://github.com/smiley/steamapi创建 SteamApp 对象。
今天艰难的任务.我已经在圈子里工作了大约五个小时.我只是无法绕过这个,看看这个上的雾.这是我们老师今晚指派的作业:
创建一个名为RockPaperScissors的新Visual Studio控制台应用程序.
Rock/Paper/Scissors游戏有以下规则:
- Scissor总是赢得Paper
- 洛克总是赢得反对剪刀
- 纸总是胜过Rock
创建以下三个遵循以下规则的类:
PlayerRock - 始终执行Rock的Act().
PlayerScissors - 总是执行Scissors的Act().
PlayerPaper - 始终执行Paper的Act().
创建一个具有名为Fight()的方法的Game类,以满足这些要求:
Fight()方法接受两个参数:Player1和Player2.
Fight()方法调用两个玩家的Act()方法.
Fight()方法使用上面的Rock/Paper/Scissors规则返回获胜玩家.
经过100轮比赛,哪位球员获胜?
我可以轻松地将游戏逻辑和脚本编写出来,没问题.如何使每个武器的法案方法成为现实?并传递一个player1和player2?我是否需要类来创建新的播放器对象?我有Rock,Paper,Scissors课程,但他们基本上只有一种方法可以让他们回归摇滚,纸张和剪刀.我不是要求任何人为我制作这个游戏,但任何人都可以让我指出正确的方向吗?谢谢大家!