#python #python-3.x #pycharm
#python #python-3.x #pycharm
Вопрос:
placement = "Beaches are cool places to visit in spring however the Mackinaw Bridge is near. Most people visit Mackinaw later since the island is a cool place to explore."
d = {}
for char in placement:
if char not in d:
d[char] = 0
d[char] = d[char] 1
min_value = d['B']
for char2 in d:
if d[char2] < min_value:
min_value = char2
print(d)
это работает нормально, но это не:
product = "iphone and android phones"
lett_d = {}
for char in product:
if char not in lett_d:
lett_d[char] = 0
lett_d[char] = lett_d[char] 1
max_value = lett_d['i']
for char2 in lett_d:
if lett_d[char2] > max_value:
max_value = char2
print(lett_d)
более поздний возвращает ошибку в pycharm:
TypeError: '>' not supported between instances of 'int' and 'str'
я не понимаю, как это может быть вызвано, и пытался выяснить это в течение часа, я нашел другое решение, но я хочу знать, почему обращение> < вызовет такую ошибку, заранее спасибо 🙂
Комментарии:
1. Даже не читая код, я могу сказать вам, что это не ошибка в Python.
2. Что вы вообще пытаетесь сделать со своим кодом?
3. я просто хочу изучить python, пожалуйста, я просто хочу знать, что с ним не так
4.
char2
является строкой. Когда вы это делаетеmax_value = char2
, вы тоже превращаетесьmax_value
в строку. Первый код работает только случайно.5. ох… теперь он понял
Ответ №1:
Первый так же сломан, как и второй; просто так получилось, что условие if d[char2] < min_value
никогда не выполняется (потому что ни одна буква не встречается меньше раз, чем B
). Если бы вторая строка была "zulu warriors are cool"
, она также, похоже, работала.
Проблема в том, что min_value
предполагается отслеживать минимальное количество, поэтому оно должно быть целым числом. Но при назначении min_value = char2
вместо этого устанавливается значение string .
Вы, вероятно, имели в виду min_value = d[char2]
.
И если вам нужно не только минимальное количество, но и соответствующий символ, вам нужно отследить это во второй переменной.
Комментарии:
1. Томас, я подробно рассказал о причине, по которой сломанный первый, казалось , был в порядке, надеюсь, ты не возражаешь.
2. @paxdiablo Совсем нет, спасибо! Я сделал это немного точнее 🙂
3. я думаю, что произошло недоразумение, я хотел получить ключ (строку) в качестве моего ответа, минимальное значение и максимальное значение, где должны были давать мне ключи, а не значения (из-за неправильного именования), я не знаю, почему первое было бы неправильным, я не понимаю
4. кроме того, я получил значение minvalue как x, x появилось только один раз, поэтому первый код сработал
5. @Flyingcar14 Первый код сработал случайно для этого конкретного ввода , а не потому, что код правильный. «x» — последняя запись в словаре, поэтому цикл завершается до того, как он попытается сравнить его с числом. Если вы запустите первый код, но измените
placement
строку на что-то другое, это не сработает. Если вы понимаете, почему второй код не работает, тогда, конечно, вы понимаете, почему первый код тоже неверен, потому что у него та же проблема.
Ответ №2:
Похоже, вы пытаетесь, возможно, найти наиболее и наименее встречающийся символ в вашем тексте. collections.Counter
на помощь (хотя следует отметить, что это не учитывает несколько символов, разделяющих один и тот же «ранг»).
>>> import collections
>>> text = "iphone and android phones"
>>> counts = collections.Counter(text)
Counter({'n': 4, 'o': 3, ' ': 3, 'd': 3, 'i': 2, 'p': 2, 'h': 2, 'e': 2, 'a': 2, 'r': 1, 's': 1})
>>> (most_common_ch, most_common_count), *_, (least_common_ch, least_common_count) = counts.most_common()
>>> most_common_ch, most_common_count, least_common_ch, least_common_count
('n', 4, 's', 1)
Комментарии:
1. нет, я изучаю это на runestone, и я разозлился, пытаясь изучить упражнения по словарю, я просто хочу знать, как изменение знаков < > меняет весь код, я не мог понять это … все равно спасибо