Python: 脚本逐个字母打印字典值而不是整个单词?
Python: Script prints out dictionary value letter by letter instead of full word?
我有一个 class:
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
我创建了一个包含多个 key/value 关联的字典:
bikes = {}
# Bike designed for children"
bikes['bike1'] = Bike("Trike", "20", "100")
6 辆自行车,如上,
当我尝试 运行 他们时:
bikes['bike1'].model()
bikes['bike1'].pounds()
bikes['bike1'].money()
我确实打印了名称、重量和费用,
但是它一个字母一个字母地打印出来:
T
r
我
k
e
2
0
1
0
0
我错过了什么?
因为self.name、self.cost的类型是string。
如果您将这些值包装到列表中,您将不会遇到这个问题
例如
Bike(["Trike"], ["20"], ["100"])
其他选项只是将它们打印在 .model()、.pounds()、.money() 中而不用
for循环
for trait in self.name:
print trait
将 trait
处理为字符串 self.name
中的每个字符,并为字符串中的每个字符执行循环体。所以每个字符都打印在单独的行上。你想用一个词一行打印出名字的是这个。您的其他方法和属性也是如此:
def model(self):
print self.name
这些行:
for trait in self.name:
print trait
self.name 是一个字符串。如果你遍历一个字符串,你会一个一个地得到单个字符。因此,您的 print 语句会逐个打印每个字符。如果要打印模型名称,只需:
print self.name
这里根本不需要循环。
我有一个 class:
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
我创建了一个包含多个 key/value 关联的字典:
bikes = {}
# Bike designed for children"
bikes['bike1'] = Bike("Trike", "20", "100")
6 辆自行车,如上,
当我尝试 运行 他们时:
bikes['bike1'].model()
bikes['bike1'].pounds()
bikes['bike1'].money()
我确实打印了名称、重量和费用,
但是它一个字母一个字母地打印出来:
T
r
我
k
e
2
0
1
0
0
我错过了什么?
因为self.name、self.cost的类型是string。 如果您将这些值包装到列表中,您将不会遇到这个问题 例如
Bike(["Trike"], ["20"], ["100"])
其他选项只是将它们打印在 .model()、.pounds()、.money() 中而不用 for循环
for trait in self.name:
print trait
将 trait
处理为字符串 self.name
中的每个字符,并为字符串中的每个字符执行循环体。所以每个字符都打印在单独的行上。你想用一个词一行打印出名字的是这个。您的其他方法和属性也是如此:
def model(self):
print self.name
这些行:
for trait in self.name:
print trait
self.name 是一个字符串。如果你遍历一个字符串,你会一个一个地得到单个字符。因此,您的 print 语句会逐个打印每个字符。如果要打印模型名称,只需:
print self.name
这里根本不需要循环。