Please help me understand why the second while does not work. For some reason, ask cannot change the value of two and therefore the loop is infinite.
one=0 while one!=1: speed=3*10**8# скорость света frequency=input("Введите номер канала wi-fi или введите 0, чтобы указать частоту вручную\n ")# частота канала if frequency=='1': print("Внешняя сторона квадрата антенны равна ", (speed/(2412*1000)/4)*1.01, "сантиметров") elif frequency=='2': print("Внешняя сторона квадрата антенны равна ", (speed/(2417*1000)/4)*1.01, "сантиметров") elif frequency=='3': print("Внешняя сторона квадрата антенны равна ", (speed/(2422*1000)/4)*1.01, "сантиметров") elif frequency=='4': print("Внешняя сторона квадрата антенны равна ", (speed/(2427*1000)/4)*1.01, "сантиметров") elif frequency=='5': print("Внешняя сторона квадрата антенны равна ", (speed/(2432*1000)/4)*1.01, "сантиметров") elif frequency=='6': print("Внешняя сторона квадрата антенны равна ", (speed/(2437*1000)/4)*1.01, "сантиметров") elif frequency=='7': print("Внешняя сторона квадрата антенны равна ", (speed/(2442*1000)/4)*1.01, "сантиметров") elif frequency=='8': print("Внешняя сторона квадрата антенны равна ", (speed/(2447*1000)/4)*1.01, "сантиметров") elif frequency=='9': print("Внешняя сторона квадрата антенны равна ", (speed/(2452*1000)/4)*1.01, "сантиметров") elif frequency=='10': print("Внешняя сторона квадрата антенны равна ", (speed/(2457*1000)/4)*1.01, "сантиметров") elif frequency=='11': print("Внешняя сторона квадрата антенны равна ", (speed/(2462*1000)/4)*1.01, "сантиметров") elif frequency=='12': print("Внешняя сторона квадрата антенны равна ", (speed/(2467*1000)/4)*1.01, "сантиметров") elif frequency=='13': print("Внешняя сторона квадрата антенны равна ", (speed/(2472*1000)/4)*1.01, "сантиметров") elif frequency=='0': two=0 while two!=1: frequency2=int(input("Введите частоту в мегагерцах\n "))# частота print("Внешняя сторона квадрата антенны равна ", (speed/(frequency2*1000)/4)*1.01, "сантиметров") ask=input("Запустить заново? Y/N\n ") if ask=="Y" or "y": two +=0 elif ask=="N" or "n": two +=1 else: print("Неверный номер канала. Укажите канал от 1 до 13\n ") question=input("Нажмите 1, чтобы произвести другой расчёт или 0, чтобы выйти\n ") if question=='1': one +=0 elif question=='0': one +=1 else: one +=1 I took the advice and redid it. Thanks to all
one=0 while one!=1: speed=3*10**8# скорость света frequency=int(input("Укажите номер канала wi-fi или введите 0, чтобы указать частоту вручную\n "))# частота канала if frequency in range(1,13):# диапазон каналов formula=(speed/((2407 + frequency*5)*1000*10))# формула длины волны для каналов wi-fi в сантиметрах print("Внешняя сторона квадрата антенны равна ", round(formula/4*1.01,2), "сантиметров") print("Размер сторон рефлектора ", round(formula*1.01,2),"сантиметров") print("Расстояние вибратор-рефлектор ", round(formula/8.7,2),"сантиметров") elif frequency==0: two=0 while two!=1: frequency2=float(input("Укажите частоту в мегагерцах\n "))# произвольная частота formula2=(speed/(frequency2*1000*10))# формула длины волны для произвольной частоты в сантиметрах print("Внешняя сторона квадрата антенны равна ", round(formula2/4*1.01,2), "сантиметров") print("Размер сторон рефлектора ", round(formula2*1.01,2), "сантиметров") print("Расстояние вибратор-рефлектор ", round(formula2/8.7*1.01,2), "сантиметров") ask=input("Указать другую частоту? Y/N\n ") if ask.upper()=="N":# .upper() - игнорирование регистра буквы two +=1 #break# прерывание цикла командой break else: print("Неверный номер канала. Укажите канал от 1 до 13\n ") question=input("Начать новый расчёт? Y/N\n ") if question in ('N', 'n'):# любой вариант ответа из перечисленных one +=1
(speed/((2407 + freq*5)*1000)/4)*1.01instead of this monster ... - MaxUtwo +=0? :) - gil9redif ask=="Y" or "y"andelif ask=="N" or "n"do not what you think! - Enikeyschikororin. I also advise you to redo the exit tobreak. It will be easier to understand the code in a month :) - Lecron