Найти - Пользователи
Полная версия: Новечку нужна помощь, пара лёгких задачек))
Начало » Центр помощи » Новечку нужна помощь, пара лёгких задачек))
1 2 3
gnombdsm
1. Дан номер месяца (1 — январь, 2 — февраль, …). Вывести название соответствующего времени года (“winter”, “spring”, “autumn”, “summer”)

2. Дан одномерный массив числовых значений, насчитывающий N элементов. Поменять местами элементы, стоящие на чётных и нечётных местах: А(1) с А(2), А (3) с А(4)
sp3
>>> a = range(20)
>>>
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> for x in xrange(0,len(a),2):
... a[x],a[x+1] = a[x+1],a[x]
...
>>> a
[1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18]
>>>
остальное сам
gnombdsm
Спасибо sp3! На счёт первой разобрался))
gnombdsm
та же задача, только чтобы массив вводился с клавиатуры, как это сделать??
igor.kaist
gnombdsm? использовать input или raw_input
gnombdsm
это в принципе не важно
FishHook
sp3
>>> a = range(20)
>>>
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> for x in xrange(0,len(a),2):
... a[x],a[x+1] = a[x+1],a[x]
...
>>> a
[1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18]
>>>
остальное сам
Этот код даст ошибку при нечетной длине списка
>>> a=range(21)
>>> for x in xrange(0, len(a),2):
	a[x],a[x+1]=a[x+1],a[x]
Traceback (most recent call last):
  File "<pyshell#3>", line 2, in <module>
    a[x],a[x+1]=a[x+1],a[x]
IndexError: list index out of range
>>> 
Предлагаю несколько модифицировать
>>> a,result=range(21),[]
>>> for x in map(None,a[1::2],a[::2]):
	if x[0]: result+=x
	else: result.append(x[1])
	
>>> result
[1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18, 20]
FishHook
seasons=['winter','spring','summer','autumn']
num_months=range(1,13)
num_months.insert(0,num_months.pop(-1))
for i in range(1,13):
	print  i,'-->', seasons[num_months.index(i)/3]
1 --> winter
2 --> winter
3 --> spring
4 --> spring
5 --> spring
6 --> summer
7 --> summer
8 --> summer
9 --> autumn
10 --> autumn
11 --> autumn
12 --> winter
alekzp
FishHook
Предлагаю несколько модифицировать
>>> a,result=range(21),[]
>>> for x in map(None,a[1::2],a[::2]):
	if x[0]: result+=x
	else: result.append(x[1])
	
>>> result
[1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18, 20]

Такой вариант не работает на Python3.
for x in map(None,a[1::2],a[::2]):
TypeError: 'NoneType' object is not callable
Предлагаю просто проверять элемент на чётность:

line,result = range(22),[]
for x in line:
	if x % 2 == 0: result.append(x+1)
	else: result.append(x-1)
print(result)	

Но, чую, есть решение, которое, так сказать, более “pythonic”
fata1ex
>>> a = [1,2,3,4,5]
>>> b = [6,7,8,9,10]
>>> map(None, a, b)
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
>>> zip(a, b)
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
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