|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|||||||||||
Создайте функцию, которая будет запрашивать ввод числового значения до тех пор, пока посетитель его не введёт.06.06.2022, 12:05. Показов 1243. Ответов 19
Метки нет (Все метки)
Всем привет. Есть условие: Создайте функцию readNumber, которая будет запрашивать ввод числового значения до тех пор, пока посетитель его не введёт. Функция должна возвращать числовое значение. Также надо разрешить пользователю остановить процесс ввода, отправив пустую строку или нажав «Отмена». В этом случае функция должна вернуть null.
На сайте learn.js дают такое решение:
0
|
|||||||||||
| 06.06.2022, 12:05 | |
|
Ответы с готовыми решениями:
19
Запрашивать у пользователя числовые значения, до тех пор, пока не будет введено значение 0 Запрашивать ввод до тех пор, пока не будет введена заданная фраза, после чего вывести её 100 раз
|
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
||
| 06.06.2022, 14:43 | ||
|
Помимо функции у тебя еще есть переменная.
0
|
||
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
||
| 06.06.2022, 14:55 [ТС] | ||
|
А цикл do...while чем отличается их решение от моего, кроме того, что их реализация do...while гарантированно один раз выполнит num = prompt("Введите число", 0); (но в работе этого когда не заметно).
0
|
||
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
||||
| 06.06.2022, 15:00 | ||||
![]() Добавлено через 4 минуты Чисто "идеологически" авторы явно показывают что "действие будет выполнено в любом случае". А зацикливание будет или нет - решит условие. Твой вариант сразу "ставит условие", де может и не выполнится тело цикла... Нужно анализировать данные и смотреть условие... Т.е. семантика у тебя так же "проигрывает".
1
|
||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|||||||
| 06.06.2022, 15:04 | |||||||
|
Ну и плюс при вводе 0 ваша функция возвращает null так как
1
|
|||||||
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
||||||||||||
| 06.06.2022, 15:10 | ||||||||||||
|
Вот пример
0
|
||||||||||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|
| 06.06.2022, 15:10 | |
|
ну и до кучи условие
numRead == null никогда не будет проверяться, так как prompt при нажатии отмены вернет null, а +prompt превратит его в 0
0
|
|
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
|
| 06.06.2022, 15:11 | |
|
0
|
|
| 06.06.2022, 15:13 | |
|
0
|
|
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|||
| 06.06.2022, 15:27 [ТС] | |||
learn.javascript.ru дошёл только до типов данных, а Вы мне тут пытаетесь объяснить про "бесконечную кривую". И вообще, у меня мозгов как у хлебушка...
0
|
|||
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
|
| 06.06.2022, 15:58 | |
|
0
|
|
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|||||||
| 06.06.2022, 17:47 [ТС] | |||||||
while (!isFinite(numRead)), а уже потом мы вводим значение numRead = +prompt(); (то есть у нас появляется одно лишнее выполнение цикла), после выполняется блок if() и если в нём звёзды сошлись, то возвращаем numRead. А в варианте автора, сначала вводим значение, а потом уже идёт проверка... return +num делать такие конструкции, я думал, если мы хотим из прообразовывать из строки в число, то лучше это делать сразу в +prompt().krvsa, AlexZaw, Подскажите, я правильно понимаю эту строку (если переводить её на человеческий язык) while (!isFinite(numRead)) - Пока numRead НЕ является числом, то выполняем блок if(), как только numRead будет равно числу, то возвращаем return numRead;return +numRead;, а не во время того как мы вводим это самое число numRead = prompt(); (Суть я понял, но каша в голове и не могу нормально сформулировать, да и с определениями туговато).Добавлено через 2 минуты
0
|
|||||||
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
||||||||||
| 06.06.2022, 18:50 | ||||||||||
|
Но реализация их работы может быть какой угодно. Чисто фантазия автора. ![]() ![]()
В нашем случае в промт вернет строку. Вот если эта строка "конечное число" у нас будет "истина".
1
|
||||||||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|||||||||
| 06.06.2022, 18:58 | |||||||||
|
Пусть "a" это количество проверок, а "b" это количество выполнений цикла. Тогда в первом случае: выполняется тело do { num = prompt("Введите число", 0); } приплюсовываем b (1)выполняется проверка while ( !isFinite(num) ); приплюсовываем а (1)Если ввели число то isFinite(num) дает true, отрицание "!" дает false, завершаем цикл и идем дальше, итого a=1, b=1 Если ввели пустую строку или нажали отмену, то isFinite(num) преобразует их в 0, из-за "!" опять же получаем false и завершаем цикл. В вашем варианте: делаем проверку while (!isFinite(numRead)) приплюсовываем a (1)так как у нас в самом начале переменная numRead объявлена, но не инициализирована (не присвоено значение) то ее значением является undefined isFinite(undefined) дает false, отрицание "!" дает true и условие while выполняется Выполняем тело цикла
если же мы ввели число (в данном случае кроме 0) то условие в if не срабатывает и цикл возвращается к условию, приплюсовываем a(2) Условие в итоге дает false, цикл завершается итого a=2, b=1. Т.е. одна лишняя проверка. уфф ![]() Правда потом вы дойдете до всякой фильтрации массивов, прототипов, промисов и станет еще веселее
1
|
|||||||||
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|
| 06.06.2022, 21:44 [ТС] | |
|
AlexZaw, krvsa, Уважаемые, а сколько у Вас опыта работы в программировании, и где Вы работаете(ли)? (И что мне нужно, для того что бы достичь Вашего уровня?) И если Вас не затруднит, напишите, про весь Ваш путь от самого начала и до сегодня.
0
|
|
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|
| 06.06.2022, 22:16 | |
|
Freeze_Breeze, у меня путь краткий и простой до банальности - сначала учил html и css по разным самоучителям, в основном по htmlbook. Потом наткнулся на этот форум и стал читать вопросы других пользователей и пытаться решить поставленную задачу, когда сам, когда с помощью гугла.
Потом помаленьку начал учить js на ютубе, learnjs и опять же по этому форуму. После чего выиграл обучение в htmlacademy по профе frontend-разработчик, но почти все что там преподавали я к тому моменту уже и так знал благодаря поиску ответов на вопросы других Что-то новое конечно узнал и во время обучения, но это в основном была инфа по доступности, БЭМ и гиту, ну и по js научился модулям, промисам, и так, по мелочи. Т.е. опять же тому, что можно спокойно изучить самостоятельно.Умных книжек никаких не читал, хотя в свое время накачал их довольно много, но руки до сих пор так и не дошли ![]() Что касается моего уровня, хотя самого себя оценивать трудно, так я его оцениваю как недоджун
2
|
|
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
|||
| 06.06.2022, 22:19 | |||
![]() Руководитель отдела разработки...
1
|
|||
| 06.06.2022, 22:21 | |
|
0
|
|
|
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
|
|
| 06.06.2022, 22:22 | |
|
1
|
|
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|
| 06.06.2022, 22:25 [ТС] | |
|
AlexZaw, Благодарю Вас. Вы мне очень помогли. Спасибо
0
|
|
| 06.06.2022, 22:25 | |
|
Помогаю со студенческими работами здесь
20
Запрашивать пароль до тех пор, пока он не будет правильно введен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|