Почему программа в питоне ничего не выводит

В настоящее время я пытаюсь научить себя 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

Я решаю задачку, и хочу вот посмотреть как она отрабатывает, но принт ничего не выводит. Пробовал просто через запятую 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)

Читайте также:
Установка программ и компонентов linux

Источник: husl.ru

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Print не выводится в консольной команде

#1 Янв. 27, 2021 10:04:37

Начал изучать программирование недели две назад. Посмотрел несколько лекций Тимофея Хирьянова по 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

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

py.user.next
Спасибо за совет!

#4 Янв. 27, 2021 11:57:54

py.user.next Программа — параша, выколачивающая деньги и паразитирующая на бесплатном питоне. Выбрось её, она только затормозит твоё развитие.

Это про Pydroid 3 сказа но или про Microsoft Visual?))

#5 Янв. 27, 2021 12:26:24

Flagellant
Microsoft Visual

Про него тоже сомнения. Давненько им не пользовался, но проблемы были, причем на уровне операционной системы.
При установке MSVC и указании галочки поставить питон, он ставил его себе внутрь и кроме того ломал питон который стоял штатно в системе (тот который обычные люди только и используют). Т.е. после этого разработка могла вестись только из под MSVC — все в традициях микрософта.
Были проблемы с кодировкой. При использовании utf-8 упорно добавлял bom в скрипты. Чем очевидно делал их неработоспособными под unix и macos. Открыл разок в msvc и оно перестает работать в unix хотя до этого работало. И причем ничего в msvc не видно, он то bom не показывает.

Читайте также:
Написать программу которая запрашивает массив из n элементов и увеличивает

Не исключаю что таких приколов гораздо больше. Одни постепенно чинятся, другие добавляются.

Отредактировано doza_and (Янв. 27, 2021 12:27:48)

#6 Янв. 27, 2021 15:02:56

Flagellant
Это про Pydroid 3 сказа но или про Microsoft Visual?))

Думается мне про второе, потому как первое денег не стоит , и скорее баловоство.

[code python][/code]
Бериегите свое и чужое время.

#7 Янв. 27, 2021 16:40:44

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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru