1

おそらく私のコーディングはあまり良くなく、いくつかの行はあまり意味をなさないか、必要ではありませんが、コードの目的は非常に単純です:

入力(文字列)を使用する関数を作成し、それを整数として変換して、数学の問題で使用したいと考えています。プラス:コードでランダムに生成された数値を解釈し、それを文字列に相当するものとして出力したい:

### 'one' --> 1
### 'zero' --> 0 

import random

##'one' == 1
##'zero' == 0

def name_to_number(name):
    if name == 'one':
        return 1

def number_to_name(comp_number):
    if comp_number == 1:
        return 'one'

def lit_for_num(name):
    '''(str) -> str'''

    comp_number = random.randrange(0,1)
    equation = (abs(comp_number - int(name)))
    if equation == 0:
        print('Hallo!')
        return 'Computer draws' + comp_number
    else:
        return 'Computer draws 0'

どんな助けでも非常に感謝しています。

4

2 に答える 2

2

最初の問題は、one入力として使用して いるように見えるためint('one')、そのエラーが発生することです。

第二に、次のとおりです。

comp_number = random.randrange(0,1)
...
if equation == 0:
    print('Hallo!')
    return 'Computer draws' + comp_number
else:
    return 'Computer draws 0'

は常に 0 であるため、else句は常に呼び出されます。comp_number

rand.randrangeは に似ており、常に 0 を返すことをchoice(range(start, stop, step))意味します。または、エンド ポイントとを含む代わりに使用します。randrange(0,1)randrange(0,2)01random.randint(0,1)01

おまけとして、テキスト番号を番号ごとに処理するには、 Greg Hewgillによって書かれたtext2numを検討することをお勧めします。

于 2012-10-21T02:21:26.403 に答える
0

以下のコードは私とうまく動作します。私がしなければならなかったのは、 と を変更return 'Computer draws'+comp_numberすることreturn 'Computer draws'+str(comp_number)だけでしrandom.randrange(0,1)random.randrange(0,2)

### 'one' --> 1
### 'zero' --> 0 

import random

##'one' == 1
##'zero' == 0

def name_to_number(name):
    if name == 'one':
        return 1

def number_to_name(comp_number):
    if comp_number == 1:
        return 'one'

def lit_for_num(name):
    '''(str) -> str'''

    comp_number = random.randrange(0,1)
    equation = (abs(comp_number - int(name)))
    if equation == 0:
        print('Hallo!')
        return 'Computer draws' + str(comp_number)
    else:
        return 'Computer draws 0'
于 2012-10-21T02:19:34.937 に答える