我是python的新手,我知道我做错了,但似乎找不到必须的方法。
我希望用户输入两次他想要的框。我想使用他选择的框的值并将它们彼此添加,然后打印该值,因此2x输入box1应该给出80的值。
稍后,我希望可以使用更多的盒子。
SharpZipLib
答案 0 :(得分:0)
此代码的一些建议:
self
,因为self
引用了在其上调用该方法的类的实例Boxes
实例,则需要将所有Boxes
保留在列表中的某个位置input
函数接受一个prompt
字符串作为参数,这比使用单独的print
语句使事情更简洁这里是重构:
class Box:
'''Box with assigned weight'''
def __init__(self, name, weight):
self.name = name
self.weight = weight
boxes = [
Box('box1', 40),
Box('box2', 70),
Box('box3', 110)
]
def get_box_weight_if_box_exists(box_name, boxes):
for box in boxes:
if box.name == box_name:
return box.weight
return 0
keep_adding = True
total = 0
while keep_adding:
box_name = input('Enter a box name: ')
total += get_box_weight_if_box_exists(box_name, boxes)
print('Total: {}'.format(total))
keep_adding = input('Add another? (y/n): ') == 'y'
运行时,以上代码将继续按名称询问新包装盒,并将指定包装盒的重量加到总计中,直到当用户要求输入'y'
时输入除'Add another? (y/n)'
以外的任何内容时。我不确定在没有给定box_name
的框的情况下如何处理该情况,但是您可以将return 0
中的get_box_weight_if_box_exists
行更改为几乎所有其他内容
以下是一些示例输出:
> Enter a box name: box1
Total: 40
> Add another? (y/n): y
> Enter a box name: box2
Total: 110
> Add another? (y/n): y
> Enter a box name: nice
Total: 110
> Add another? (y/n): n
让我知道您是否有疑问。