Я все еще новичок в программировании и разрабатываю простые программы для автоматизации рутинной офисной работы.
У меня написан самый простой код, но всякий раз, когда я пытаюсь добавить цикл while, он ломает код и приводит к закрытию программы после того, как я ввожу значение для Y. Текст для печати после ввода значения Y никогда не появляется. У меня есть мой код, указанный ниже.
Все работает нормально, пока я не попытаюсь бросить его в цикл while, после чего он перестает работать. Есть ли что-то, что мне здесь не хватает?
Убираем цикл while и все снова работает
import os
import subprocess
import time
import pyautogui
x=15
y=10
while x != 333:
print("test")
print("15 - 10 is",x-y)
print("Okay now tell me what X should be")
x = input("Enter a numerical value for X: ")
print("Excellent! Now let's do Y")
y = input("Enter a numerical value for Y: ")
print("Okay now let's compare X and Y")
#don't forget to indent!
if x > y:
print("X is greater than Y!")
elif y > x:
print("Y is greater than X!")
else:
print("X is equal to Y!")
print(x, y)
time.sleep(2)
input("Press Enter to continue...")
Вероятно, он бросает трассировку. Если вы используете выделенную среду IDE, посмотрите в окно консоли и посмотрите, что она выводит, когда достигает цикла while. Если вы открываете файл напрямую, запустите его через командную строку и посмотрите, что он там напечатает.
Если я возьму точно такой же рабочий код и встрою его в цикл while, программа начнет падать после того, как я введу значение Y. Удалите цикл while, и все снова заработает.
input
возвращает строку
хорошо, поэтому он заканчивает один раунд в командной строке, затем начинает снова, печатает «тест», затем дает трассировку (последний последний вызов): говорит строку 10, в <module> print("15 - 10 is",xy) TypeError: не поддерживается тип(ы) операнда для -: 'str' и 'str' что это значит?
О, ладно, я думаю, Скотт дал мне то, что мне было нужно. Как получить целочисленные значения из ввода, а не строки?
input
возвращает строку, поэтому, когда цикл возвращается и пытается напечатать x-y
, происходит сбой, потому что вы не можете вычитать строки.
Как я могу получить целочисленное значение для значения, введенного пользователем?
Попробуйте использовать int(x)
.
не уверен, что есть лучший способ, но я добавил дополнительную строку под каждой строкой ввода, чтобы преобразовать ее в целое число, используя int(), не самый элегантный, но это работает, спасибо!
Что означают «бросить его в цикл while» и «он перестанет работать»?