Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 25.12.2018
Сообщений: 23
1

Структуры кода в Python (прокомментируйте мой код)

19.02.2019, 23:22. Показов 1250. Ответов 8
Метки нет (Все метки)

Коротко о неглавном: иду наперед программы, лекции еще не было, но хочу разобраться. Задание:
Напишите функцию, которая получает в качестве параметра строку. Если эта строка входит в кортеж (“Joe”, “Scott”, “John” или “Stephen”), то она возвращает и выводит на экран имя с соответствующей фамилией (“Warren”, “Rixner”, “Greiner” или “Wong”). Если имя не соответствует перечисленным именам, должна быть выведена строка “Ошибка. Нет такого сотрудника”
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
name1 = "Joe", "Joe Warren"
name2 = "Scott", " Rixner"
name3 = "John", " Greiner"
name4 = "Stephen", " Wong"
def name(a):
    if a == name1[0]:
        print(name1[1])
    elif a == name2[0]:
        print(name2[0] + name2[1])
    elif a == name3[0]:
        print(name3)
    else:
        print("Ошибка. Нет такого сотрудника")
name("Joe")
name("Scott")
name("John")
name("Женьшенька")
name("Chingachgook")
Результат:
Joe Warren
Scott Rixner
('John', ' Greiner')
Ошибка. Нет такого сотрудника
Ошибка. Нет такого сотрудника
Вроде работает, это подходит как решение(учитывая все варианты, какой адекватный или все фигня??)? Но меня не устраивает. Допустим у меня большая БД, нельзя же так прописывать каждую строку. Как улучшить???
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2019, 23:22
Ответы с готовыми решениями:

Прокомментируйте мой выбор комплектующих
Добрый день, Вот что я выбрал http://www.dns-shop.ru/catalog/cart/ Подскажите все ли оптимально...

Кроссбраузерность обработки кода или почему мой код работает только в Chrome ?
Доброго времени суток! есть у меня вот такой вот код <!DOCTYPE HTML> <html> <head> ...

MVC - мой первый скрипт, оцените/исправьте/добавьте/прокомментируйте
Доброго времени суток, вот я погуглил, почитал всяких статей про MVC на PHP, поюзал немного...

Перенос переменных из кода на python в код на С++
Объявил переменную а через PyRun_SimpleString(а=1) Как теперь сделать так, чтобы выводилось...

8
303 / 215 / 74
Регистрация: 23.05.2011
Сообщений: 973
20.02.2019, 00:16 2
LuxAes, так норм?
Заполнение dict можно сделать динамическим по данным с какого-то файла, например.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
name1 = "Joe", "Joe Warren"
name2 = "Scott", " Rixner"
name3 = "John", " Greiner"
name4 = "Stephen", " Wong"
 
def get_tuple(x): return x
def get_first(x): return x[0]
def get_second(x): return x[1]
def get_join(x): return x[0]+x[1]
def get_error(_): return "Error"
 
action_map = {
    "Joe":(name1, get_second),
    "Scott":(name2, get_join),
    "John":(name3, get_tuple), 
}
 
def name(a):
    if a in action_map:
        tup, func = action_map[a]
        print(func(tup))
    else:
        print("Ошибка. Нет такого сотрудника")
 
name("Joe")
name("Scott")
name("John")
name("Женьшенька")
name("Chingachgook")
1
Просто Лис
Эксперт Python
4407 / 2804 / 929
Регистрация: 17.05.2012
Сообщений: 8,190
Записей в блоге: 9
20.02.2019, 07:19 3
Дождитесь лучше лекций по теме, чем изобретать своё.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
d = {
    "Joe": "Warren",
    "Scott": "Rixner",
    "John": "Greiner",
    "Stephen": " Wong",
}
 
def name(a):
    if a in d.keys():
        print(d[a])
        return d[a]
    print("Ошибка. Нет такого сотрудника")
 
name("Joe")
name("Scott")
name("John")
name("Женьшенька")
name("Chingachgook")
#Warren
#Rixner
#Greiner
#Ошибка. Нет такого сотрудника
#Ошибка. Нет такого сотрудника
1
18 / 16 / 7
Регистрация: 18.09.2017
Сообщений: 92
20.02.2019, 08:15 4
Цитата Сообщение от LuxAes Посмотреть сообщение
Допустим у меня большая БД, нельзя же так прописывать каждую строку.
Ctrl+C/Ctrl+V для кого придумали?
0
Модератор
Эксперт Python
1326 / 627 / 202
Регистрация: 23.03.2014
Сообщений: 3,011
20.02.2019, 14:07 5
Лучший ответ Сообщение было отмечено LuxAes как решение

Решение

Цитата Сообщение от trifecta Посмотреть сообщение
Сообщение от LuxAes
Допустим у меня большая БД, нельзя же так прописывать каждую строку.
Ctrl+C/Ctrl+V для кого придумали?
А не тот случай: к бд, там опдход иной:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sqlite3
import sys
import os
import binascii
def reader(fname,nm):
 
 
    with open(fname,'rb' )as fp:
        content=fp.read()
        #print(binascii.hexlify(content))
        fhex=(binascii.hexlify(content))
    fp.close()
    try:
        conn=sqlite3.connect(nm+'.'+'db')#создаеим базу
        cur=conn.cursor()#соединяемся
        cur.execute('''create table if not exists yourtable(id int auto_increment primary key not null, yorfield varchar(50), yfield blob not null)''')# заполняем курсор
 
        cur.execute("insert into yortable(id,muzname,mfile)values(1,'my',?)",(fhex,))# выполняем то, что в курсоре
 
        cur.execute("select  * from yourtable ") # выбираем результат в sql 
        results=cur.fetchall()# передаем курсор
        print(results) # выводим
        conn.commit()# закрываем сессию
        with open(nm+'.'+'sql', 'w')as fp:
            for line in conn.iterdump():
                fp.write("%s\n" % line)
 
 
    finally:
        cur.close()# и курсор
        conn.close()#соединение 
 
    #print(fhex)
    return fhex
if __name__ == '__main__':
    fhex=[]# список бинаризтрованных, в данном случае, файлов
    nm = str(input("имя базы"))
    fname='file'
    reader(fname,nm)
1
0 / 0 / 0
Регистрация: 25.12.2018
Сообщений: 23
20.02.2019, 21:55  [ТС] 6
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Дождитесь лучше лекций по теме, чем изобретать своё.
Препод заболел, приходиться изобретать
Dax,
интересно, буду иметь представление об этом, выглядит достаточно сложно.
0
Модератор
Эксперт Python
1326 / 627 / 202
Регистрация: 23.03.2014
Сообщений: 3,011
20.02.2019, 22:08 7
LuxAes, я думаю, что, вполне будете).
Вверху достаточно примеров с кортежами, а я среагировал на пример с БД, ну, уж, как мне кажется,стоило пояснить, что то,, с чего все началось и БД - таки 2 большие разницы, разность и решил показать .

Добавлено через 4 минуты
Sql не так страшен, как кажется, главное понимать, что , курсор - то, что соединяет Python и именно Бд, а запросы -такие же(естественно в рамках, формализованных правил).
0
0 / 0 / 0
Регистрация: 25.12.2018
Сообщений: 23
20.02.2019, 22:15  [ТС] 8
Dax,
Я это понимаю, маня заинтересовало то, что конкретно эта задача могла усложниться бд и тогда явно будет что-то другое. Вопрос вытек сам собой. Спасибо, что потратили время, чтобы объяснить.
0
Модератор
Эксперт Python
1326 / 627 / 202
Регистрация: 23.03.2014
Сообщений: 3,011
20.02.2019, 22:19 9
LuxAes, всегда пожалуйста.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2019, 22:19

Как вызывать код, написанный на Python, из C++ кода?
Решил использовать .py скрипты в проекте. Кинул python.h в каталог проекта, но код #include...

Прокомментируйте фрагмент кода
как пояснить данную часть программы в Python? try: f_x = "%11.4f" % (K_1(U1,S)) ...

Прокомментируйте часть кода
Код из примера которых много, но нет литературы по avicap32, по этому нужна простая помощь -...

прокомментируйте конец кода
void push(stek **top, int d) { stek *pv = new stek; //выделяем память под новый элемент ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.