В настоящее время я пытаюсь научить себя Python с помощью книги Эрика Мэттса «Ускоренный курс по питону», и мне кажется, что у меня возникают трудности с упражнением 5-9 в отношении использования тестов if для проверки пустых списков.
Вот вопрос:
5-9. Нет пользователей: добавьте тест if в hello_admin.py, чтобы убедиться, что список пользователей не пуст.
• Если список пуст, распечатайте сообщение «Нам нужно найти некоторых пользователей!»
• Удалите все имена пользователей из своего списка и убедитесь, что напечатано правильное сообщение.
Вот мой код из hello_admin.py:
usernames = [‘admin’, ‘user_1’, ‘user_2’, ‘user_3’, ‘user_4’] for username in usernames: if username is ‘admin’: print(«Hello admin, would you like to see a status report?») else: print(«Hello » + username + «, thank you for logging in again.»)
Теперь вот мой код для 5-9, который ничего не выводит:
usernames = [] for username in usernames: if username is ‘admin’: print(«Hello admin, would you like to see a status report?») else: print(«Hello » + username + «, thank you for logging in again.») if usernames: print(«Hello » + username + «, thank you for logging in again.») else: print(«We need to find some users!»)
Есть ли у кого-нибудь отзывы о том, почему мой код не выводит: «Нам нужно найти пользователей!» .:)
Что делать, если Pycharm не видит библиотеку?
Источник: stackru.com
Принт не выводит результаты. Python
Я решаю задачку, и хочу вот посмотреть как она отрабатывает, но принт ничего не выводит. Пробовал просто через запятую joke склеивать и ide жаловалась. Сделал через формат: не жалуется, но не выводит.
КОД И ЗАДАНИЕ:
«»» 5. Реализовать функцию get_jokes(), возвращающую n шуток, сформированных из трех случайных слов, взятых из трёх списков: nouns = [«автомобиль», «лес», «огонь», «город», «дом»] adverbs = [«сегодня», «вчера», «завтра», «позавчера», «ночью»] adjectives = [«веселый», «яркий», «зеленый», «утопичный», «мягкий»] Например: # >>> get_jokes(2) [«лес завтра зеленый», «город вчера веселый»] Документировать код функции. Сможете ли вы добавить еще один аргумент — флаг, разрешающий или запрещающий повторы слов в шутках (когда каждое слово можно использовать только в одной шутке)?
Сможете ли вы сделать аргументы именованными? «»»
from random import choice nouns = [«автомобиль», «лес», «огонь», «город», «дом»] adverbs = [«сегодня», «вчера», «завтра», «позавчера», «ночью»] adjectives = [«веселый», «яркий», «зеленый», «утопичный», «мягкий»] list_1 = [] def get_jokes(n, flag = False): for i in range(n): random_index = choice(nouns) random_index_1 = choice(adverbs) random_index_2 = choice(adjectives) joke = «<> <> <>».format(random_index, random_index_1, random_index_2) print(joke) print(random_index) list_2 = [] if flag == True: list_2 = joke.split() for i in range(len(nouns)): for fun in list_2: if nouns[i] == fun: nouns.pop(i) print(nouns) get_jokes(3)
Красивый код на Python #айти #shorts
Можете помочь, почему результата нету и есть ли тут какие-то ошибки? Если будет желание, можете подсказать, как еще можно сделать всю эту тему с флагом, только не сложным путем, я новичек.
Ответы (3 шт):
Ответ на дополнительный вопрос в комментариях, почему выходит ошибка:
for i in range(len(nouns)): for fun in list_2: if nouns[i] == fun: nouns.pop(i)
Вы итерируетесь по списку, при этом удаляя из него элементы. В конце-концов у вас i оказывается за пределами списка, потому что список стал размером меньше, чем len(nouns) из-за этих удалений.
Это можно починить, например, так:
for n in nouns.copy(): for fun in list_2: if n == fun: nouns.remove(n)
Хотя по-хорошему это всё делается ещё проще с помощью вычитания множеств.
def get_jokes(n, flag=False): jokes = [] for _ in range(n): noun = choice(nouns) adverb = choice(adverbs) adjective = choice(adjectives) if flag: # или удаляйте выбранные слова из списка слов (плохой вариант, но если из копий, то — ок) # или создавайте списки использованных слов и проверяйте, не было ли еще такого (может быть медленно на коротких списках) # или составьте новую шутку и проверьте, нет ли ее в уже созданных (тоже может быть медленно) # или перемешайте копии исходных списков и берите слова поочередно (лучший, на мой взгляд, вариант) pass jokes.append(f’ ‘) return jokes
Я бы на вашем месте перепробовал бы всевозможные варианты уникализации;)
>>> print(get_jokes(3)) [‘город вчера яркий’, ‘дом сегодня утопичный’, ‘город ночью яркий’]
Все сделано, вот без ошибок, спасибо всем кто помог:
from random import choice nouns = [«автомобиль», «лес», «огонь», «город», «дом»] adverbs = [«сегодня», «вчера», «завтра», «позавчера», «ночью»] adjectives = [«веселый», «яркий», «зеленый», «утопичный», «мягкий»] list_1 = [] def get_jokes(n, flag=False): for i in range(n): random_index = choice(nouns) random_index_1 = choice(adverbs) random_index_2 = choice(adjectives) joke = f’ ‘ list_2 = [] print(joke) if flag == True: list_2 = joke.split() for noun in nouns: for fun in list_2: if noun == fun: nouns.remove(noun) for adverb in adverbs: for fun in list_2: if adverb == fun: adverbs.remove(adverb) for adjective in adjectives: for fun in list_2: if adjective == fun: adjectives.remove(adjective) get_jokes(n=3, flag=True)
Источник: husl.ru
Python-сообщество
- Начало
- » Python для новичков
- » Print не выводится в консольной команде
#1 Янв. 27, 2021 10:04:37
Print не выводится в консольной команде
Начал изучать программирование недели две назад. Посмотрел несколько лекций Тимофея Хирьянова по Python на ютубе. Скачал на свой андроид программу Pydroid 3. Я просто копировал и вставлял коды, типа этого:
def invert_array(A:list,N:int):
“”“Обращение массива задом-наперед в рамках от 0 до n-1”“”
for k in range(N):
A=A
def test_invert_array():
A1=
invert_array(A1,5)
if A1==:
print(“#test-success”)
else:
print(“#test-failed”)
if A2==:
print(“#test2-ok”)
else:
print(“#test2-fail”), которые писал лектор, в эту программу и консоль выводила результаты.
Вчера установил Microsoft Visual Studio с пакетом по программированию на Python, начал вводить этот код, но консоль ничего не выводит и при этом не сообщает о каких-либо ошибках в синтаксисе.
Пытался искать в инете причину возникновения данной ситуации, но ничего не нашел.
Может знает кто-нибудь с чем это связано?
#2 Янв. 27, 2021 10:46:49
Print не выводится в консольной команде
Flagellant
Скачал на свой андроид программу Pydroid 3.
Программа — параша, выколачивающая деньги и паразитирующая на бесплатном питоне. Выбрось её, она только затормозит твоё развитие.
Flagellant
Вчера установил Microsoft Visual Studio с пакетом по программированию на Python
А ты установи Linux второй системой. И там вообще проблем с питоном нет никаких. Тогда куча глупых вопросов, которые якобы нельзя обойти, просто отпадётся сама собой, потому что это чисто виндовые проблемы.
Можешь для начала использовать сервис https://repl.it . Но лучше, конечно, поставить нормальную среду для программирования.
Отредактировано py.user.next (Янв. 27, 2021 10:50:33)
#3 Янв. 27, 2021 10:56:33
Print не выводится в консольной команде
py.user.next
Спасибо за совет!
#4 Янв. 27, 2021 11:57:54
Print не выводится в консольной команде
py.user.next Программа — параша, выколачивающая деньги и паразитирующая на бесплатном питоне. Выбрось её, она только затормозит твоё развитие.
Это про Pydroid 3 сказа но или про Microsoft Visual?))
#5 Янв. 27, 2021 12:26:24
Print не выводится в консольной команде
Flagellant
Microsoft Visual
Про него тоже сомнения. Давненько им не пользовался, но проблемы были, причем на уровне операционной системы.
При установке MSVC и указании галочки поставить питон, он ставил его себе внутрь и кроме того ломал питон который стоял штатно в системе (тот который обычные люди только и используют). Т.е. после этого разработка могла вестись только из под MSVC — все в традициях микрософта.
Были проблемы с кодировкой. При использовании utf-8 упорно добавлял bom в скрипты. Чем очевидно делал их неработоспособными под unix и macos. Открыл разок в msvc и оно перестает работать в unix хотя до этого работало. И причем ничего в msvc не видно, он то bom не показывает.
Не исключаю что таких приколов гораздо больше. Одни постепенно чинятся, другие добавляются.
Отредактировано doza_and (Янв. 27, 2021 12:27:48)
#6 Янв. 27, 2021 15:02:56
Print не выводится в консольной команде
Flagellant
Это про Pydroid 3 сказа но или про Microsoft Visual?))
Думается мне про второе, потому как первое денег не стоит , и скорее баловоство.
[code python][/code]
Бериегите свое и чужое время.
#7 Янв. 27, 2021 16:40:44
Print не выводится в консольной команде
Flagellant
Это про Pydroid 3 сказа но или про Microsoft Visual?))
Это про Pydroid 3. Эта параша через каждые три нажатия, далеко не самые лучшие, выкидывает сообщение “купи премиум аккаунт”. UX у неё такой, что нужно 100500 кнопок нажимать каждый раз, чтобы просто какой-нибудь print вывести. Так что не трать на неё время, она только затормозит тебя. Там просто ребятки присосались к питону. Причём питон-то для них бесплатный, с них никто денег за него не брал никогда.
Flagellant
или про Microsoft Visual
Я этим в плане питона не пользовался никогда. Согласен с doza_and насчёт самой студии. Как-то ставил её, не самую свежую. Так чтобы её поставить, она стала говорить, что я должен сначала поставить Internet Explorer, а без него она не встанет, там типа важная документация есть и её нужно через Internet Explorer читать.
А когда я стал ставить этот Internet Explorer, который мне вообще нафиг не нужен, этот Internet Explorer не стал ставиться без сервис-паков для винды, которые мне точно так же нафиг не нужны. И когда я стал ставить сервис-паки, вся эта фигня мало того что трафик сожрала только, так ещё и повисла в итоге. К счастью, сейчас ситуация поменялась и винда теперь не нужна просто стала. А когда она стала не нужна, она стала резко добавлять в себя всякие удобства для пользователей, стала завлекать их, снижать цены на всё и перестала доставать по каждой мелочи. А раньше да, она считала, что ты ей должен, и поэтому издевалась над пользователями только так.
Источник: python.su