@DrPalmer

Почему проверка совпадения не проходит по всем переменным списка?

Есть 3 проверки на: имя, ос, новое имя.
Данные приходят из json файла.
В конце идет проверка по циклу, но он опирается только на один true из певой функции, и на один false из второй. Почему у меня не сработали проверки в функциях по всем переменным?

И главный вопрос...как из
if check_language(vm['name']) == True and check_os_version(vm['distribution']['description']) == True:
передать потом все прошедшие проверку в новый словарь? Хельп:(
import requests
import json
import re

def check_language(current_hostname):
	for vm in asl_vms:
		current_hostname = vm['name']
		if ['-java-' in current_hostname or '-go-' in current_hostname]:
			return True

def check_os_version(current_os):
	for vm in asl_vms:
		current_os = vm['distribution']['description']
		if re.match(r"Debian 11", vm['distribution']['description']):
			return False

def get_next_hostname(current_hostname):
	for vm in asl_vms:
		current_hostname = vm['name']
		parts = current_hostname.split('-')
		index = int(parts[2].split('.')[0])
		new_name = '{}-{}-{}.node.eu.consul'.format(parts[0], parts[1], index + 6)
	return new_name

response = requests.get('http://127.0.0.1/asl_real.json')
asl_vms = json.loads(response.text)

for vm in asl_vms:
	print(vm['name'])
print('\n', check_language('current_hostname'), '\n')

for vm in asl_vms:
	print(vm['distribution']['description'])
print('\n', check_os_version('current_os'), '\n')

print('\n', get_next_hostname('hostname'),'\n')

for vm in asl_vms:
	if check_language(vm['name']) == True and check_os_version(vm['distribution']['description']) == True:
		print('ok, its True')
	else:
		print('ok, its not True')


welcome-php-2.node.eu.consul
tgbot-go-1.node.eu.consul
aff-java-1337.node.eu.consul

 True 

Debian 11.3 x64
Debian 10.1 x64
Debian 11.1 x64

 False 

 aff-java-1343.node.eu.consul 

ok, its not True
ok, its not True
ok, its not True
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Функции с проверками сделаны как-то странно, аргумент, передаваемый в них, вообще не используется. И каждый раз внутри функции работа идет со всеми элементами списка
check_language(123)
Все равно вернет True

Наверное, подразумевалось нечто такое:
def check_language(current_hostname):
    return '-java-' in current_hostname or '-go-' in current_hostname

def check_os_version(current_os):
    return 'Debian 11' in current os
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы