请告诉我。假设有两台计算机:PC1 (192.168.6.1/24) 和 PC2 (10.168.9.2/24)。需要做什么才能使它们使用主机文件中预定义的主机名相互 ping 通。为了进行实验,我拿了两台计算机,为以太网适配器分配相同的IP地址,用电线连接以太网适配器,但它没有响应。需要做什么或在哪里挖掘?
pynista's questions
有包含门票主题作为第一行的文件。
接下来是门票。
我想获取每张票的内容,包括票号。
import re
from typing import List
content = """\
Тема: Бла Бла Бла
Билет №1
1. валдывлдывладвылавыл
2. ldekldkldkldkld dkfdk
3. dkjkdjksdjdsjfdsj
Билет №2
1. вwdsалдывлдывладвылавыл
2. asdladekldkldkldkld dkfdk
3. dkjkdjksdjdsjfdsj
4. ldekldkldkldkld dkfdk
Билет №3
1. sadвwdsалд ывлдывлад вылавыл
2. asdsd ladekldkldkldkld dkfdk
3. asddkjkdjk sdjdsjfdsj
4. s ldekldkldksaldkld dkfdk
5. edk jkdjksdjdsjfdsj
Билет №4
1. sdsadвwdsалд ывлдывлад вылавыл
2. Dasdsd ladekldkldkldkld dkfdk
"""
def quiz(s) -> List[str]:
regexp = re.compile(r'Билет №\d{1,3}')
return regexp.split(s)[1:]
for item in quiz(content):
print(item, end='---')
结果:
1. valdyvldyvladvyval 2.ldekldkldkldklddkfdk 3. dkjkdjksdjdsjfdsj --- 1. wdsaldyvldyvladvyval 2.asdladekldkldkldklddkfdk 3. dkjkdjksdjdsjfdsj 4.ldekldkldkldklddkfdk --- 1. sadvdsald ivldyvlad 抓获 2. asdsd ladekldkldkldkld dkfdk 3. asddkjkdjk sdjdsjfdsj 4.sldekldkldksaldklddkfdk 5. edk jkdjksdjdsjfdsj --- 1. sdsadvwdsald ivldyvlad 抓到 2. Dasdsdladekldkldkldklddkfdk ---
我想用票号获取信息,例如:
票号 3 1. sadvdsald ivldyvlad 抓获 2. asdsd ladekldkldkldkld dkfdk 3. asddkjkdjk sdjdsjfdsj 4.sldekldkldksaldklddkfdk 5. edk jkdjksdjdsjfdsj
如何使用正则表达式来实现这一点?
有这样的行:
“M{A}{B}{C}”,其中
A-数字
B-空间;可能不存在(如果 C 不存在)
C- 括号中的字符串(即形式为“(text_inside_brackets)”)
什么正则表达式可以得到 A 部分和 C 部分括号内的文本?
例子:
| 字符串 | 结果 | |---------------------------------|--------- ------ -----------------| | 《M01 (BlaBlaBla)》 | ('01', 'BlaBlaBla') | | 《M205 (BlaBlaBla blablablaa)》 | ('205', 'BlaBlaBla blablablaa') | | “M10” | ('10', '') | | “M190(括号内的文本)” | ('190', '括号内的文字') |
我使用正则表达式r'^M(\d+).*\((.*)\)'
,但如果缺少 C 部分并且您必须进行额外检查,则此表达式不起作用
如何从值为 的字典中删除元素None
?从 json 字符串中检索字典。
源字典可能包含嵌套字典,您需要再次从中删除值为 的元素None
。在嵌套字典中,您可能需要对一些字典进行同样的操作。等等。
例子。假设我们有以下字典:
{
"chat_id":234,
"disable_notification": None,
"disable_web_page_preview": None,
"parse_mode": None,
"reply_markup":{
"inline_keyboard":[
[
{
"callback_data": None,
"callback_game": None,
"pay": None,
"switch_inline_query": None,
"switch_inline_query_current_chat": None,
"text":"add",
"url": None
},
{
"callback_data": None,
"callback_game": None,
"pay": None,
"switch_inline_query": None,
"switch_inline_query_current_chat": None,
"text":"sub",
"url": None
}
]
]
},
"reply_to_message_id": None,
"text":"45456546"
}
结果应该是以下字典:
{
"chat_id":234,
"reply_markup": {
"inline_keyboard":[
[
{
"text":"add",
},
{
"text":"sub",
}
]
]
},
"text":"45456546"
}
我无法理解打字模块中的NewType()函数是做什么用的。
在文档中:
使用 NewType() 辅助函数创建不同的类型:
UserId = NewType('UserId', int) some_id = UserId(524313)
静态类型检查器会将新类型视为原始类型的子类。这对于帮助捕获逻辑错误很有用:
def get_user_name(user_id: UserId) -> str: ... # typechecks user_a = get_user_name(UserId(42351)) # does not typecheck; an int is not a UserId user_b = get_user_name(-1) ```
在PEP 484中:
在某些情况下,程序员可能希望通过创建简单的类来避免逻辑错误。例如:
class UserId(int): pass get_by_user_id(user_id: UserId): ...
你指的是什么逻辑谬误?创建附加类型UserId
并使用它而不是有什么好处int
?
我有一个包含数字列表的列表。每个内部列表的长度为 4。例如:
list_with_ids = [[123, 234, 345, 456], [678, 890, 901, 1001], [2000, 3000, 4000, 5000],]
如何使生成器从内部列表中提供数字,如下所示:
123->234->678->890->2000->3000->345->456->901->1001->4000->5000
那些。首先,依次给出索引为 0 和 1 的内部列表中的数字,然后,当它们用完时,索引为 2 和 3 的数字也同样给出?
编码
class CitiesManager(object):
"""Класс, содержащий функциональность работы с городами."""
def __init__(self, cities):
self.cities = cities
def __getitem__(self, item: int):
"""Получить элемент по индексу.
Args:
item (int): индекс элемента для получения в операциях среза.
"""
return self.cities[item]
def __len__(self):
return len(self.cities)
def __iter__(self):
"""Возвратить себя как объект итератора."""
return self
def __next__(self):
"""Получить следующий элемент """
for item in self.cities:
yield item
cities = ['Петрозаводск', 'Хельсинки', 'Санкт-Петербург']
north_cities = CitiesManager(cities)
for city in north_cities:
print(city)
输出如下内容:
<generator object __next__ at 0x7f13de432d58>
<generator object __next__ at 0x7f13de432c50>
<generator object __next__ at 0x7f13de432d58>
<generator object __next__ at 0x7f13de432c50>
<generator object __next__ at 0x7f13de432d58>
为什么?我希望它显示字符串“Petrozavodsk”、“Helsinki”、“St. Petersburg”
我有一个清单[элемент_1, элемент_2, .... элемент_N]
。
如何从原始列表中获取由多个列表组成的列表,这些列表包含原始列表的元素和预定数量的元素?
那些。[элемент_1, элемент_2, .... элемент_N] -> [[элемент_1, элемент_2, .... элемент_K], [элемент_K+1, элемент_K+2, .... элемент_M], [элемент_M+1, элемент_M+2, элемент_N],]
.
例如,如果有一个包含 86 个元素的初始列表,则您需要获取一个包含例如 4 个 20 个元素的列表和一个包含 6 个元素(其余部分)的列表。
该目录包含散布着其他文件的图像文件。图像文件名是数字(例如234.jpg
, 3456.jpeg
, 111111.png
, 4.bmp
)。
jpg
我收到 带有如下扩展名的文件:
image_files = glob.glob(''.join([dir, '/', '[0-9]*.jpg']))
如何扩展此代码以获取带有扩展名的文件png, jpeg, bmp, jpg
?
为什么此查询会引发错误(#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'of France' AND Countries 附近使用的正确语法。name = 'France' ) AND(第 1 行的 Landmarks .top_c'):
SELECT
*
FROM
Landmarks
INNER JOIN
Localities
ON Landmarks.locality_id = Localities.locality_id
INNER JOIN
Regions
ON Localities.region_id = Regions.region_id
INNER JOIN
Countries
ON Regions.country_id = Countries.country_id
WHERE
(
Localities.name = ‘Normandy’
AND Regions.name = ‘North of France’
AND Countries.name = ‘France’
)
AND
(
Landmarks.top_choice = 1
OR Landmarks.history = 1
OR Landmarks.military = 1
)
AND
( Landmarks.car = 1 )
和完全相同的代码,但格式化,不会抛出错误:
SELECT
*
FROM
Landmarks
INNER JOIN
Localities
ON Landmarks.locality_id = Localities.locality_id
INNER JOIN
Regions
ON Localities.region_id = Regions.region_id
INNER JOIN
Countries
ON Regions.country_id = Countries.country_id
WHERE
(
Localities.name = 'Normandy'
AND Regions.name = 'North of France'
AND Countries.name = 'France'
)
AND
(
Landmarks.top_choice = 1
OR Landmarks.history = 1
OR Landmarks.military = 1
)
AND
(
Landmarks.car = 1
)
?
假设我们有一个数字数组,如下所示:
(2, 1, 4, 1, 3, 5, 6, 1, 2, 6, 3)
帮助我编写一个函数,它将以满足以下条件的方式选择输入数组的 3 个(或更少)元素):
- 结果组的元素之和(例如,以数组的形式)不应超过 6。
- 当您可以选择两个元素时,您不能选择一个元素;当您可以选择三个项目时,您不能选择两个项目。但是,您必须从具有最高优先级(即具有较低索引)的元素开始
- 在原始数组中,具有较低索引的元素优先于具有较高索引的元素。那些。$input[0] 比 $input[1] 更重要。优先级,我的意思是它们更优先放置在结果数组中。
示例 1
入口:
(1, 7, 4, 2, 3, 1, 6, 1, 2, 6, 3)
1-的优先级最高,1小于6,直接拿走。我们不取 7,因为 1 + 7 > 6。下一个元素是 4,我们取它,因为 1 + 4 = 5 < 6。我们不取元素 2,因为 5 + 2 = 7 > 6。同样,我们不要取 3。结果,我们得到 (1, 4, 1)
出口:
(1, 4, 1)
示例 2
入口:
(2, 1, 4, 1, 3, 5, 6, 1, 2, 6, 3);
出口:
(2, 1, 1)
示例 3
入口:
(3, 4, 5, 2, 3, 1, 6, 1, 2, 6, 3);
出口:
(3, 2, 1)
例 4
入口:
(7, 4, 5, 2, 3, 1, 6, 1, 2, 6, 3);
出口:
(4, 2)
例 5
入口:
(7, 6, 1, 2, 3, 1, 6, 1, 2, 6, 3);
出口:
(6)
最多结果是“表”。语言不重要(思想重要),PHP更好。
.mor {
font-size: 2em;
}
<p>
Л
<span class="mor">а</span>
в
<span class="mor">а</span>
н
<span class="mor">д</span>
а
</p>
我知道这可以通过伪类来完成。如何?
# ... 类 PersonAdvertWizard(SessionWizardView): def date_now_to_path(自我): 返回 datetime.datetime.now().strftime('%Y/%m/%d') file_storage = 文件系统存储( location=os.path.join(settings.MEDIA_ROOT, '相片', date_now_to_path())) # ...
我想确保用户上传的图像存储在视图目录中.../photos/Год/Месяц/День
。
该位置是使用file_storage
从 class 继承的 class的字段确定的SessionWizardView
。
如何确保每次创建类对象时,每次都以新的方式计算类PersonAdvertWizard
字段file_storage
,而不使用导入模块时计算的值?
导入时间 lst = [-3, 3, 7, 0, -10, 23, -9, -8, -5, -10, 9, 3, -2, 8, -3, 6, -1, 0, 10, -1, -6, -6, 10, -7, 3, 8, 0, 7, 1, 5, -3, -6, 4, 6, -6, -4, -3, 10, 10, -5, -7, 0, -4, -8, 2, 9, 0, -10, -3, 3, -4, 9, -7, -8, 0, -1, 1, 7, 2, -1, 3, 0, 9, -9, 4, 7, 6, 10, 8, -6, 3, 1, 1, 9, -8, -8, 2, 4, 10, 1, 5, -1, -1, 5, -9, 9, -3, 3, 0, -6, 2, 5, 10, 10, 5, -6, -10, -2, -9, '字符串'] start1 = time.clock() a = all(isinstance(item, (int, float, complex)) for item in lst) finish1 = 时间.时钟() print("结果: {}, 时间:{:.2}ms".format(a, (finish1 - start1) * 1000)) start2 = time.clock() def is_numbers(可迭代): 对于可迭代的项目: 如果不是 isinstance(item, (int, float, complex)): 返回假 返回真 b = is_numbers(lst) finish2 = 时间.时钟() print("结果: {}, 时间:{:.2}ms".format(b, (finish2 - start2) * 1000))
结果:
>>> ====== 重启:/home/dzmitry/adasdsadasdasdsad.py ====== 结果:假,时间:0.081ms 结果:假,时间:0.042ms >>> ====== 重启:/home/dzmitry/adasdsadasdasdsad.py ====== 结果:假,时间:0.085ms 结果:假,时间:0.043ms >>>
all() 函数等效于:
全部定义(可迭代): 对于可迭代的元素: 如果不是元素: 返回假 返回真
事实证明,第一种和第二种方法是等效的,除了使用生成器表达式。为什么第一种方法慢 1.5-2 倍?
我想创建一个包含例如二十个元素的列表。每个元素必须是 -10 到 10 之间的任意整数。
from random import randint
numbers = []
for i in range(20):
numbers.append(randint(-10, 10))
或者像这样:
from random import randint
lst = [randint(-10, 10) for i in range(20)]
如何做同样的事情,只有在一行中(导入除外)(例如,使用列表包含、生成器表达式、函数中的一些函数、函数map()
中zip()
的函数itertools
)并且没有中间变量i
?
def is_numbers(iterable):
"""Проверить все ли элементы в iterable есть числа."""
if iterable:
return all(map(lambda x: isinstance(x, (int, float, complex)), iterable))
else:
return False
如果我们只传递一个数字,则会抛出 TypeError 异常:
>>> is_numbers(131)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
is_numbers(131)
File "/home/dzmitry/iterchk.py", line 23, in is_numbers
return all(map(lambda x: isinstance(x, (int, float, complex)), iterable))
TypeError: 'int' object is not iterable
>>>
但是如果我们传递 None,那么函数返回 False:
>>> is_numbers(None)
False
>>>
为什么会这样?
毕竟, None 似乎也不可迭代: https ://stackoverflow.com/questions/1952464/in-python-how-do-i-determine-if-an-object-is-iterable
try:
none_iterator = iter(None)
except TypeError:
print(None, 'is not iterable')
None is not iterable
>>>
在 Python 中,谁必须检查传递给函数或方法的参数类型是否正确:
确保传递的参数类型正确是程序员的责任。该函数不会在第一步中显式检查传递的参数,而只是简单地使用它,就好像它是可靠有效的类型一样。在工作过程中,函数可以独立生成,也可以显式生成各种异常,这将指示参数不正确。这个异常将在文档字符串中描述
该函数在第一阶段显式检查传递参数的类型,并在出现错误时抛出异常,例如 TypeError。
- 别的东西
?
例如,如果我们传递给一个函数(例如)不是一个可迭代的,而是一个整数或实数,那么就会产生一个 TypeError 异常(因为 int 和 float 是不可迭代的)。但是你可以在一开始就明确地检查,例如,传递的参数是一个可迭代的对象并生成一些东西。
def is_positive_or_zero_values(可迭代): """检查iterable中的所有元素是否都是大于或等于零的数字。 参数: iterable:包含要测试的值的可迭代对象。 回报: bool:如果可迭代对象中的所有元素都是等于或大于零的数字,则为真。 否则为假。 """ 如果可迭代: 如果是_numbers(可迭代): 返回所有(地图(lambda x:x> = 0,可迭代)) 别的: 返回假 别的: 返回假
该表foods
包含一个字段food_names
,其中列出了以空格分隔的产品名称的同义词,例如:beer пиво пивко пивасик
,并且可以有一个或多个同义词。
我想选择表中的所有行,这些行的字段food_names
至少包含查询中使用的一个词。那些。我想提出这样的请求
SELECT * FROM foods WHERE food_names LIKE '%beer%'结果是:
>>> 导入 sqlite3 >>> conn = sqlite3.connect("foods.db") >>> c = conn.cursor() >>> c.execute("SELECT * FROM foods WHERE food_names LIKE '%?%'", ("beer",)) 追溯(最近一次通话): 文件“”,第 1 行,位于 c.execute("SELECT * FROM foods WHERE food_names LIKE '%?%'", ("beer",)) sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 0,并且提供了 1。 >>>
需要修复什么?
我想将三个词典作为对象数组一个一个地保存到一个json文件中。
导入 json milk = {'产品':'牛奶', '卡路里':100, } 面包= {'产品':'面包', '卡路里':200, } fish = {'产品':'鱼', '卡路里':300, } def add_food_to_database(食物): path = '/home/dzmitry/foods.json' 打开(路径,'r+')作为 jsonfile: 如果不是 jsonfile.read(): 数据 = [] 数据追加(食物) json.dump(数据,jsonfile) 别的: jsonfile.seek(0) 数据 = json.load(jsonfile) 数据追加(食物) json.dump(数据,jsonfile) print("添加的产品:", food['Product']) 食物 =(牛奶、面包、鱼) [add_food_to_database(food) for foods in foods]
但是,由于某种原因,只添加了两个产品。
=========== 重启:/home/dzmitry/forstack.py =========== 添加的产品:牛奶 添加的产品:面包 追溯(最近一次通话): 文件“/home/dzmitry/forstack.py”,第 28 行,位于 [add_food_to_database(food) for foods in foods] 文件“/home/dzmitry/forstack.py”,第 28 行,位于 [add_food_to_database(food) for foods in foods] 文件“/home/dzmitry/forstack.py”,第 22 行,在 add_food_to_database 中 数据 = json.load(jsonfile) 加载文件“/usr/lib/python3.5/json/__init__.py”,第 268 行 parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) 加载文件“/usr/lib/python3.5/json/__init__.py”,第 319 行 返回 _default_decoder.decode(s) 文件“/usr/lib/python3.5/json/decoder.py”,第 342 行,解码 提高 JSONDecodeError(“额外数据”,s,结束) json.decoder.JSONDecodeError:额外数据:第 1 行第 140 列(字符 139) >>>
我究竟做错了什么?
dzmitry@mycomp:~$ crontab -l
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=dzmitry
*/15 * * * * play --no-show-progress --null --channels 1 synth 3 sine 2000; date >> checktime
dzmitry@mycomp:~$
3小时后的结果:
Sat Jul 30 16:30:05 MSK 2016
Sat Jul 30 16:46:36 MSK 2016
Sat Jul 30 17:00:05 MSK 2016
Sat Jul 30 17:22:31 MSK 2016
Sat Jul 30 17:30:04 MSK 2016
Sat Jul 30 17:45:09 MSK 2016
Sat Jul 30 18:00:10 MSK 2016
Sat Jul 30 18:16:34 MSK 2016
Sat Jul 30 18:30:04 MSK 2016
Sat Jul 30 18:56:45 MSK 2016
Sat Jul 30 19:05:18 MSK 2016
Sat Jul 30 19:15:38 MSK 2016
Sat Jul 30 19:30:04 MSK 2016
为什么录音不是严格每 15 分钟一次?例如runN:18:30:04,runN+1:18:56:45,相差:26(二十六)分钟