Python как начать программу заново

Я считаю, что слово «рекурсивный» вместо «начать все сначала». Я создал эту программу, чтобы отточить свои навыки умножения по утрам. Я могу сделать так, чтобы у меня возникла проблема умножения, но как мне заставить ее задать мне еще одну проблему?

from random import randint print ‘Good Morning Pete!’ X = randint(0, 10) Y = randint(0, 10) A = X * Y Z = int(raw_input(‘%i * %i = ? ‘ % (X, Y))) count = 0 if Z == A: count += 1 print ‘Good Job!’ else: print ‘Sorry!’ if count == ’10’: print ‘Time to kill ’em’

Как мне заставить его выплюнуть новую проблему для решения? Я новичок Спасибо всем!

Pete 23 Сен 2009 в 06:44

5 ответов

Лучший ответ

Пит, в этом случае тебе не понадобится рекурсия , а всего лишь цикл .

Я предлагаю вам поместить большую часть логики этой программы (часть, которая задает проблему умножения и проверить ваш ответ), в функцию. Скажи одну проблему (). Эта функция может вернуть 0, если вы ответили неправильно, 1, если вы ответили правильно, и -1, если вы ввели какую-либо клавишу, указывающую, что вы хотите остановить. (Кстати, эта функция введена, чтобы помочь вам структурировать программу, сделать ее более понятной, но она не нужна для введения цикла. Вы могли бы хорошо хранить все эти вещи внутри цикла. Кроме того, вы должны знать, что существуют другие конструкции цикла в Python, например, в то время как петли.)

Как написать свою программу на python? #python #программирование

Тогда вам просто нужно в главном разделе что-то вроде этого:

GoodReplyCtr = 0 for i in range(0, 10): # or 100 or 1000 if you feel ambitious. cc = OneProblem() if cc < 0: break GoodReplyCtr += cc print(GoodReplyCtr)

Концепция рекурсии (опять же, здесь не нужна) — это когда функция вызывает себя. Это обычная практика при навигации по графам (как, например, структура каталогов на вашем диске C :), или с некоторыми математическими проблемами. Как правило, нам не нужно рассказывать о рекурсии на ранних этапах изучения концепций компьютерных языков, но как только вы овладеете навыками, вы можете найти ее весьма полезной (и сложной по времени ;-))

Держись! Не сдавайся! Математика и питон это круто.

Изменить . Последний трюк:

Вы можете обнаружить, что вам нужно работать с одними таблицами умножения больше, чем с другими. Вместо того, чтобы использовать randint, вы можете использовать метод random.choice () для модуля random, чтобы добавить некоторые числа или исключить другие. например

import random X = random.choice((2, 3, 4, 6, 7, 8, 9, 7, 9)) # see, no 0, 1,or 5 but more chance to get 7 or 9
mjv 23 Сен 2009 в 03:29

Я согласен на 100% с теми, кто сказал, что это не хороший случай для рекурсии, но вместо этого призывает к циклу. Однако, чтобы показать, как это можно сделать, я выложу код ниже:

import random def do_mult(num_questions): x = random.randint(0, 10) y = random.randint(0, 10) a = x * y z = int(raw_input(‘%i * %i = ?’ % (x, y))) if z == a: print ‘good job!’ else: print ‘sorry!’ if num_questions > 1: do_mult(num_questions — 1) do_mult(10)
PTBNL 23 Сен 2009 в 03:22

Читайте также:
Что такое веб сайт мощный компьютер в сети программа для связи

Чтобы включить цикл, вы можете добавить это в начало вашего кода:

22 Цикл while. Инструкции break, continue, else

Running = True, а True: // Добавить код здесь

//Add this to the end of your code: print ‘Another problem? Enter y or n’ answer = raw_input().lower() if answer == ‘n’: running = False break elif answer == ‘y’: running = True

Это позволит пользователю выбирать, хотят ли они каждый раз новую проблему.

samfu_1 23 Сен 2009 в 03:20

Цикл? Смотрите инструкцию for и функцию range() . Они находятся в руководстве по Python.

И вы можете захотеть прочитать следующую главу в любой книге, которую вы используете для обучения программированию.

Chris B. 23 Сен 2009 в 02:57

Я верю, что ты хочешь что-то подобное

from random import randint print ‘Good Morning Pete!’ count = 0 while True: X = randint(0, 10) Y = randint(0, 10) A = X * Y Z = int(raw_input(‘%i * %i = ? ‘ % (X, Y))) if Z == A: count += 1 print ‘Good Job!’ else: print ‘Sorry!’ if count == 10: print ‘Time to kill ’em’ break

Источник: question-it.com

Python-как заставить программу вернуться в начало кода вместо закрытия [дубликат]

но я не могу понять, как вы это делаете в Python : / любые идеи кто?

код, который я пытаюсь зациклить, это

#Alan’s Toolkit for conversions def start() : print («Welcome to the converter toolkit made by Alan.») op = input («Please input what operation you wish to perform. 1 for Fahrenheit to Celsius, 2 for meters to centimetres and 3 for megabytes to gigabytes») if op == «1»: f1 = input («Please enter your fahrenheit temperature: «) f1 = int(f1) a1 = (f1 — 32) / 1.8 a1 = str(a1) print (a1+» celsius») elif op == «2»: m1 = input («Please input your the amount of meters you wish to convert: «) m1 = int(m1) m2 = (m1 * 100) m2 = str(m2) print (m2+» m») if op == «3»: mb1 = input («Please input the amount of megabytes you want to convert») mb1 = int(mb1) mb2 = (mb1 / 1024) mb3 = (mb2 / 1024) mb3 = str(mb3) print (mb3+» GB») else: print («Sorry, that was an invalid command!») start()

таким образом, в основном, когда пользователь заканчивает свое преобразование, я хочу, чтобы он вернулся к началу. Я все еще не могу применить ваши примеры цикла на практике, так как каждый раз, когда я использую функцию def для цикла, он говорит, что «op» не определен.

автор: monkey334

7 ответов

Python, как и большинство современных языков программирования, не поддерживает «goto». Вместо этого необходимо использовать функции управления. Есть два основных способа сделать это.

1. Петли

пример того, как вы могли бы сделать именно то, что делает ваш пример SmallBasic, выглядит следующим образом:

while True : print «Poo»

Это очень просто.

2. Рекурсия

def the_func() : print «Poo» the_func() the_func()

примечание по рекурсии: только сделать это, если у вас есть определенное количество время, когда вы хотите вернуться к началу (в этом случае добавьте случай, когда рекурсия должна остановиться). Это плохая идея делать бесконечную рекурсию, как я определил выше, потому что у вас в конечном итоге закончится память!

Читайте также:
Перечень учебных программ и учебников

редактировать чтобы ответить на вопрос более конкретно

#Alan’s Toolkit for conversions invalid_input = True def start() : print («Welcome to the converter toolkit made by Alan.») op = input («Please input what operation you wish to perform. 1 for Fahrenheit to Celsius, 2 for meters to centimetres and 3 for megabytes to gigabytes») if op == «1»: #stuff invalid_input = False # Set to False because input was valid elif op == «2»: #stuff invalid_input = False # Set to False because input was valid elif op == «3»: # you still have this as «if»; I would recommend keeping it as elif #stuff invalid_input = False # Set to False because input was valid else: print («Sorry, that was an invalid command!») while invalid_input : # this will loop until invalid_input is set to be True start()
автор: River Tam

используйте бесконечный цикл:

while True: print(‘Hello world!’)

это, безусловно, может относиться к вашему start() функции Также; вы можете выйти из цикла с помощью break , или использовать return чтобы полностью выйти из функции, которая также завершает цикл:

def start(): print («Welcome to the converter toolkit made by Alan.») while True: op = input («Please input what operation you wish to perform. 1 for Fahrenheit to Celsius, 2 for meters to centimetres and 3 for megabytes to gigabytes») if op == «1»: f1 = input («Please enter your fahrenheit temperature: «) f1 = int(f1) a1 = (f1 — 32) / 1.8 a1 = str(a1) print (a1+» celsius») elif op == «2»: m1 = input («Please input your the amount of meters you wish to convert: «) m1 = int(m1) m2 = (m1 * 100) m2 = str(m2) print (m2+» m») if op == «3»: mb1 = input («Please input the amount of megabytes you want to convert») mb1 = int(mb1) mb2 = (mb1 / 1024) mb3 = (mb2 / 1024) mb3 = str(mb3) print (mb3+» GB») else: print («Sorry, that was an invalid command!»)

если бы вы также добавили опцию выхода, это могло бы быть:

if op.lower() in : print(«Goodbye!») return
автор: Martijn Pieters

Вы можете легко сделать это с петлями, есть два типа циклов

на петли:

for i in range(0,5): print ‘Hello World’

пока петли:

count = 1 while count

каждый из этих циклов печати «Здравствуй, Мир!» пять раз

автор: K DawG

Python имеет операторы потока управления вместо goto заявления. Одной из реализаций потока управления является Python while петли. Вы можете дать ему логическое условие (логические значения либо True, либо False в Python), и цикл будет выполняться неоднократно, пока это условие не станет false. Если вы хотите, чтобы цикл навсегда, все, что вам нужно сделать, это начать бесконечный цикл.

будьте осторожны, если вы решите выполнить следующий пример кода. Нажмите Control+C в вашей оболочке, пока она есть если вы когда-нибудь хотите убить процесс. Обратите внимание, что для этого процесс должен быть на переднем плане.

while True: # do stuff here pass

строку # do stuff here это просто комментарий. Он ничего не выполняет. pass — это просто заполнитель в python, который в основном говорит: «Привет, я строка кода, но Пропустите меня, потому что я ничего не делаю.»

Читайте также:
Программа для включения передней панели звука

теперь предположим, что вы хотите повторно попросить пользователя ввести навсегда и когда-либо, и только выйти из программы, если пользователь вводит символ «q» за увольнение.

вы могли бы сделать что-то вроде этого:

while True: cmd = raw_input(‘Do you want to quit? Enter ‘q’!’) if cmd == ‘q’: break

cmd будет просто хранить все, что пользователь вводит (пользователю будет предложено ввести что-то и нажмите enter). Если cmd хранит только букву «q», код будет принудительно break из своей заключительной петли. The break оператор позволяет избежать любого вида цикла. Даже бесконечное!

Чрезвычайно полезно узнать, хотите ли вы программировать пользовательские приложения, которые часто работают на бесконечных циклах. Если пользователь не вводит точно букву «q», пользователю просто будет предложено несколько раз и бесконечно, пока процесс не будет насильственно убит или пользователь не решит, что ему достаточно этой раздражающей программы и просто хочет выйти.

Источник: askdev.ru

Покоряем Python — уроки для начинающих

Как мы уже видели, программный код модуля по умолчанию запускается всего один раз за все время работы программы. Чтобы принудительно повторно загрузить модуль и запустить программный код в нем, необходимо явно вызвать встроенную функцию reload . В этом разделе мы исследуем, как использовать возможность повторной загрузки модулей, чтобы сделать систему более динамичной. В двух словах:
• При вызове операции импортирования (с помощью инструкций import и from ) программный код модуля загружается и выполняется, только когда модуль импортируется в первый раз за время работы программы.
• При последующих попытках импортировать модуль будет использоваться объект уже загруженного модуля. Повторная загрузка и запуск программного кода в этом случае не происходит.

• Функция reload принудительно выполняет повторную загрузку уже загруженного модуля и запускает его программный код. Инструкции присваивания, выполняемые при повторном запуске, будут изменять существующий объект модуля.
Для чего вся эта суета вокруг повторной загрузки модулей? Функция reload позволяет изменять части программы, не останавливая всю программу. Благодаря функции reload эффект от изменений в программном коде можно наблюдать сразу же после внесения этих изменений. Повторная загрузка модулей поможет не во всех ситуациях, но она позволит существенно сократить цикл разработки. Например, представьте себе программу, предназначенную для работы с базами данных, которая должна при запуске соединиться с сервером, – так как изменения или настройки могут проверяться немедленно после повторной
загрузки, вам достаточно соединиться с базой данных всего один раз за весь сеанс отладки. Таким же способом можно обновлять программный код долго работающих серверов, которые нельзя останавливать.
Язык Python относится к языкам интерпретирующего типа (более или менее), поэтому в нем отсутствуют этапы компиляции/компоновки, необходимые, чтобы запустить программу, например, на языке C модули загружаются динамически уже запущенной программой. Возможность повторной загрузки обеспечивает повышение производительности труда, позволяя вам изменять части работающей программы без ее остановки. Обратите внимание, что в настоящее время функция reload может обслуживать только модули, написанные на языке Python, – скомпилированные модули расширений, написанные на таких языках, как C, тоже могут динамически загружаться во время работы программы, но их нельзя загрузить повторно.

Источник: pythlife.blogspot.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru