Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2015 15:55:28

jobsdata
Зарегистрирован: 2015-09-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно оформить магию кода?

Есть такой код:

cash = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(cash)
cash = list("".join(map(str, cash[:4])))
x = ""
pos1 = 0
while x != cash:
    x = input("Введите число: \n")
    if not x.isdigit():
        print("В строке содержатся не цирры!\n")
        continue
    if len(x) > 4 or len(x) < 4:
        print("Введите 4-х значное число!\n")
        continue
    if len(x) != len(set(x)):
        print("В Вашем числе содержится два одинаковых числа!\n")
        continue
    x = list(x)
    result_1 = list(zip(x,cash))
     
    for i in result_1:
        if i[0] == i[1]:
            pos1 += 1
        
    result_2 = [i for i in x if i in cash]
    print ("""["""+ str(pos1) +""":""" + str(len(result_2)) + """]\n""" )

Пример:
В cash попало число 2345.
Человек вводит 1367, число 3 совпало по позиции, в pos1 = 1, мне выводит что 1 совпадение. Если я введу 2356, будет 2 совпадения. И если я введу 1987, то по идеи будет pos1 = 0, но в нем уже предыдущие совпадения. Вот как сбросить pos1 на 0 если нет совпадений? Или как правильно оформить код? Не могу понять. Спасибо.

P.S. На чудо-юдо код не обращайте внимание

Офлайн

#2 Окт. 7, 2015 17:02:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как правильно оформить магию кода?

import random
 
cash = list(range(10))
random.shuffle(cash)
cash = "".join(map(str, cash[:4]))
x = ""
print(cash)
while x != cash:
    x = input("Введите число: \n")
    if not x.isdigit():
        print("В строке содержатся не цифры!\n")
        continue
    if len(x) != 4:
        print("Введите 4-х значное число!\n")
        continue
    if len(x) != len(set(x)):
        print("В Вашем числе содержится две одинаковых цифры!\n")
        continue
    pos = sum(i[0] == i[1] for i in zip(x, cash))
    result = sum(i in cash for i in x)
    print("[{}:{}]".format(pos, result))



Отредактировано py.user.next (Окт. 7, 2015 17:05:15)

Офлайн

#3 Окт. 7, 2015 17:09:23

jobsdata
Зарегистрирован: 2015-09-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно оформить магию кода?

py.user.next
Вообще огонь Спасибо большое. Я тоже сам сделал, поместил pos1 = 0 в цикл while

Офлайн

#4 Окт. 8, 2015 13:24:05

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как правильно оформить магию кода?

cash = list(range(10))
random.shuffle(cash)
cash = "".join(map(str, cash[:4]))
Можно заменить на
cash = ''.join(random.sample('0123456789', 4))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version