Сравнение переменной с данными из массива
Не могу понять, какие условия необходимо выполнить для сравнения переменной с данными из массива.
Ниже простенькая игра, в конце кода которой для сохранения правописания при выводе количества ходов необходимо вывести (шаг/шага/шагов). Что сделал не так?
from random import randint
zag = randint(1, 100)
a = 1
print("Угадай число от 1 до 100")
while (zag >= 0 and zag<= 100):
print('шаг', a)
otv = int(input("Ваш вариант?: "))
a = a+1
if (otv < zag):
print(" Больше!")
elif (otv > zag):
print(" Меньше!")
else:
break
c = [1, 21, 31, 41, 51, 61, 71, 81, 91]
d = [2,3,4,22,23,24,25,32,33,34,42,43,44,52,53,54,62,63,64,72,73,74,82,83,84,92,93,94]
if (a == c):
b = ('шаг')
elif (a == d):
b = ('шага')
else:
b = ('шагов')
print("Угадал! За", a, b)
Ответы (2 шт):
Автор решения: Илья
→ Ссылка
Если вы тоже не знаете и ищете ответ, то вот ниже исправленный код:
from random import randint
zag = randint(1, 100)
a = 0
print (zag)
print("Угадай число от 1 до 100")
while (zag >= 0 and zag<= 100):
print('шаг', a+1)
otv = int(input("Ваш вариант?: "))
a = a+1
if (otv < zag):
print(" Больше!")
elif (otv > zag):
print(" Меньше!")
else:
break
c = [1, 21, 31, 41, 51, 61, 71, 81, 91]
d = [2,3,4,22,23,24,25,32,33,34,42,43,44,52,53,54,62,63,64,72,73,74,82,83,84,92,93,94]
if a in c:
b = ('шаг')
elif a in d:
b = ('шага')
else:
b = ('шагов')
print("Угадал! За", a, b)
Автор решения: MBo
→ Ссылка
Вхождение в список можно проверить с помощью in, но все натуральные числа так не перечислить, поэтому для произвольного диапазона лучше сделать так:
def sklon(n, s1, s2, s5):
if ((n%100)//10==1): #...10..19
return s5
n10 = (n+9)%10 #объединяем 0 с диапазоном 5..9
if n10==0:
return s1
elif n10<4:
return s2
else:
return s5
for i in range(30):
print(i, sklon(i, "шаг", "шага", "шагов"))