Форум сайта python.su
py.user.nextОк.
Используй
sudo -s
py.user.nextЯ думаю это просто первый опыт такой в работе с линуксовой консолькой у меня был вчера, который не повторится. Я просто при установке, перебдел, и чтобы не затереть ненароком виндовый загрузчик создал ещё один efi раздел. И выбора операционки при загрузке логично не появилось, по умолчанию стартовал теперь только Линукс, и вот я вчера полдня ковырял GRUB, чтобы сделать выбор при загрузке, а для этого мне раз 50 пришлось переписывать конфиг, а редактировать и сохранять такие вещи, ожидаемо, можно только через root..
Если же тебе постоянно нужно в root'е находиться, значит ты делаешь что-то не то.
Офлайн
Слегка дополненный рабочий прототип:
from timeit import default_timer as timer from datetime import timedelta import random as rd def get_user_answer(): while True: try: return int(input()) except: print('В ответе должно быть только целое число.\n' 'Пропустить пример нельзя.') def get_rand_addition(): a, b = rd.choices(range(1, 99), k=2) return '+', a, b, a + b def get_rand_subtraction(): a, b = rd.choices(range(1, 99), k=2) while b >= a: b = rd.randint(1, 99) return '-', a, b, a - b def get_rand_division(): b = rd.randint(2, 10) a = b * rd.randint(1, 10) return '/', a, b, a // b def get_rand_multiplication(): a, b = rd.choices(range(2, 10), k=2) return '*', a, b, a * b def shuffle(): chance = rd.choices([1, 2, 3, 4]) if 1 in chance: return get_rand_addition() elif 2 in chance: return get_rand_subtraction() elif 3 in chance: return get_rand_division() else: return get_rand_multiplication() def solve_exercise(count, exercise_type): num_right_answer = 0 exercises = {'+': get_rand_addition, '-': get_rand_subtraction, '/': get_rand_division, '*': get_rand_multiplication, 's': shuffle} time_start = timer() for _ in range(count): data = exercises[exercise_type]() # Вот до этого я бы сам не допёр наверно. print(f'{data[1]} {data[0]} {data[2]} = ', end='') if get_user_answer() == data[3]: print('Верно!') num_right_answer += 1 else: print(f'Неверно, будет {data[3]}') time_end = timer() return num_right_answer, str(timedelta(seconds=time_end-time_start)) def get_exercise_count(): while True: try: n = int(input('Сколько примеров решить?\n>>> ')) if n > 0: return n else: print('Минимум 1.') except: print('Должно быть целое число больше нуля.') def get_exercise_type(): while True: s = input('Выберите тип примеров: + | - | / | * | s (всё подряд)\n>>> ') if s in ['+', '-', '/', '*', 's']: return s else: print('Нужно ввести один из следующих знаков: + - / * или s') def ask_continue(): while True: s = input('Решать еще раз? y|n\n>>> ').lower() if s == 'y': return True elif s == 'n': return False def main(): print('Калькуляция на время.') run = True while run: count_ex = get_exercise_count() type_ex = get_exercise_type() num_right_answer, time = solve_exercise(count_ex, type_ex) print(f'Правильных ответов {num_right_answer} из {count_ex}, время выполнения {time[2:10]}') run = ask_continue() print('Завершение программы..') if __name__ == '__main__': main()
Отредактировано Palrom (Май 16, 2022 19:18:20)
Офлайн