Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
1

Обработка данных типа символы (Char)

09.12.2020, 18:32. Показов 3677. Ответов 17

Author24 — интернет-сервис помощи студентам
Помогите исправить код!
Задание:
Ввести символьный массив из 13-ти или меньшего числа элементов i найти среди них элемент с наименьшим кодом.

Вот что сказали нужно исправить:
Массив из символов! Символы с целыми числами сравнивать нельзя!

Если не сложно то с комментарием.

Python
1
2
3
4
5
6
7
n=13
S = input('Input ' + str(n) + ' simvolov: ')
kmin=S[0]
for i in range(13) :
    if S[i] < kmin :
        kmin = S[i]
print("Min kod =", kmin, " for char ", ord(kmin))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2020, 18:32
Ответы с готовыми решениями:

Обработка данных типа символы (Char). С++
Вводить символьный массив из 16 символов. Группы символов, разделенные пробелами. В этих словах,...

Обработка данных типа символы (Char)
Данный текст. Группы символов, разделенные пробелами. Выяснить, верно ли, что в данном тексте...

Не распознаёт русские символы типа char
Не распознаёт русские символы типа char setlocale(LC_ALL, &quot;Rus&quot;), setlocale(LC_ALL, &quot;ru&quot;),...

Создайте одномерный вектор типа char. Удалите символы X,Y,Z
Создайте одномерный вектор типа char. Для заполнения вектора создайте генератор случайных чисел....

Условие типа if( масив типа char[x] [y] != переменная типа char) не срабатывает
Создал функцию ChangeWay(). Все, кроме if(map !=ar) (обе переменные типа char) работает...

17
4948 / 3298 / 1143
Регистрация: 21.03.2016
Сообщений: 8,098
09.12.2020, 18:38 2
Цитата Сообщение от sdfafsdf Посмотреть сообщение
Ввести символьный массив из 13-ти или меньшего числа элементов
ткните меня носом где этот 'массив' (список) у вас?
Цитата Сообщение от sdfafsdf Посмотреть сообщение
Символы с целыми числами сравнивать нельзя
вам правильно сказали вы же не сможете сравнить что больше пуд пуха или пуд железа
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 18:56  [ТС] 3
Я символы ввожу с клавиатуры. Но я вводил всё подряд. Это значит что просто нельзя вводить числа, или ещё что-то?

Добавлено через 14 минут
Я правильно понимаю?
Или можете исправить код что бы соответствовал заданию, если не сложно?
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
09.12.2020, 18:58 4
sdfafsdf, Вам подсказывают, если Вы вводите символьную строку, то ее при вводе нужно преобразовать в массив, то есть в список.И еще видимо подразумевается, что символы нужно вводить через пробел, что бы проще было преобразовать вводимую строку в список (массив).
Хотя для получения конечного результата в этом нет необходимости, но у Вас так требуется в условии.
0
4948 / 3298 / 1143
Регистрация: 21.03.2016
Сообщений: 8,098
09.12.2020, 18:58 5
вы читали что такое цифровой код символа и что делает Char? если вы вводите все подряд то цифры для питона тоже символ пока не переведен в число. где у вас массив (точнее список, что за автор это писал)?
Списки
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 19:01  [ТС] 6
Это на этом же сайте мне написали. Наименьший код мне выводило, вот я и подумал что всё нормально работает.
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
09.12.2020, 19:10 7
Цитата Сообщение от sdfafsdf Посмотреть сообщение
Наименьший код мне выводило, вот я и подумал что всё нормально работает.
В питоне, один и тот же результат можно получить разными способами. Вы использовали один способ, а с Вас просят другой способ, с использованием массива.
Преобразовать вводимую строку, если вводить символы через пробелы, можно с помощью split
Python
1
2
3
4
5
6
7
8
9
str.split(sep=None, maxsplit=-1) -> list
 
sep - Строка-разделитель, при помощи которой требуется разбить исходную строку. Может содержать как один, так и несколько символов. Если не указан, то используется специальный алгоритм разбиения, для которого разделителем считается последовательность пробельных символов. (по умолчанию  строка разбивается на группы по символам пробела, табуляции или перевода строки)
Пробельные символы — это набор символов, а не только сам символ пробела.
К ним относятся: возврат каретки, перевод строки, табуляция, и различные виды пробелов.
 
maxsplit - Максимальное количество разбиений, которое требуется выполнить. Если -1, то количество разбиений не ограничено.
 
list - список текстовых строк
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 19:38  [ТС] 8
Спасибо з разъяснения, вроде всё понял! Значит в мой код нужно вставить ту первою строку которую вы мне написали и тоже на первую строку, так?

