2016-05-23 4 views
0

私がPythonのさまざまなファイルから関数を変更することが可能であるかどうか不思議です。異なるファイルの機能を変更するにはどうすればよいですか?

psrock.pyファイルの特徴は、それぞれのファイルから2つのデータを受け取り、それぞれのファイルがロックペーパーハサミで互いに競合し、勝ったプレーヤーを決定することです。もちろん、psrock.pyファイルには他の関数も含まれていますが、他の関数は私の質問にはあまり関係ないので、関数を1つだけ挿入しました。

私は、team3(team1、team2、team3があり、彼らがロックペーパーのはさみを互いに演奏するようにpsrock.pyファイルにある関数を編集しようとしています(つまりteam1とteam2は互いにチーム1と3の後、逆の場合も同様))結果は常にロックされ、相手の結果はハサミになり、チーム3は何があっても勝つことができます。

しかし、私は苦労して何をすべきかわかりません。:(私はほとんどPythonを学び始めていませんし、私にとってはかなり難しい課題です。 )

# This is a function from psrock.py file 
import team3 

def round(player1, player2, history1='', history2=''): 

    # Get player 1's move. 
    move1 = player1(my_history=history1, their_history=history2) 
    # Get player 2's move. 
    move2 = player2(my_history=history2, their_history=history1) 

    if valid(move1) and valid(move2):  
     if move1 == move2: 
      score1, score2 = 0, 0 
     elif move1+move2 in ['rs', 'sp', 'pr']: 
      score1, score2 = 1, -1 
     else: 
      score1, score2 = -1, 1 
    else: #one of the moves was invalid 
     if valid(move1): # only move2 was invalid 
      move2 = 'x' 
      score1, score2 = 1, -1 
     elif valid(move2): # only move1 was invalid 
      move1 = 'x' 
      score1, score2 = -1, 1 
     else: # Both moves invalid 
      move1, move2 = 'x', 'x' 
      score1, score2 = -1, -1 

    return move1, move2, score1, score2 

...そして、私はteam3という名前の別のファイルからこの機能を編集しようとしている...

# Team 3 File 
# -*- coding: utf-8 -*- 
import psrock 

def round(player1, player2, history1='', history2=''): 
    move1 = player1(my_history=history1, their_history=history2) 
    if player1 == team3: 
     move1 = 'r' 
     move2 = 's' 
    elif player2 == team3: 
     move1 = 's' 
     move2 = 'r' 

ファイル:


  1. は、zipファイル
  2. 開き同じタブ
  3. psrock_play.pyファイルを再生

https://drive.google.com/file/d/0BxNi5bq6Cvnea0c4aVVIWUxZRUE/view?usp=sharing

+0

のために、さらに検索し、あなたが「別のファイルからこの機能を編集」により、正確に何を意味するのですか? –

+0

@JonathanMarchだから、基本的に、最初のファイルに「round(player1、player2、history1 = ''、history2 = '')」と呼ばれる関数があることがわかっていますか?私はそれが実行されるとき(またはそのような)別のファイルから何をするかを手動で変更するのではなく、ファイル#1の中で私の機能が何をするのかを変更しようとしています。だから、基本的にファイル#2では、私はそれをプレイヤー1または2がチーム3と等しいなら、それはチーム3のための 'r'と他のプレイヤーのための 's'となるようにしようとしています。 (ムーブ1はプレイヤー1、ムーブ2はプレイヤー2) –

+0

あいまいな説明が残念です。私はまだこの問題を可能な限り説明する方法を見つけるのに苦労しています。 : –

答えて

0

として内のすべてのファイルを解凍し、ファイルをダウンロードします私はあなたの質問を理解しています、あなたのround関数を変更することが1つの簡単な解決策かもしれません。 o呼び出されると、そのパラメータの1つが「コールバック関数」への参照になります。この関数は、roundを呼び出すモジュールで定義されますが、実際にはroundの内部で実行されます。一般的に、コールバック関数の詳細については

https://en.wikipedia.org/wiki/Callback_(computer_programming)#Python Implementing a callback in Python - passing a callable reference to the current function または「Pythonのコールバック関数」

+0

psrock.pyファイルを編集するのに最適な解決策ですが、ラウンド関数を使って最初のファイルから何も変更できないというルールがあります。 :(本当にありがとう!)x本当にありがとうございます。 –

関連する問題