int()的基数为9的无效文字:'TEXT'

时间:2015-03-04 11:05:38

标签: python

import os
import random
name=input('what is your name? ')
print('hello lets answer some maths',name)
b=random.randint(1,10)
a=random.randint(1,10)
input(int("what is? ",float(b)+float(a) ))

帮助 我一直在标题中得到错误,虽然它现在改变了基础。

2 个答案:

答案 0 :(得分:1)

您使用字符串作为基础调用int()。函数签名如下所示:

int(x, base=10) -> int or long

所以:

int("what is? ", float(b)+float(a)) 

尝试将字符串'what is?'转换为整数,将'what is?'视为随机基float(b) + float(a)生成的。例如:

>>> a = 8
>>> b = 1
>>> int('what is?', float(b)+float(a))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 9: 'what is?'
>>> b = 27
>>> int('what is?', float(b)+float(a))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 35: 'what is?'

我认为您尝试做的只是输出用户输入的提示,在这种情况下您可以将代码更改为:

answer = int(input("What is {} {} {}? ".format(float(b), '+', float(a))))

这使用str.format()创建一个格式化字符串,其中包含两个数值,运算符作为参数。然后,input()的返回值将转换为int

答案 1 :(得分:0)

您正在调用 int()来执行字符串

Pythonic迭代文件转换 int

for line in open(fname):
   if line.strip():           # line contains eol character(s)
       n = int(line)          # assuming single integer on each line

你有ValueError的原因是因为int无法将空字符串转换为整数。在这种情况下,您需要在转换之前检查字符串的内容,或者错误除外:

try:
   int('')
except ValueError:
   pass      # or whatever