Професионална програма
Loading...
+ Нов въпрос
zh.yordanova avatar zh.yordanova 2 Точки

07. Safe Passwords Generator

Здравейте, колеги извинявам се за притеснението имам проблем с тази задача. Въртях цикула по всеки възможен начин, който се сетих, опитах да поправя кога си според темите, които намерих по форумите, но неуспявам да разбера къде точно греша, за да ми вземе правилните символи при завъртането.

Условие:

7.Генератор за сигурни пароли

Ани се страхува от това, да не й бъде хакнат някой от профилите в социалните мрежи, затова решава да направи генератор за пароли, които да бъдат достатъчно сигурни. Вашата задача е да й помогнете да напише програма, която ще генерира тези пароли, разделени една от друга от знака "|".

Да се напише програма, която генерира серия от символи като в шаблона:

ABxyBA

като при всяко генериране на нов код, стойностите на символите се увеличават с 1. Ако A надхвърли 55, се връща на 35. Ако B надхвърли 96, се връща на 64.

Вход

От конзолата се чете 1 ред:

  • На първия ред a – цяло число в интервала [1 … 1000]
  • На втория ред b – цяло число в интервала [1 … 1000]
  • На третия ред максимален брой генерирани паролицяло число в интервала [1 … 1000000]

Ограничения:

  • A е символ с ASCII стойност в диапазона [35… 55]
  • B е символ с ASCII стойност в диапазона [64 … 96]
  • x e цяло число в диапазона [1… a]
  • y e цяло число в диапазона [1… b]

Изход:

Да се отпечата на конзолата:

  • Генерираният код. Ако броят на комбинациите е по-голям от максималния на кода, да се отпечата до подадената стойност, в противен случай да се отпечата до текущия брой на комбинациите.

Примерен вход и изход

Вход

Изход

Обяснения

2

3

10

#@11@#|$A12A$|%B13B%|&C21C&|'D22D'|(E23E(|

Понеже се достига стойността на числата a и b по-рано от постигането на максималния брой на комбинациите, програмата приключва.

20

50

10

#@11@#|$A12A$|%B13B%|&C14C&|'D15D'|(E16E(|)F17F)|*G18G*|+H19H+|,I110I,|

Понеже се достига максималния брой на комбинациите по-рано от стойностите на числата a и b, програмата приключва.

 

Моето решение: https://pastebin.com/38xg4kpu

 

Благодаря предварително за отделеното време и помоща. Хубав и слънчев ден на всички.

Тагове:
0
Programming Basics
A.Neshkova avatar A.Neshkova 45 Точки

Трябва да сложиш принтирането преди да промениш стойностите на А и В, 

защото, ако е след тях, А, още на първото завъртане, ще започне от 36, вместо от 35, а B от 65, вместо от 64 и т.н.:

print(f'{chr(A)}{chr(B)}{x}{y}{chr(B)}{chr(A)}', end='|')

A += 1

if A > 55:

A = 35

B += 1

if B > 96:

B = 64

 

Тук: if counter >= max_count:  не трябва да има равно, защото въртиш цикъла с 1 път по-малко.

 

Трябва да имаш тази проверка 

if x == a and y == b:

break

за да можеш да приключиш програмата по-рано както е в първия пример:

ако х стане равно на а (2) и у стане равно на b (3), програмата трябва да приключи.

 

И трябва да добавиш булева променлива, за да можеш да прекратиш изпълнението на всички цикли,

защото break ще ти прекъсне само цикъла в който се намира.

 

Ето твоето решение + поправките 100/100 в judge: 

https://pastebin.com/MVJ5vFkn

0
zh.yordanova avatar zh.yordanova 2 Точки

Много, много, много благодара за отделеното време, за помощта и за подробното обяснение. Принципно ми е трудно да използвам булевите променливи, тъй като не ги разбирам много, но в бъдеще ще се постарая да ги използвам повече, за да ги упражнявам. С риск да стана досадна може ли да помоля за полощ с още една задача? Не съм сигурна как ще е по добре да я сложа в нова тема или да я поставя тук? Благодаря отново A.Neshkova.

1
A.Neshkova avatar A.Neshkova 45 Точки

 Може би в нова тема повече хора ще видят и евентуално ще отговорят. Също така слагай и линк към judge за самата задача. :P

0