Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает код на питоне

Moo Lina Ученик (75), на голосовании 3 месяца назад
В чём ошибка, как исправить?
for N in range (1000, 10000):
n = list(map(int, str(N)))
g1 = int(n[0]) + int(n[1])
g2 = int(n[1]) + int(n[2])
g3 = int(n[2]) + int(n[3])
if g1 < g2 and g1 < g3 and g2 < g3:
del(g1)
w = int(str(g2) + str(g3))
elif g1 < g2 and g1 < g3 and g3 < g2:
del(g1)
w = int(str(g3) + str(g2))
elif g2 < g1 and g2 < g3 and g1 < g3:
del(g2)
w = int(str(g1) + str(g3))
elif g2 < g1 and g2 < g3 and g3 < g1:
del(g2)
w = int(str(g3) + str(g1))
elif g3 < g1 and g3 < g2 and g2 < g1:
del(g3)
w = int(str(g2) + str(g1))
elif g3 < g1 and g3 < g2 and g2 < g1:
del(g3)
w = int(str(g1) + str(g2))
else:
print ("ha")
if w == 1315:
print (N, w)
Выводит единственное «ha» и...
ha
Traceback (most recent call last):
File "блабла", line 26, in <module>
if w == 1315:
NameError: name 'w' is not defined


Process exited - Return Code: 1
Press Enter to exit terminal
Второе условие (if w == 1315:
print (N, w)) было записано в первом, как «elif», но ничего всё равно не рвботалр
Голосование за лучший ответ
Алексей Белянин Гуру (2968) 4 месяца назад
так у тебя переменная w не определена если "ha" выводит
3681 Просветленный (20681) 4 месяца назад
Весь код внутри цикла for и условий if/elif должен быть с отступом.
Переменная w определяется только внутри условий if/elif, но не в else. Поэтому когда выполняется else, w остается неопределенной.
Последнее условие if w == 1315 должно быть внутри цикла for с правильным отступом.
 for N in range(1000, 10000): 
n = list(map(int, str(N)))
g1 = int(n[0]) + int(n[1])
g2 = int(n[1]) + int(n[2])
g3 = int(n[2]) + int(n[3])

if g1 < g2 and g1 < g3 and g2 < g3:
del(g1)
w = int(str(g2) + str(g3))
elif g1 < g2 and g1 < g3 and g3 < g2:
del(g1)
w = int(str(g3) + str(g2))
elif g2 < g1 and g2 < g3 and g1 < g3:
del(g2)
w = int(str(g1) + str(g3))
elif g2 < g1 and g2 < g3 and g3 < g1:
del(g2)
w = int(str(g3) + str(g1))
elif g3 < g1 and g3 < g2 and g2 < g1:
del(g3)
w = int(str(g2) + str(g1))
elif g3 < g1 and g3 < g2 and g1 < g2:
del(g3)
w = int(str(g1) + str(g2))
else:
print("ha")
w = 0

if w == 1315:
print(N, w)
Moo LinaУченик (75) 4 месяца назад
У меня соблюдены все отступы. Переменная не находится в else, а в новом условии

Скриншот вышел пиксельным, поэтому в вопрос я вставила скопиррванный текст, который отправила через тг, всвязи с чем пробелы не остальсь

Если будет проще определить ошибку в скриншоте, то вот:
Moo Lina Ученик (75) И я писала в конце, что создавала строку if w == 1315: print (N, w), как elif, записала её перед else, ошиька та же высвечивается
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (262381) 4 месяца назад
 def choose_w(g1, g2, g3): 
min_g = min(g1, g2, g3)
max_g = max(g1, g2, g3)
middle_g = g1 + g2 + g3 - min_g - max_g
return int(str(middle_g) + str(max_g))

for N in range(1000, 10000):
n = list(map(int, str(N)))
g1 = n[0] + n[1]
g2 = n[1] + n[2]
g3 = n[2] + n[3]

w = choose_w(g1, g2, g3)

if w == 1315:
print(N, w)
Похожие вопросы