#python
Вопрос:
Поэтому я получил задание из школы, что код должен выбрать строку, удалить первый и последний индекс, затем рандомизировать средние буквы и вернуть строку с прикрепленным первым и последним индексом. Слово должно содержать не менее 4 символов и не должно возвращать исходную строку. Это колдовство и все такое, но после нескольких попыток произнести слово из 4 букв оно попадает в бесконечный цикл, и я не могу понять, почему. Это код на python. Спасибо вам за вашу помощь. Кроме того, в моем лаге есть некоторые переменные, которые не должны быть проблемой…просто чтобы уточнить странные имена переменных.
import random n=0 while nlt;4: slovo=input('Zadajte vase slovo: ') n=len(slovo) l=[] def shufle(slovo,l): for i in range(len(slovo)): if i==0: continue if i==len(slovo)-1: continue else: l.append(slovo[i]) random.shuffle(l) while True: shufle(slovo,l) s=slovo[0] for i in l: s =i s =slovo[-1] if s==slovo: continue elif len(s)!=len(slovo): continue else: print(s) break
Комментарии:
1. Если вы получаете то же слово, что и исходное, с первой попытки, вы звоните
shufle
снова с существующимl
списком, к которому добавляете новые буквы. Список просто становится длиннее, поэтомуelif len(s)!=len(slovo):
будет Правдой, что выcontinue
и будете бесконечно расширять свой список. Не переходитеl
к своей функции, она не имеет никакого отношения к своим параметрам. Просто создайте перетасованный список внутри своей функции иreturn
он.
Ответ №1:
Вот совет: если ваша функция всегда ожидает одного и того же ввода для одного из своих параметров, то этот параметр, вероятно, не нужен. Это относится к передаче пустых списков или аналогичных объектов функциям. Была также проверка, имеют ли s и слово одинаковый размер, который не нужен, поэтому я удалил его. Попробуй это:
import random n=0 while nlt;4: slovo=input('Zadajte vase slovo: ') n=len(slovo) def shufle(slovo): l = [] for i in range(len(slovo)): if i == 0: continue if i == len(slovo)-1: continue else: l.append(slovo[i]) random.shuffle(l) return l while True: l = shufle(slovo) s = slovo[0] for i in l: s = i s = slovo[-1] if s == slovo: continue else: print(s) break
Комментарии:
1. Спасибо, что теперь это работает.
2. @Eidam Пожалуйста, примите мой ответ, если вы нашли его полезным