班级:
class Book(object):
def __init__(self, title, author):
self.title = title
self.author = author
def get_entry(self):
return "{0} by {1} on {}".format(self.title, self.author, self.press)
从中创建我的书的实例:
In [72]: mybook = Book('HTML','Lee')
In [75]: mybook.title
Out[75]: 'HTML'
In [76]: mybook.author
Out[76]: 'Lee'
请注意,我没有初始化属性'self.press',而是在get_entry方法中使用它。继续输入数据。
mybook.press = 'Murach'
mybook.price = 'download'
到目前为止,我可以使用vars
In [77]: vars(mybook)
Out[77]: {'author': 'Lee', 'title': 'HTML',...}
我在控制台中输入了很多关于mybook的数据。当尝试调用get_entry方法时,错误报告。
mybook.get_entry()
ValueError: cannot switch from manual field specification to automatic field numbering.
所有这些都在控制台上以交互模式进行。我珍惜数据输入,进一步在文件中挑选mybook
对象。但是,它有缺陷。如何在交互模式下拯救它。
或者我必须重新开始。
答案 0 :(得分:10)
return "{0} by {1} on {}".format(self.title, self.author, self.press)
不起作用。如果你指定职位,你必须在最后完成:
return "{0} by {1} on {2}".format(self.title, self.author, self.press)
在你的情况下,最好是自动离开python:
return "{} by {} on {}".format(self.title, self.author, self.press)
答案 1 :(得分:1)
如果可以以表格格式给出适当的输出,如果 而不是使用格式去f“”;
例如
<!DOCTYPE html>
<html>
<head>
<title><strong>Unable to handle Value Error</strong></title>
</head>
<body>
<p><ol>for name, branch,year in college:</ol>
<ol> print(f"{name:{10}} {branch:{20}} {year:{12}} )</ol>
<ol>name branch year </ol>
<ol>ankit cse 2</ol>
<ol>vijay ece 4</ol>
<ol> raj IT 1</ol>
</body>
</html>
答案 2 :(得分:1)
您之所以看到此错误,主要是因为您使用了空花括号,表示 python 使用默认编号,后来您在替换字段中指定了数字。从而给解释器造成混乱。
print ("{0} by {1} on {}".format(self.title, self.author, self.press))
这里的 {} 表示从第一个替换字段开始,然后一直到结束,而不是像从零开始的切片一样。
要清除此错误,您可以使用
print ("{0} by {1} on {2}".format(self.title, self.author, self.press))
print ("{} by {} on {}".format(self.title, self.author, self.press))
答案 3 :(得分:0)
print ("{0:.1f} and the other no {0:.2f}".format(a,b))
python不能在一次执行代码中同时进行手动和自动精度处理(字段编号)。您可以为每个变量指定字段编号,也可以让python自动对所有变量进行编号。