Python:脚本逐字母而不是完整的单词打印字典值?

时间:2015-03-26 14:17:26

标签: python function class dictionary printing

我有一个班级:

class Bike(object):
    """Parent class for bikes"""

    def __init__(self, name, weight, cost):
        self.name = name
        self.weight = weight
        self.cost = cost

    def model(self):
        for trait in self.name:
            print trait

    def pounds(self):
        for trait in self.weight:
            print trait

    def money(self):
        for trait in self.cost:
            print trait

我创建了一个包含多个键/值关联的字典:

bikes = {}

# Bike designed for children"
bikes['bike1'] = Bike("Trike", "20", "100")

上面有6辆自行车,

当我尝试运行它们时:

bikes['bike1'].model()
bikes['bike1'].pounds()
bikes['bike1'].money()

我确实得到了名称,重量和成本的打印件,

但它会逐字打印出来:

Ť

[R

ķ

ë

2

0

1

0

0

我错过了什么?

3 个答案:

答案 0 :(得分:4)

这些行:

        for trait in self.name:
            print trait

self.name是一个字符串。如果循环遍历字符串,则逐个获取单个字符。因此,您的print语句将逐个打印每个字符。如果要打印模型的名称,只需:

print self.name

这里根本不需要循环。

答案 1 :(得分:2)

for trait in self.name:
        print trait

处理trait作为字符串self.name中的每个字符,并为字符串中的每个字符执行循环体。所以每个角色都印在一条单独的线上。你想用什么来打印出一个单词和一行中的名字就是这个。您的其他方法和属性也是如此:

def model(self):
    print self.name

答案 2 :(得分:0)

它是因为self.name的类型,self.cost是字符串。 如果要将值包装到列表中,则不会遇到该问题 例如

  

自行车([" Trike"],[" 20"],[" 100"])

其他选项只是在.model(),. pounds(),. money()中打印它们 for loop