ValueError:int()的无效文字,基数为10:str

时间:2012-10-21 01:57:49

标签: python string integer

可能我的编码不是很好,有些行没有多大意义或没有必要,但代码目的很简单:

我想创建一个使用输入(字符串)的函数,并将其转换为整数,这将用于数学问题。 另外:我希望我的代码能够解释随机生成的数字并将其打印为等效的字符串:

### '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'

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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.randrangechoice(range(start, stop, step))类似,这意味着randrange(0,1)将始终返回0.如果您想randrange(0,2)或{0,则需要1 {1}}。或者,改为使用random.randint(0,1),其中包括结束点01

作为奖励,要将文字编号处理为数字,您可能需要考虑text2num撰写的Greg Hewgill

答案 1 :(得分:0)

以下代码对我来说效果很好。我所要做的就是将return 'Computer draws'+comp_numberreturn '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'