Python调试练习
以下是一系列调试练习,你可能在实际开发过程中遇到这些问题。它们基于我被问到的问题。我觉得分享出来会很有趣。
这是你作为软件开发人员入职的第一周。你已经布置好了工作环境,旁边坐着一位比你早入职几天的初级同事。
他转向你,问你是否有一分钟时间。
“嘿,如果你不介意的话,请帮我找出问题所在……”
问题 1
语境
要更改模型实例的显示名称,我们将使用def __str__()模型中的函数。Django 模型中的 `str` 函数返回一个字符串,该字符串将作为该模型实例的显示名称。
例如,如果我们像这样在 models.py 中调整模型,
from django.db import models
from django.db.models import Model
class SomeModel(Model):
name = models.CharField(max_length = 100)
def __str__(self):
return f"{self.name}"
当我们访问 SomeModel.objects.all() 时,输出应该是该对象名称字段的列表。
问题
它对注释不起作用。当打印一个 Comment 对象时,它显示的是 [Comment object (1)],而不是 str 下定义的内容。
我们来检查一下代码:
# imports here
class Listing(models.Model):
max_bid = models.DecimalField(...)
...
def __str__(self):
return ...
class Bid(models.Model):
...
class User(AbstractUser):
...
class Comment(models.Model):
comment = models.TextField()
listing = models.ForeignKey(Listing, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def _str__(self):
return f'{self.id}: {self.comment}'
你的队友哪里做错了?
问题 2
语境
你的同事正在秘密面试其他公司,面试官要求他在列表中找到最小值,但不能使用 min 函数。
问题
下面的代码似乎找不到列表中的最小元素。为什么?
def minimum(some_list):
a = 0
for x in range(1, len(some_list)):
if some_list[x] < a:
a = some_list[x]
return a
你的队友哪里做错了?
文章来源:https://dev.to/msoup/python-debugging-exercises-145h