Перейти к содержанию
  • 0
Авторизация  
Dismid_

Помогите исправить ошибки в коде

Вопрос


--PROGRAMM BY DISMID

--RELOADER ALFA
--ALL RIGHTS RESERVED
-----------------------------------------
computer = require("computer")
local utm = computer.uptime()
print('КОмпьютер уже работает'..utm)
print('Введите через сколько секунд работы перезагрузить ПК (Пока только двухзначные числа )')
local vremua = io.read("*n")
print('Перезагрузить пк или просто выключить?? y - перезагрузить, n - просто выключить')
zn = io.read()
print('СПАСИБО ЧТО ИСПОЛЬЗУЕТЕ НАШЕ ПО')
-----------------------------------------
if zn == y then
if computer.uptime() >= vremua then
computer.shutdown(true)
end
elseif zn == n then
if computer.uptime() >= vremua then
computer.shutdown(false)
end
else
print('ТЫ что то не так сделал) Перезапусти прогу)')
end 

У меня мой код почему-то не очень работает, и принимает значения для vreuma только двухзначные то есть значение 100 уже не принимает, видно на скрине. Прошу гуру луа помочь.

А еще программа пропускает  zn = io.read()

 

 FOjLAYMsJbo.jpg

 

Изменено пользователем Alex
форматирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

НУ короче) У меня мой говнокод почему-то не очень работает, и принимает значения для vreuma только двухзначные тоесть значение 100 уже не принимает, вижно на скрине)

А как на скрине можно увидеть, что значение 100 не принято?

 

Мне скрин показывает, что выполнение пошло по третьей ветви условий, то есть, первые два условия оказались ложными. А такое поведение может быть объяснено кодом zn == y, который выполняет сравнение переменной zn с переменной y. Учитывая, что предыдущий код не иницализирует переменную y, то она, скорее всего, не существует, и условие всегда будет ложным.

 

Если код переписать код таким образом: zn == "y", то он выполнит сравнение переменной zn с символом "y", в случае успеха направив выполнение программы по первой ветви. Аналогичным образом следует поправить и вторую ветвь условия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А как на скрине можно увидеть, что значение 100 не принято?

 

Мне скрин показывает, что выполнение пошло по третьей ветви условий, то есть, первые два условия оказались ложными. А такое поведение может быть объяснено кодом zn == y, который выполняет сравнение переменной zn с переменной y. Учитывая, что предыдущий код не иницализирует переменную y, то она, скорее всего, не существует, и условие всегда будет ложным.

 

Если код переписать код таким образом: zn == "y", то он выполнит сравнение переменной zn с символом "y", в случае успеха направив выполнение программы по первой ветви. Аналогичным образом следует поправить и вторую ветвь условия.

По скрину видно что не принимает более двухзначные числа, потому-что local utm = computer.uptime()

print('КОмпьютер уже работает'..utm) Показывает 7к секунд, а я задал перезагрузку через 100 секунд, пк в итоге не перезагрузился

Изменено пользователем Dismid_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А как на скрине можно увидеть, что значение 100 не принято?

 

Мне скрин показывает, что выполнение пошло по третьей ветви условий, то есть, первые два условия оказались ложными. А такое поведение может быть объяснено кодом zn == y, который выполняет сравнение переменной zn с переменной y. Учитывая, что предыдущий код не иницализирует переменную y, то она, скорее всего, не существует, и условие всегда будет ложным.

 

Если код переписать код таким образом: zn == "y", то он выполнит сравнение переменной zn с символом "y", в случае успеха направив выполнение программы по первой ветви. Аналогичным образом следует поправить и вторую ветвь условия.

А не можешь подсказать как сделать что бы при записи переменной через io.read она записываласчь не как "переменная" а переменная без "" Просто ето убивает много моих говнокодов, но всеравно спавсибо

Изменено пользователем Dismid_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А не можешь подсказать как сделать что бы при записи переменной через io.read она записываласчь не как "переменная" а переменная без "" Просто ето убивает много моих говнокодов

