Найти - Пользователи
Полная версия: Если ответ выпадает в диапазоне, то выводить один ответ с помощью списка или словоря?
Начало » Python для новичков » Если ответ выпадает в диапазоне, то выводить один ответ с помощью списка или словоря?
1
Informatikum
Пользователь вводит значение в диапазонге 1-12, программа выдает название сезона.

months = 13
while months:
	print('Enter the numonthsber of months (To exit, enter "0"): ')
	months = int(input())
	if (months == 12 or months == 1 or months == 2):
		print('Winter')
	elif (months == 3 or months == 4 or months == 5):
		print('Spring')
	elif (months == 6 or months == 7 or months == 8):
		print('Summer')
	elif (months == 9 or months == 10 or months == 11):
		print('Autumn')
	else:
		print('To exit, enter "0"')
		

Можно ли тоже самое решить с помощью списка или словоря?
Что-то вроде:
m = {[1,2,3] : "a", 2 : "b"}
Если при выборе первый элемент попадает в диапазон, то выдается один ответ.
bismigalis
season_name = ['Winter', 'Spring', 'Summer', 'Autumn']
season_index = [0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 0]
season_name[season_index[num - 1]]
Singularity
http://habrahabr.ru/post/43731/
Informatikum
month = {12 : 'Winter', 1 : 'Winter', 2 : 'Winter',
	3 : 'Spring', 4 : 'Spring', 5 : 'Summer',
	6 : 'Summer', 7 : 'Summer', 8 : 'Summer',
	9 : 'Autumn', 10 : 'Autumn', 11 : 'Autumn'}
i = 13
while i:
	i = int(input())
	
	if ((i > 0) and (i < 13)):
		print(month[i])
	elif (i > 12):
		print('Такого месяца не существует. Для выхода из программы введите "0".')
	else:
		print('Программа завершена.')

Написал с использованием словоря. Возмно ли наоборот сделать. Чтобы в словаре указывал один раз только сезон, без повторов, а цифровое обозначение указать в диапазоне списком.
Informatikum
Singularity, спасибо!
Singularity
Что-то я туплю. Так проще же
m = 1 
print ["Зима", "Весна", "Лето", "Осень"][(m % 12) // 3]
Informatikum
Singularity, пошутил чотко! Однако работает. Вариант на хабре пока не удалось завести.

bismigalis, спасибо за пример.

Питон удивляет каждый день. Читаю Лутца, но пока вот о таких выкрутасах даже подумать не мог…
Singularity
Informatikum
так вроде ж работает. Или нет ?
Informatikum
Singularity, шайтан штука, работает
Конструкции разобрал. Без вас бы о таком чуде и не узнал бы…

С хабра правда пример пока не осилил. В целом, меня предыдущие варианты устраивают.
Master_Sergius
Как вариант под первое ваше пожелание, но хз красиво ли очень:

seasons = {(12, 1, 2):'winter', (3,4,5):'spring', (6,7,8):'summer', (9,10,11):'autumn'}
i = 3
for keys in seasons:
   if i in keys:
       print seasons[keys]
       break

Ну и это выведет - spring. Возможно, как-то можно улучшить. По крайней мере, 100% подходит под любое схожее задание, где просто так остатком от деления не получишь нужного результата )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB