Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2016 22:17:07

xapepama
Зарегистрирован: 2016-04-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

print ('Приветствую Вас в системе учета сотрудников. (pre alfa test)')
print ('Наберите фамилию сотрудника для поиска в базе')
print ('Наберите "add" для добавления новых сотрудников и "quit" для выхода')
import sys
d1 = {1: 'fdsfds', 2: 'fdsfsdf'}
x=input()
if x == 'quit':
    print ('До встречи!')
    sys.exit()
if x in d1.keys():
    print (d1[x], x)
else:
    print ('test')
if x == 'add':
    add_name()

При запуске и вводе любого значения кроме quit и add - программа выдает test из второго цикла и закрывается. Словарь d1 - есть, ключ 1 и 2 есть, но если их ввести - оно никак не реагирует. Чуть не сломал себе голову уже.

Помогите, пожалуйста. Спасибо.

Отредактировано xapepama (Апрель 22, 2016 22:18:08)

Офлайн

#2 Апрель 22, 2016 22:35:33

flasky
Зарегистрирован: 2016-04-21
Сообщения: 3
Репутация: +  1  -
Профиль  

Не понимаю почему мой код не работает.

В каком случае у вас должны выводиться значения из словаря?

Офлайн

#3 Апрель 22, 2016 22:59:06

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

xapepama
Словарь d1 - есть, ключ 1 и 2 есть, но если их ввести - оно никак не реагирует.
Ключи 1 и 2 словаря d1 - это целые числа (тип int). А значения, возвращаемые input() - это строки “1” и “2” (тип str). Переделайте ключи в словаре с чисел на строки, либо приведите значение, возвращаемое input(), к типу int.

Отредактировано old_monty (Апрель 22, 2016 23:10:46)

Офлайн

#4 Апрель 22, 2016 23:00:13

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

Попробуйте так

x=int(input())

Офлайн

#5 Апрель 22, 2016 23:27:09

xapepama
Зарегистрирован: 2016-04-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

flasky
В каком случае у вас должны выводиться значения из словаря?
В случае, если такие ключи есть. Ввод совпадает со значением ключа.

old_monty
Ключи 1 и 2 словаря d1 - это целые числа (тип int). А значения, возвращаемые input() - это строки “1” и “2” (тип str). Переделайте ключи в словаре с чисел на строки, либо приведите значение, возвращаемое input(), к типу int.
Firik
Попробуйте так
Я недавно начал, всего месяца 2 читать книгу Лутца. Читаешь - все понятно. Начинаешь, что то делать - упускаешь “мелочь” и сидишь тупишь..
Да дело было в том, что Input дает строку, а в словаре числа. Помогло: x=int(input())
Огромное спасибо!

Отредактировано xapepama (Апрель 23, 2016 01:20:36)

Офлайн

#6 Апрель 23, 2016 01:23:01

xapepama
Зарегистрирован: 2016-04-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

Раз я начал тут задавать глупые вопросы, продолжу не плодя темы.

Пытаюсь запустить бесконечный цикл с несколькими действиями. После этих действий цикл должен продолжится.. Не получается.

while x in d1.keys():
    print (d1[x], x)
    if x == quit:
        break
else:
    print ('No value in base, repeat..')
    if x == quit:
        break

Смысл следующий. Программа ждет ввода от пользователя и если он удовлетворяет требованиям: делает вывод и снова запускает цикл, если не удовлетворяет - снова вывод и снова перезапуск цикла. При этом есть 3-е условия на выход из цикла.

Отредактировано xapepama (Апрель 23, 2016 01:24:08)

Офлайн

#7 Апрель 23, 2016 07:54:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

break внутри else не имеет смысла

После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно



Офлайн

#8 Апрель 23, 2016 08:53:24

xapepama
Зарегистрирован: 2016-04-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

FishHook
break внутри else не имеет смысла
После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно

Можно ли сделать так, что бы блок else выполнялся (по условию) и вновь цикл перезапускался. т.е. цикл выполнялся бы вечно, выдавая результат и “ловя” нужные (имеющиеся в словаре) значения ввода.

Офлайн

#9 Апрель 23, 2016 09:16:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

xapepama
Можно ли сделать так, что бы блок else выполнялся (по условию)
В смысле? Вы чего-то сильно недопонимаете. Конечно вы не можете изменять синтаксис языка.
xapepama
цикл выполнялся бы вечно,

вот вам вечный цикл
while True:
     print(1)



Офлайн

#10 Апрель 23, 2016 09:46:27

xapepama
Зарегистрирован: 2016-04-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю почему мой код не работает.

FishHook
while True:
print(1)

Не то. Я объясняю и путаюсь в терминах. Как собака: все понимаю, сказать не могу. Пожалуйста, наберитесь терпения.

Хочу получить вот такой цикл, всего то навсего:



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version