В настоящее время я работаю над встроенным проектом. В моем проекте я хочу сравнить два значения.
Первое значение представляет собой целое число (0), а второе - ввод на клавиатуре (и оно также должно быть целым числом).
Всякий раз, когда я пытаюсь запустить код, он показывает:
{TypeError: unorderable types: int() < str()}
Как преодолеть этот TypeError?
Код:
import sys
import time
import RPi.GPIO as gpio
import collections
c = collections.Counter()
c=0
required_position=0
current_position=0
pulse_generated=0
req=0
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
gpio.setup(23,gpio.OUT)
gpio.setup(24,gpio.OUT)
gpio.setup(9,gpio.OUT)
gpio.setup(10,gpio.OUT)
gpio.setup(13,gpio.OUT)
gpio.setup(19,gpio.OUT)
mode_1=(8,10,15)
gpio.setup(mode_1,gpio.OUT)
mode_1=(17,27,22)
gpio.setup(mode_1,gpio.OUT)
resolution={
'1':(0,0,0),
'1/2':(1,0,0),
'1/4':(0,1,0),
'1/8':(1,1,0),
'1/16':(0,0,1),
'1/32':(1,0,1),
}
def current_position_calculation():
global required_position
global current_position
global pulse_generated
current_position=pulse_generated*6
def required_distance():
global required_position
global current_position
global pulse_generated
print('position of stepper motor are'
'z for homeposition(0 deg)',
'a for 10 degree',
'b for 20 degree',
'd for 30 degree',
'e for 40 degree',
'f for 50 degree',
'g for 60 degree',)
req=input("choose your required position")
required_position=req
if required_position==current_position:
gpio.output(23,True)
while current_position!=required_position:
gpio.output(24,True)
time.sleep(t)
gpio.output(24,False)
time.sleep(t)
current_position+=1
c+=1
elif current_position<required_position:
gpio.output(23,False)
while current_position>required_position:
gpio.output(24,True)
time.sleep(t)
gpio.output(24,False)
time.sleep(t)
current_position-=1
c-=1
def previous_position():
global required_position
global current_position
global pulse_generated
if current_position>required_position:
pulse_generated=required_position-currentposition
elif current_position<required_position:
pulse_generated=currentposition-required_position
while True:
current_position_calculation()
required_distance()
previous_position()
вот мой полный код с инициализацией.
Mcve моего кода
import sys
import time
a=0
b=input("enter the value ")
if a<b:
a+=1
print(a)
else:
a-=1
print(a)
ошибка:
enter the value a
Traceback (most recent call last):
File "/home/pi/mcve.py", line 7, in <module>
if a<b:
TypeError: unorderable types: int() < str()
>>>
для ввода целочисленного значения:
enter the value 0
Traceback (most recent call last):
File "/home/pi/mcve.py", line 7, in <module>
if a<b:
TypeError: unorderable types: int() < str()
>>>
Я получаю TypeError: '<' not supported between instances of 'int' and 'str'
и только с Python 3.7.0, а не с Python 2.7.15.
Однако эту ошибку я могу исправить с помощью
if a<int(b):
вместо
if a<b:
Возможно, ваша ошибка (которую я не могу воспроизвести) также исправлена.
Вы должны искать кастинг в python.
Любой тип преобразования типа данных будет находиться под заголовком "casting", и вы можете легко найти примеры.
gpio()
любой не связанный код, например,gpio()
.elif
. Будьте осторожны с не-кодом, например, «спасибо, ребята!».