Найти - Пользователи
Полная версия: Не понимаю почему мой код не работает.
Начало » Python для новичков » Не понимаю почему мой код не работает.
1 2
xapepama
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 есть, но если их ввести - оно никак не реагирует. Чуть не сломал себе голову уже.

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

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

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

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-е условия на выход из цикла.
FishHook
break внутри else не имеет смысла
После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно

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

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

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

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

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



This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB