2017-03-27 4 views
-1
cheats = { 
      "GODMODE" : "Health and armour + 1000", 
      "Full pockets" : "adds 1000 of each item", 
      } 
commands = { 
      "cheats" : "show cheats", 
      "activate [cheat]" : "activates a cheat", 
      } 
command = input(">").split() 
if len(command) == 0: 
    continue 

if len(command) > 0 : 
    verb = command[0].lower() 

if len(command) >1 : 
    item = command[1].lower() 

if user_input = "activate" : 
    if item in cheats: 

ユーザーはどのような不正行為をしたいのですか?それ以外はすべて動作します。これはコードの大きな部分の一部です。辞書内のどの項目がPythonの変数であるかを確認するにはどうすればよいですか?

+0

あなたのコードに 'item'とは何ですか? 'item'はあなたが他のユーザの入力から得たものですか? – idjaw

+0

あなたのコードには多くの間違いがあります。たとえば、 '='の代わりに '=='を使い、 'item'は決して定義しません。 – abccd

+0

itemはactivate後に入力するものです。それはそれを試して動作します。 – user7695144

答えて

0

私はあなたがcheats.keys()を探していると思います。辞書のキーのタプルを返します。

0

私はtry...exceptブロックを使用します。

if user_input == 'activate': 
    try: 
     activate(cheats[item]) # or whatever 
    except KeyError: 
     print("bad cheat") 
+0

'activate(cheats [item])'はまったく動作せず、構文エラーです。 – user7695144

+0

@ user7695144これはちょうど擬似コードです。関数 'activate'があると仮定します。それが私がコメントで示しているものです。 – saulspatz

1

が存在しない場合、あなただけの辞書やNoneから関連する値を引くことができます。

これは、あなたがの形式で入力を取得しない限り、あなたは何を行うにはしたくないことを前提としていますactivate cheatcode

cheats = { 
     "GODMODE" : "Health and armour + 1000", 
     "Full pockets" : "adds 1000 of each item", 
     } 
ask = input("what do you wish to do?") 
code = ask.split()[1] 
activate = cheats.get(code,None) 
#do something based on activate value 

アクティベートは今、選択またはNoneチートの値を持っています。一度に複数のチートを可能にしたい場合を除き、ループや条件文は必要ありません。

関連する問題