有两点A、B的坐标。给定线段AC的长度,是否可以找到C点的坐标,使其与AB形成直角?
有一个 csv 文件,格式如下:
наименование отдела, список файлов
Финансово-экономический отдел, файл 1.xlsx, файл1.docx, file1.txt и т.д.
отдел кадров, файл 2.xlsx, файл2.docx, file2.txt и т.д.
отдел маркетинга и планирования, файл 3.xlsx, , file3.txt и т.д.
这样的线路有很多。您需要制作一个字典,其中第一个值应该是键,其余的值应该是值。我这样做:
departments = {}
with open(dict_path, mode='r', newline='', encoding='utf-8') as file:
reader = csv.reader(file)
# Пропускаем первую строку с заголовками
next(reader)
for row in reader:
department = row[0].strip()
files = [f.strip() for f in row[1].split(', ')]
print(f"Department: {department}, Files: {files}")
if department not in departments:
departments[department] = []
departments[department].extend(files)
print(departments)
这就是我遇到问题的地方。看起来这些值应该用逗号分隔并写入字典,但实际上只写入第一个值。
有一个函数接受用户数组并返回符合过滤条件的用户名数组。告诉我如何正确输入,因为 ts 给出了错误
type TUser = [string, number, boolean][];
const users: TUser = [
["Alice", 25, true],
["Bob", 30, false],
["Charlie", 22, true],
["David", 27, true],
["Eve", 20, false],
["Fanny", 29, true],
["George", 67, true],
];
function filterAndSortUsers(arr: TUser): string[] {
let filtArr: TUser = arr.filter((item) => item[1] >= 25 && item[2] === true);
let sortedArr: TUser= filtArr.sort(function (a, b) {
return a[1] - b[1];
});
let newArr: string[] = sortedArr.map((el) => el.splice(0, 1)).flat();
return newArr;
}
错误文本:类型“(string | number | boolean)[]”无法分配给类型“string[]”。类型“string | number | boolean”不能分配给类型“string”。类型“number”不能分配给类型“string”。
在尝试reduce()从模块实现方法时functools,我遇到了对迭代器工作原理的误解。使用该方法时iter(),我们接收列表的迭代器seq并将其分配给一个变量seqIter,然后该方法next()将列表的第一个元素传递给该变量value。
然而,当执行循环时,我们使用可迭代对象的for迭代器,而可迭代对象又是列表的迭代器。问题是,在循环的每一圈上它等于什么?xseqIterx
在这段代码中,我们看到了reduce在列表中添加数字的方法的实现:
def reduce(func, seq):
seqIter = iter(seq)
value = next(seqIter)
for x in seqIter:
value = func(value, x)
return value
list = [1,2,3]
print("Sum seq is:", reduce(lambda x,y: x+y, list))
结果:
python .\reduceImplemention.py
Sum seq is: 6
在尝试缩短代码时,出现以下结果:
def reduce(func, seq):
value = next(iter(seq))
for x in iter(seq):
value = func(value, x)
return value
list = [1,2,3]
print("Sum seq is:", reduce(lambda x,y: x+y, list))
根据字符串的解释以括号开头(如数学中一样)的规则,应该先执行表达式iter(seq),然后执行字符串的其余部分。我们还使用 方法将列表迭代器传递iter()到循环中。然而,结果变成:forseq
python .\reduceImplemention.py
Sum seq is: 7
问题可能出在循环中for,因此我们创建一个变量seqIter并为其赋值iter(seq),并在循环中将其更改为for x in seqIter。结果还是一样:
python .\reduceImplemention.py
Sum seq is: 7
因此,问题是:为什么该方法next没有在方法代码块的最开始处应用reduce?还是循环条件?
这是我的代码:
Sub GetCadastralInfo()
Dim dbPath As String
Dim cadNumber As String
Dim conn As Object
Dim rs As Object
Dim sql As String
Dim result As Variant
Dim i As Integer
On Error GoTo ErrorHandler
dbPath = "C:\my_python\Bot_aio\akt\egrn_kpt.db"
cadNumber = Trim(ActiveCell.Value) ' Удалить лишние пробелы
' Соединение
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
' Откройте соединение с базой данных
conn.Open "Driver={SQLite3 ODBC Driver};Database=" & dbPath & ";"
' SQL запрос для поиска информации по кадастровому номеру
sql = "SELECT value_by_document FROM ZY WHERE cad_n = '" & cadNumber & "';"
' Выполните запрос и получите набор записей
Set rs = conn.Execute(sql)
' Инициализация переменной строки
i = 1 ' Начинаем с первой строки
' Проверка наличия данных
If Not rs.EOF Then
While Not rs.EOF
Cells(i, 1).Value = rs.Fields(0).Value
' Если у вас есть второе поле, убедитесь, что оно существует
If rs.Fields.Count > 1 Then
Cells(i, 2).Value = rs.Fields(1).Value
End If
i = i + 1
rs.MoveNext
Wend
Else
MsgBox "Нет данных для данного кадастрового номера.", vbInformation
End If
' Закрытие набора записей и соединения
rs.Close
conn.Close
Exit Sub
ErrorHandler:
MsgBox "Ошибка: " & Err.Description, vbCritical, "Ошибка"
If Not rs Is Nothing Then
If rs.State = 1 Then rs.Close ' Закрываем, если открыто
End If
If Not conn Is Nothing Then
If conn.State = 1 Then conn.Close ' Закрываем, если открыто
End If
End Sub
由于某种原因,它不断显示:“该地籍号码没有数据。”,尽管数据库在ZY表中有一个条目(这些是土地),并且我想要value_by_document列(这是土地的 VRI,例如 - “用于运行个人附属地块”)。因此,在单元格 A1 中(例如),我输入地籍号码(例如 - “52:15:0140112:10”),然后按组合键ctrl+f8并执行此代码,它显示没有数据。SQLite ODBC 驱动程序是从网站安装的。我想编写可以访问数据库的代码。请帮忙。