Если я верно понял вопрос, то никак. И дело не в io.read(), а в синтаксие Lua. Переменная указывается по её имени, а строковая константа всегда записывается в двойные и одинарные кавычки, а также в двойные квадратные скобки. То есть, Lua всегда интерпретирует name как имя, а 'name' как строковую константу.

 

В случае твоего кода необходимо сравнивать значение переменной со строковой константой, и потому без кавычек не обойтись. Но можно пойти на хитрость, предварительно записав константу в переменную. Например:

local y, n = "y", "n"

local a = io.read()
if a==y then
  ...
elseif a==n then
  ...
else
  ...
end
Так мы избавимся от кавычек на нужном участке кода, используя их в другом месте. Но зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

 

Но зачем?

К примеру для моей попытки создать калькулятор, она заруинилась тоже из-за ""

print('Введите пример(ЗНАКИ /*-+)')
local krya = io.read()
print (krya)
Я еще много раз пытался ето все починить но потом забил на него....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

 

А еще программа пропускает  zn = io.read() 
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Указанный код похож на работоспособный, и потому ничего не поясняет. Ну, будем мы сравнивать krya=='*', и как это нам помешает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Указанный код похож на работоспособный, и потому ничего не поясняет. Ну, будем мы сравнивать krya=='*', и как это нам помешает?

 

 

 

Ну если бы не было етих противных скобочек local krua  = (10*10)

print (krua) код бы выдавал правильный ответ, а не то что я написал(((
ЖАль что нету аргумента для io.read() типо '*n' который присваивает етой переменной хначение без "" (надеюсь понятно сформулировал речь)

MOpxuYvi9EM.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну если бы не было етих противных скобочек local krua  = (10*10) print (krua) код бы выдавал правильный ответ, а не то что я написал((( ЖАль что нету аргумента для io.read() типо '*n' который присваивает етой переменной хначение без "" (надеюсь понятно сформулировал речь)

Эта задача решается даже с противными скобочками:

local expr="2+2*2"
print( load("return "..expr)() )
И еще раз говорю, io.read тут не при чём, дело в синтаксисе языка.

 

Можно и так:

local value = load("return " .. io.read() )()
print( value )
Изменено пользователем eu_tomat

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Эта задача решается даже с противными скобочками:

local expr="2+2*2"
print( load("return "..expr)() )
И еще раз говорю, io.read тут не при чём, дело в синтаксисе языка.

 

Можно и так:

local value = load("return " .. io.read() )()
print( value )

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

По скрину видно что не принимает более двухзначные числа, потому-что local utm = computer.uptime()

print('КОмпьютер уже работает'..utm) Показывает 7к секунд, а я задал перезагрузку через 100 секунд, пк в итоге не перезагрузился

Не заметил это сообщение сразу, отвечу сейчас:

Проверить, какие числа принимаются, а какие нет, можно, вставив для контроля print() сразу же за read():

local vremua = io.read("*n")
print(vremua)
Такой отладочный код поможет увидеть, что число всегда возвращается верное.

 

И почему-то не заметил это:

А еще программа пропускает  zn = io.read()

Действительно, после чтения числа через read("*n") следующий за ним вызов read() возвращает пустую строку. Вот пример, в нём же показано, как обойти такое поведение read():

$ lua5.3

> print( '-' .. io.read() .. '-' .. io.read() .. '-' .. io.read() .. '-' )
111
222
333
-111-222-333-

> print( '-' .. io.read("*number") .. '-' .. io.read() .. '-' .. io.read() .. '-' )
111
222
-111--222-

> print( '-' .. io.read("*number",1) .. '-' .. io.read() .. '-' .. io.read() .. '-' )
111
222
333
-111-222-333-
Почему так происходит, я сам не понимаю. С удовольствием послушаю более опытных знатоков Lua.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

×
×
  • Создать...