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'

else子句将始终被调用,因为comp_number始终为 0。

rand.randrange类似于choice(range(start, stop, step)),这意味着randrange(0,1)将始终返回 0。randrange(0,2)如果您想要0或,您会想要1。或者,改用random.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 回答