Добавлено через 15 минут
Или как мне исправить код? Не смотря на то что я понял Ваши разъяснения, я всё равно не могу правильно внедрить все корректировки в свой код.
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
09.12.2020, 19:53 9
Лучший ответ Сообщение было отмечено sdfafsdf как решение

Решение

Цитата Сообщение от sdfafsdf Посмотреть сообщение
Ввести символьный массив из 13-ти или меньшего числа элементов i
У Вас может вводится не 13 а меньше символов. Поэтому код должен быть для любого количества символов. Не понятно, что еще от Вас хотят. Может проверку, что количество введенных элементов меньше или равно 13, и в случае превышения, предложить повторный ввод? Но это усложнит код.
В общем уберите число 13, вводите символы через пробел и используйте split в первой строке при вводе. Используйте range(len(S)), что бы обрабатывать массивы любой длины.

Добавлено через 7 минут
Python
1
2
3
4
5
6
S = input('Input ' + '=<13' + ' simvolov: ').split()
kmin=S[0]
for i in range(len(S)) :
    if S[i] < kmin :
        kmin = S[i]
print("Min kod =", kmin, " for char ", ord(kmin))
1
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 20:01  [ТС] 10
Нет, у меня задание вводить только 13 или меньше символов, так что пока это код будет именно для этого, и проверок пока не нужно.
Цитата Сообщение от Viktorrus Посмотреть сообщение
В общем уберите число 13
Вообще n убрать, или как?
Цитата Сообщение от Viktorrus Посмотреть сообщение
используйте split в первой строке при вводе
Как именно нужно записать первую строку у меня в коде с этим split?
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
09.12.2020, 20:06 11
sdfafsdf, я Вам дал код.

Добавлено через 1 минуту
Если символы вводить через запятую с пробелом, то split будет выглядеть так
Python
1
S = input('Input ' + '=<13' + ' simvolov: ').split(', ')
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 20:06  [ТС] 12
Да, уже увидел. Выбивает ошибку, не могу понять как исправить.
Миниатюры
Обработка данных типа символы (Char)  
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
09.12.2020, 20:16 13
sdfafsdf, У Вас ввод не соответствует условию. У Вас вводится не массив символов, а массив символьных строк содержащих больше одного символа, поэтому split разбивает не на символы а на слова. А слово не является символом и не имеет кода. Почему Вы вводите слова а не символы через пробел? Если строку ввода Вам задают, то значит это дебильный сайт. Кстати в условии не указана конкретная строка, которую нужно вводить. Вводите символы через пробел а не слова, и все будет работать.
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 20:21  [ТС] 14
Блин, да, это я туплю, извините. Да теперь всё работает. Спасибо большое, помогли!
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
09.12.2020, 20:24 15
del**********************************************************
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
09.12.2020, 20:33  [ТС] 16
Не хочу наглеть но не могли бы вы ещё написать этот код только на С++? Если, конечно, у вас есть время и вы знаете язык С++.
0
1728 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
10.12.2020, 11:21 17
sdfafsdf, Соблюдайте правила форума. Этот раздел посвящен только питону. Для С++ существует другой раздел.
Кстати я С++ не знаю.
0
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
10.12.2020, 14:32  [ТС] 18
Понял, хорошо, ну спасибо и на том что помогли!
0
10.12.2020, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2020, 14:32
Помогаю со студенческими работами здесь

Значение типа const char* нельзя использовать для инициализации сущности типа char*
#include &lt;iostream&gt; using namespace std; void color_scheme_func(char* color) {...

Проблема с вызовом функции(аргумент типа const char* несовместим с параметром типа char*)
void cht(char* binary) { n = 0; double s = 0; fout &lt;&lt; &quot;Чтение файла: &quot; &lt;&lt; endl;...

Аргумент типа (const char*) несовместим с параметром типа (char*). Как исправить?
#include &quot;Table.h&quot; #include &quot;Contour.h&quot; #include &quot;TwoShape.h&quot; #include &lt;iostream&gt; int...

Как полю класса типа char* присвоить значение типа *char
Проблема в строчке 46 (не пинайте сильно за формат кода и за говнокод) #include &quot;stdafx.h&quot; ...

Аргумент типа const char* несовместим с параметром типа char* в классе
Данную ошибку находит в 74 - 76 строках, не могу понять что не так. #include &lt;iostream&gt; #include...

Значение типа const char * нельзя присвоить сущности типа char *
Добрый день. Я новичок в c++ и столкнулся с проблемой при написании маленькой программы. Собственно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru