wordCount = int(input("Enter words pairs count:\n"))
wDict = readWordPairs(wordCount)
while True:
word = input("Enter word: ")
if word.lower() == "exit": break
print(f"Synonim: {wDict[word]}" if word in wDict.keys() else "Not found")
input("press any key to close program")
if __name__ == "__main__":
main()
Объяснение:
Если есть вопросы - не стесняйтесь задать в комментариях к ответу. Ошибок, которые вы описали в задании, в данном случае не наблюдается. Единственное, я сделал так, что бы программа не завершалась после первого найденного слова, а запрашивала слова до тех пор, пока пользователь не введёт команду exit
1) Расписываем так же, как и для десятичной системы, только используя степени 2, а не 10:
2) Тут можно делить на 2, выписывая остатки, и после этого написать остатки в обратном порядке, или представить исходное число в виде суммы степеней двойки, или воспользоваться результатами предыдущего задания.
a. Последовательно делим на 2:
159 : 2 = 79 (ост. 1)
79 : 2 = 39 (ост. 1)
39 : 2 = 19 (ост. 1)
19 : 2 = 9 (ост. 1)
9 : 2 = 4 (ост. 1)
4 : 2 = 2 (ост. 0)
2 : 2 = 1 (ост. 0)
1 : 2 = 0 (ост. 1)
Выписываем остатки в обратном порядке и получаем:
Можно было также заметить, что 159 = 154 + 5 = 154 + 4 + 1, тогда (пользуемся предыдущим пунктом)
Исходный код (Python 3.8 x64):
class InvalidArgumentException(Exception): pass
class KeyValuePair:
def __init__(self, key, value):
self._key = key
self._value = value
@staticmethod
def FromList(pair: list):
if (len(pair) != 2): raise InvalidArgumentException("List must contain strictly 2 elements for initialize KeyValuePair")
return KeyValuePair(pair[0], pair[1])
@property
def Key(self):
return self._key
@property
def Value(self):
return self._value
def strip(string: str):
return string.strip()
def readWordPairs(wordCount: int, pairSeparator: str = "-") -> dict:
temp = dict()
for i in range(wordCount):
wordPair = KeyValuePair.FromList(list(map(strip, input(f'{i} pair: ').lower().split(pairSeparator
if wordPair.Key in temp.keys():
temp[wordPair.Key] = [temp[wordPair.Key], wordPair.Value]
else:
temp[wordPair.Key] = wordPair.Value
return temp
def main():
wordCount = int(input("Enter words pairs count:\n"))
wDict = readWordPairs(wordCount)
while True:
word = input("Enter word: ")
if word.lower() == "exit": break
print(f"Synonim: {wDict[word]}" if word in wDict.keys() else "Not found")
input("press any key to close program")
if __name__ == "__main__":
main()
Объяснение:
Если есть вопросы - не стесняйтесь задать в комментариях к ответу. Ошибок, которые вы описали в задании, в данном случае не наблюдается. Единственное, я сделал так, что бы программа не завершалась после первого найденного слова, а запрашивала слова до тех пор, пока пользователь не введёт команду exit
Объяснение:
1) Расписываем так же, как и для десятичной системы, только используя степени 2, а не 10:
2) Тут можно делить на 2, выписывая остатки, и после этого написать остатки в обратном порядке, или представить исходное число в виде суммы степеней двойки, или воспользоваться результатами предыдущего задания.
a. Последовательно делим на 2:
159 : 2 = 79 (ост. 1)
79 : 2 = 39 (ост. 1)
39 : 2 = 19 (ост. 1)
19 : 2 = 9 (ост. 1)
9 : 2 = 4 (ост. 1)
4 : 2 = 2 (ост. 0)
2 : 2 = 1 (ост. 0)
1 : 2 = 0 (ост. 1)
Выписываем остатки в обратном порядке и получаем:
Можно было также заметить, что 159 = 154 + 5 = 154 + 4 + 1, тогда (пользуемся предыдущим пунктом)
b. 342 = 256 + 86 = 256 + 64 + 22 = 256 + 64 + 16 + 6 = 256 + 64 + 16 + 4 + 2, значит,
c. Тут сразу можно заметить, что , тогда двоичное представление - 1 и 9 нулей