class Restaurant(): def __init__(self, restaurant_name, cuisine_type): self.restaurant_name = restaurant_name self.cuisine_type = cuisine_type def describe_restaurant(self): return self.restaurant_name+"is a good restaurant.Its cuisine is"+self.cuisine_type def open_restaurant(self): return self.restaurant_name+"now is work" class IceCreamStand(Restaurant): def __init__(self, restaurant_name, cuisine_type,*flavors): super().__init__(restaurant_name,cuisine_type) self.flavors = flavors def icelist(self): for sweet in self.flavors: print(self.restaurant_name+sweet) return '' ice = IceCreamStand("sweeet","冰淇凌",'aa','bb') print(ice.icelist())在做python练习题的时候,遍历列表后发现输出结果带个none,非常烦躁。
查了许多方法,发现是因为有return返回值,如果不设置的话就会返回none,最直接的办法就是像上面一样,设置为空的字符串。但是感觉很难受,所以我把for循环去掉,然后把return修改了一下
return self.restaurant_name+str(self.flavors)改成直接返回值了,而不是先遍历出数据再返回值,不过感觉还是非常不舒服,但是目前来说没有找到更好的方法了,等想到更好的方法回来修改一下!
差不多10分钟,我就又回来了,首先呢,self.flavors是一个元组,我之前一直以为是列表的。
说下方法,就是把元组给遍历出来,然后把他的值储存起来就可以了。
b = "" for i in range(0,len(self.flavors)): c = self.flavors[i] b = b + c if i != len(self.flavors) -1: b = b+"," return b #修改return为self.restaurant_name+b即可元组的读取还是一样的都是xxx[?]进行读取,然后取一个变量等于这个值不断向上增加即可,后面的那个if是判断增加逗号的,显得更好看,为什么要加if是因为如果不加的话,那最后一个值也会加上,
sweetaa,bb,
输出这样的结果,非常难看,而如果加上判断
sweetaa,bb
输出这样的结果,还可以接受的,哈哈。有简单的方法可以在底下评论指出!