|
@@ -0,0 +1,247 @@
|
|
|
+import random
|
|
|
+
|
|
|
+def game_guesse():
|
|
|
+ x = random.randint(1, 101)
|
|
|
+ print(x)
|
|
|
+ print("Добро пожаловать в числовую угадайку")
|
|
|
+ number = int(input())
|
|
|
+ trys = 1
|
|
|
+ while number:
|
|
|
+ if is_valid(number) == False:
|
|
|
+ print('А может быть все-таки введем целое число от 1 до 100?')
|
|
|
+ number = int(input())
|
|
|
+ trys += 1
|
|
|
+ continue
|
|
|
+ if number > x:
|
|
|
+ print('Ваше число больше загаданного, попробуйте еще разок')
|
|
|
+ elif number < x:
|
|
|
+ print('Ваше число меньше загаданного, попробуйте еще разок')
|
|
|
+ else:
|
|
|
+ print('Вы угадали, поздравляем!')
|
|
|
+ print(f'Число попыток: {trys}')
|
|
|
+ print('Спасибо, что играли в числовую угадайку. Еще увидимся...')
|
|
|
+ break
|
|
|
+ number = int(input())
|
|
|
+ trys += 1
|
|
|
+
|
|
|
+def is_valid(num):
|
|
|
+ return 1 <= num <= 100
|
|
|
+
|
|
|
+# game_guesse()
|
|
|
+
|
|
|
+# Шифр Цезаря. Очень плохая реализация.
|
|
|
+def caesar_cipher_1(data: str, rot: int):
|
|
|
+ RU_LEN = 32
|
|
|
+ chipher_date = ''
|
|
|
+ a = ord('а')
|
|
|
+ A = ord('А')
|
|
|
+ low_case_ch = [chr(x) for x in range(a, a + RU_LEN)]
|
|
|
+ low_case = [x for x in range(a, a + RU_LEN)]
|
|
|
+
|
|
|
+ up_case_ch = [chr(x) for x in range(A, A + RU_LEN)]
|
|
|
+ up_case = [x for x in range(A, A + RU_LEN)]
|
|
|
+
|
|
|
+ print(''.join(low_case_ch))
|
|
|
+ # print(up_case, len(up_case))
|
|
|
+
|
|
|
+ if rot > 31:
|
|
|
+ rot = rot%31
|
|
|
+
|
|
|
+ for i in data:
|
|
|
+ code = ord(i)
|
|
|
+ if code in low_case:
|
|
|
+ if rot > (low_case[-1] - code):
|
|
|
+ chipher_date += chr(low_case[0] + rot - (low_case[-1] - code) - 1)
|
|
|
+ else:
|
|
|
+ chipher_date += chr(code + rot)
|
|
|
+ elif code in up_case:
|
|
|
+ if rot > (up_case[-1] - code):
|
|
|
+ chipher_date += chr(up_case[0] + rot - (up_case[-1] - code) - 1)
|
|
|
+ else:
|
|
|
+ chipher_date += chr(code + rot)
|
|
|
+
|
|
|
+ else:
|
|
|
+ chipher_date += i
|
|
|
+
|
|
|
+ return chipher_date
|
|
|
+
|
|
|
+
|
|
|
+# Шифр Цезаря. Нормальная реализация.
|
|
|
+def caesar_cipher_2(data: str, rot: int, lang='ru'):
|
|
|
+
|
|
|
+ RU_LEN = 31
|
|
|
+ EN_LEN = 25
|
|
|
+
|
|
|
+ chipher_date = ''
|
|
|
+ d = [chr(x) for x in range(ord('а'), ord('я') + 1)]
|
|
|
+ ru_low_case = ''.join(d) * 2
|
|
|
+ d = [chr(x) for x in range(ord('А'), ord('Я') + 1)]
|
|
|
+ ru_up_case = ''.join(d) * 2
|
|
|
+
|
|
|
+ d = [chr(x) for x in range(ord('a'), ord('z') + 1)]
|
|
|
+ en_low_case = ''.join(d) * 2
|
|
|
+ d = [chr(x) for x in range(ord('A'), ord('Z') + 1)]
|
|
|
+ en_up_case = ''.join(d) * 2
|
|
|
+
|
|
|
+ if lang == 'ru':
|
|
|
+ if rot > RU_LEN:
|
|
|
+ rot = rot%RU_LEN
|
|
|
+ for i in data:
|
|
|
+ if i in ru_low_case:
|
|
|
+ chipher_date += ru_low_case[ru_low_case.index(i) + rot]
|
|
|
+ elif i in ru_up_case:
|
|
|
+ chipher_date += ru_up_case[ru_up_case.index(i) + rot]
|
|
|
+ else:
|
|
|
+ chipher_date += i
|
|
|
+ elif lang == 'en':
|
|
|
+ if rot > EN_LEN:
|
|
|
+ rot = rot%EN_LEN
|
|
|
+ for i in data:
|
|
|
+ if i in en_low_case:
|
|
|
+ chipher_date += en_low_case[en_low_case.index(i) + rot]
|
|
|
+ elif i in en_up_case:
|
|
|
+ chipher_date += en_up_case[en_up_case.index(i) + rot]
|
|
|
+ else:
|
|
|
+ chipher_date += i
|
|
|
+ else:
|
|
|
+ return '-1'
|
|
|
+
|
|
|
+ return chipher_date
|
|
|
+
|
|
|
+
|
|
|
+# Шифр Цезаря. Нормальная реализация.
|
|
|
+def caesar_recipher_2(data: str, rot: int, lang='ru'):
|
|
|
+
|
|
|
+ RU_LEN = 31
|
|
|
+ EN_LEN = 25
|
|
|
+
|
|
|
+ chipher_date = ''
|
|
|
+ d = [chr(x) for x in range(ord('а'), ord('я') + 1)]
|
|
|
+ ru_low_case = ''.join(d) * 2
|
|
|
+ d = [chr(x) for x in range(ord('А'), ord('Я') + 1)]
|
|
|
+ ru_up_case = ''.join(d) * 2
|
|
|
+
|
|
|
+ d = [chr(x) for x in range(ord('a'), ord('z') + 1)]
|
|
|
+ en_low_case = ''.join(d) * 2
|
|
|
+ d = [chr(x) for x in range(ord('A'), ord('Z') + 1)]
|
|
|
+ en_up_case = ''.join(d) * 2
|
|
|
+
|
|
|
+ if lang == 'ru':
|
|
|
+ if rot > RU_LEN:
|
|
|
+ rot = rot%RU_LEN
|
|
|
+ for i in data:
|
|
|
+ if i in ru_low_case:
|
|
|
+ chipher_date += ru_low_case[ru_low_case.index(i) - rot]
|
|
|
+ elif i in ru_up_case:
|
|
|
+ chipher_date += ru_up_case[ru_up_case.index(i) - rot]
|
|
|
+ else:
|
|
|
+ chipher_date += i
|
|
|
+ elif lang == 'en':
|
|
|
+ if rot > EN_LEN:
|
|
|
+ rot = rot%EN_LEN
|
|
|
+ for i in data:
|
|
|
+ if i in en_low_case:
|
|
|
+ chipher_date += en_low_case[en_low_case.index(i) - rot]
|
|
|
+ elif i in en_up_case:
|
|
|
+ chipher_date += en_up_case[en_up_case.index(i) - rot]
|
|
|
+ else:
|
|
|
+ chipher_date += i
|
|
|
+ else:
|
|
|
+ return '-1'
|
|
|
+
|
|
|
+ return chipher_date
|
|
|
+
|
|
|
+# print(caesar_cipher_2("Блажен, кто верует, тепло ему на свете!", 10, 'ru'))
|
|
|
+# print(caesar_recipher_2("Лхкрпч, фьш мпъэпь, ьпщхш пцэ чк ымпьп!", 10, 'ru'))
|
|
|
+# print(caesar_cipher_2("To be, or not to be, that is the question!", 17, 'en'))
|
|
|
+
|
|
|
+
|
|
|
+def length(data: str):
|
|
|
+ ret = 0
|
|
|
+ for i in data:
|
|
|
+ if i.isalpha():
|
|
|
+ ret += 1
|
|
|
+ return len([x for x in data if x.isalpha()])
|
|
|
+
|
|
|
+
|
|
|
+def caesar_cipher_test(data: str):
|
|
|
+ l = data.split()
|
|
|
+ ret = ''
|
|
|
+ for sim in l:
|
|
|
+ rot = length(sim)
|
|
|
+ for i in sim:
|
|
|
+ ret += caesar_cipher_2(i, rot, 'en')
|
|
|
+ ret += ' '
|
|
|
+ return ret
|
|
|
+
|
|
|
+# print(caesar_cipher_test("my name is Python!"))
|
|
|
+# print(caesar_cipher_test('Day, mice. "Year" is a mistake!'))
|
|
|
+
|
|
|
+def test(num):
|
|
|
+ bin_num = bin(num) # 0b1111111
|
|
|
+ oct_num = oct(num) # 0o177
|
|
|
+ hex_num = hex(num) # 0x7f
|
|
|
+
|
|
|
+ print(bin_num[2:]) # 1111111
|
|
|
+ print(oct_num[2:]) # 177
|
|
|
+ print(hex_num[2:]) # 7f
|
|
|
+
|
|
|
+# test(124)
|
|
|
+
|
|
|
+def my_range_gen(*args):
|
|
|
+ if len(args) == 1:
|
|
|
+ cnt = 0
|
|
|
+ while cnt != args[0]:
|
|
|
+ yield cnt
|
|
|
+ cnt += 1
|
|
|
+ elif len(args) == 2:
|
|
|
+ cnt = args[0]
|
|
|
+ while cnt < args[1]:
|
|
|
+ yield cnt
|
|
|
+ cnt += 1
|
|
|
+ elif len(args) == 3:
|
|
|
+ if args[2] > 0:
|
|
|
+ cnt = args[0]
|
|
|
+ while cnt < args[1]:
|
|
|
+ yield cnt
|
|
|
+ cnt += args[2]
|
|
|
+ elif args[2] == 0:
|
|
|
+ return
|
|
|
+ else:
|
|
|
+ cnt = args[0]
|
|
|
+ while cnt > args[1]:
|
|
|
+ yield cnt
|
|
|
+ cnt += args[2]
|
|
|
+
|
|
|
+
|
|
|
+for i in my_range_gen(8):
|
|
|
+ print(i)
|
|
|
+
|
|
|
+# for i in my_range_gen(8, 5, -1):
|
|
|
+# print(i)
|
|
|
+
|
|
|
+# for i in my_range_gen(10, 30, 3):
|
|
|
+# print(i)
|
|
|
+
|
|
|
+# for i in my_range_gen(30, 1, 0):
|
|
|
+# print(i)
|
|
|
+
|
|
|
+# for i in my_range_gen(30, 1, -5):
|
|
|
+# print(i)
|
|
|
+
|
|
|
+# for i in my_range_gen(5):
|
|
|
+# print(i)
|
|
|
+
|
|
|
+
|
|
|
+# s = my_range_gen(5)
|
|
|
+# print(next(s))
|
|
|
+# print(next(s))
|
|
|
+# print(next(s))
|
|
|
+# print(next(s))
|
|
|
+# print(next(s))
|
|
|
+# print(next(s))
|
|
|
+
|
|
|
+# def f(*args, **kwargs):
|
|
|
+# print(args, kwargs)
|
|
|
+
|
|
|
+# f(5, 4, 5, 6, 1, a = 1, b = 5, c = 6, name = 123)
|