Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2011 08:28:12

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

целое число + 1 = NoneType

#!/usr/bin/python
# -*- coding: utf-8 -*-

schet = 0

def func1(schet):
schet = func2(schet)
return schet

def func2(schet):
if schet < 24:
schet +=1
print(schet)
return schet

while 1:
schet = func1(schet)
добросовестно возвращает числа от 1 до 24, после чего сообщает:
if schet < 24:
TypeError: unorderable types: NoneType() < int()
В каком месте schet становится NoneType?:rolleyes:



python3 openSUSE-43Leap

Офлайн

#2 Окт. 12, 2011 09:14:36

МаксЩедров
От:
Зарегистрирован: 2011-10-11
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

целое число + 1 = NoneType

Насколько я понял, на последней иттерации условие, что schet<24 не выполняется, и оператор If возвращает None, а он в свою очередь подставляется в func1() и вызывается ошибка.

Рабочий код:

schet = 0

def func1(schet):
schet = func2(schet)
return schet

def func2(schet):
if schet < 24:
schet +=1
print(schet)
return schet

while schet<24:
schet = func1(schet)



Офлайн

#3 Окт. 12, 2011 09:21:13

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

целое число + 1 = NoneType

Спасибо, понял



python3 openSUSE-43Leap

Офлайн

#4 Окт. 12, 2011 23:29:46

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

целое число + 1 = NoneType

Правильнее исправить func2:

schet = 0

def func1(schet):
schet = func2(schet)
return schet

def func2(schet):
if schet < 24:
schet +=1
print(schet)
return schet

while True:
schet = func1(schet)



Офлайн

#5 Окт. 13, 2011 10:34:06

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

целое число + 1 = NoneType

GaiveR
while True:
schet = func1(schet)
и уходим в бесконечный цикл :)

while True:
schet = func1(schet)
if not schet:
break



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version