12(2),2024-2024华为Python面试真题

  • 数据库类型:varchar

  • 注意: 必须要指定max_length参数值

  • DateField()

  • 数据库类型:date

  • 作用:表示日期

  • 参数:

  • auto_now:每次保存对象时,自动设置该字段为当前时间(取值:True / False)

  • auto_now_add:当对象第一次被创建时自动设置当前时间(取值:True / False)

  • default:设置当前时间(取值:字符串格式时间,如:‘2019-6-1’)

  • 以上三个参数只能多选一

  • DateTimeField()

  • 数据库类型:datetime(6)

  • 作用:表示日期和时间

  • 参数同DateField

  • FloatField()

  • 数据库类型:double

  • Django、数据库中都是用小数表示值

  • DecimalField()

  • 数据库类型:decimal(x,y)

  • Django、数据库中都是用小数表示值

  • 参数:

  • max_digits:位数总数,包括小数点后的位数。该数值必须大于等于decimal_places

  • decimal_places:小数点后的数字量数

  • EmailField()

  • 数据库类型:varchar

  • Django、数据库中都是用字符串表示值

  • IntegerField()

  • 数据库类型:int

  • Django、数据库中都是用整数表示值

  • ImageField()

  • 数据库类型:varchar(100)

  • 作用:在数据库中为了保存图片的路径

  • Django、数据库中都是用字符串表示值

  • TextField()

  • 数据库类型:longtext

  • 作用:表示不定长的字符数据

  • 官方文档

https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types

3.3. 创建模型类测试


在bookstore/models.py应用中,添加一个模型类

  • Author - 作者

  • name CharField 姓名 长度最大11

  • age IntegerField 年龄

  • email EmailField 邮箱

  • 代码:

class Author(models.Model):

name = models.CharField(“姓名”, max_length=11)

age = models.IntegerField(“年龄”)

email = models.EmailField(“邮箱”)

  • 迁移:

在这里插入图片描述

3.4. 字段选项


  • 字段选项,指定创建的列的额外的信息

  • 允许出现多个字段选项,多个选项之间使用,隔开

  • primary_key:如果设置为True,表示该列为主键,如果指定一个字段为逐渐,则此数据表不会创建id字段。

  • blank:设置为True时,字段可以为空。设置为False时,字段是必须填写的。

  • null:如果设置True,表示该列值允许为空。默认为False,如果此选项为False,建议加入default选项来设置默认值。

  • default:设置所在列的默认值,如果字段选项null=False,建议添加此项。

  • db_index:如果设置为True,表示为该列增加索引。

  • unique:如果设置为True,表示该字段在数据库中的值必须是唯一(不能重复出现)。

  • db_column:指定列的名称,如果不指定的话则采用属性名作为列名。

  • verbose_name:设置此字段在admin界面上的显示名称

3.5. 字段选项样例


创建一个属性,表示用户长度,长度30个字符,必须是唯一的,不能为空,添加索引

name = models.CharField(max_length=30, unique=True, null=False, db_index=True)

官方文档:

https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-options

3.6. 注意


修改过字段选项、添加或更改均要执行makemigrations和migrate

3.7. Meta类


使用内部Meta类,来给模型赋予属性,Meta类下面有很多内建的类属性,可以对模型类做一些控制:

示例:

file : bookstore/models.py

from django.db import modele

class Book(models.Model):

title = models.CharField(“书名”, max_length=50, default=‘’)

price = models.DecimalField(“定价”, max_digits=7, decimal_places=2, default=0.0)

info = models.CharField(“信息”, max_length=100, default=‘’)

class Meta:

db_table = ‘book’ # 可改变当前模型类对应的表名

迁移后:

在这里插入图片描述

表名变成了book

在这里插入图片描述

练习:

在这里插入图片描述

class Book(models.Model):

title = models.CharField(“书名”, max_length=50, default=‘’, unique=True)

pub = models.CharField(“出版社”, max_length=100, default=‘’, null=False)

price = models.DecimalField(“价格”, max_digits=7, decimal_places

### 华为OD机试2024 E卷 Python真题及答案解析 #### 题目一:最优结果的a数组数量 - 贪心思维 此题目涉及贪心算法的应用,目的是找到满足特定条件的最大子数组数量。以下是实现该功能的一个Python代码示例: ```python def max_a_arrays(nums, target): count = 0 current_sum = 0 for num in nums: if current_sum + num <= target: current_sum += num else: count += 1 current_sum = num if current_sum != 0: count += 1 return count # 测试用例 nums = [1, 2, 3, 4, 5] target = 5 print(max_a_arrays(nums, target)) # 输出应为3 ``` 上述方法利用了贪心策略来解决这个问题[^1]。 --- #### 题目二:栈数据合并/空栈压数 这道题目考察的是栈的操作以及如何处理多个栈的数据合并问题。下面是一个可能的解决方案: ```python class StackMerger: def __init__(self): self.stack = [] def push(self, value): self.stack.append(value) def pop(self): if not self.is_empty(): return self.stack.pop() return None def merge_stacks(self, other_stack): while not other_stack.is_empty(): self.push(other_stack.pop()) def is_empty(self): return len(self.stack) == 0 # 使用示例 stack1 = StackMerger() stack2 = StackMerger() for i in range(5): stack1.push(i) for j in range(5, 10): stack2.push(j) stack1.merge_stacks(stack2) while not stack1.is_empty(): print(stack1.pop()) # 应依次打印9至0 ``` 这段代码实现了两个栈之间的数据合并操作,并保持原有的顺序[^2]。 --- #### 题目三:最佳升级时间窗 给定一组用户访问量数据,计算出最适合进行系统升级的时间窗口。具体来说,就是找出连续时间段内的最小总访问量。下面是基于滑动窗口技术的一种解法: ```python from typing import List def best_upgrade_window(visits: List[int], window_size: int) -> int: n = len(visits) min_total_visits = float('inf') current_total = sum(visits[:window_size]) for i in range(window_size, n): current_total = current_total - visits[i-window_size] + visits[i] if current_total < min_total_visits: min_total_visits = current_total return min_total_visits # 示例输入 visits = [random.randint(0, pow(2, 31)-1) for _ in range(7 * 24)] window_size = 8 result = best_upgrade_window(visits, window_size) print(result) # 打印结果 ``` 这里采用了滑动窗口的方法优化求解过程,从而降低复杂度并提高效率[^3]。 --- ### 注意事项 对于非目标院校的学生而言,虽然机会较小,但如果能够取得较高的机考成绩,则仍然有可能获得面试资格。因此建议尽可能多地练习历年真题以提升自己的竞争力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值