Member 12388676 Ответов: 3

Я исправил отступ в этой части моего проекта он работает но когда я выбираю номер он дает мне ошибки


import random

# this is my menu choice that the user can select from +,-,*,/ or else user would select 5 to exit.
def mainMenu():
	menu_pick = ["1. + ", "2. - ", "3. * ", "4. / ", "5. Exit"]
	print(menu_pick[0])
	print(menu_pick[1])
	print(menu_pick[2])
	print(menu_pick[3])
	print(menu_pick[4])
 
 #this function displays the introduction that the user would be given when first start the quiz.
def displayIntro():
	#prints the output of introduction and name
	print("Welcome to Random Maths Quiz ! What is your Name ")
	#what ever name was entered it will be stored in input 
	Name = input()
	#then will welcome the user plus there name that was stored in input and tell the user to begin the game.
	print("Welcome , "+ Name + "\n Lets Begin")

def userInput():
	userInput = (input("Enter a choice "))
	while userInput >5 or userInput <=0:
		print("Not correct menu choice")
		userInput = (input("Please Try Again"))
	else:
		return userInput
		
		
def menu_choice():
	while counter <10:
		fig1 = random.randint(0,12)
		fig2 = random.randint(0,6)
		function = random.choice(function)
		
		question = print(fig1,function ,fig2, '=')
		input('Answer:')
		counter = counter +1 
		if function == '1':
			count == fig1 + fig2
			if count == int(answer):
				print('correct!')
				score = score+1
			else:
				print ('Incorrect')
				
				
		elif function == '2':
				count == fig1 - fig2
				if count == int (answer):
					print('Correct')
					score = score+1
				else:
					print ('Incorrect')
					
		elif function == '3':
			count == fig1 * fig2
			if count == int (answer):
				print('Correct')
				score =score+1
			else:
				print('Incorrect')
				
		elif function == '4':
			count == fig1 / fig2
			if count == int(answer):
				print('Correct')
				score = score+1
			else:
				print('Incorrect')
					
		
					
	

def main():
		
    displayIntro()
    mainMenu()
    menu_choice()
    option = userInput()
    while option != 5:
        option = userInput()
    print("\n You have choosen to Exit.")
    

main()


Что я уже пробовал:

я исправил отступ в выборе меню я хочу заставить его работать с любым вариантом меню я выбираю из 1-4 для работы с функциями но продолжает давать мне ошибки любая помощь пожалуйста я использую python 3

Patrice T

И вы собираетесь рассказать нам, какие ошибки ? и куда ?

Member 12388676

строка 81,88, строка 32 говорит что - то о main () и счетчик говорит unbound varaiable

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

Richard MacCutchan

говоря что-то о
Мы не можем догадаться, что это значит. Пожалуйста, отредактируйте свой вопрос, определите, какие строки дают ошибку(Ы), и покажите точное сообщение(ы) об ошибке.

3 Ответов

Рейтинг:
2

Patrice T

Вы уверены насчет else в этом месте ?

def userInput():
	userInput = (input("Enter a choice "))
	while userInput >5 or userInput <=0:
		print("Not correct menu choice")
		userInput = (input("Please Try Again"))
	else:
		return userInput

[обновление]
Цитата:
да потому что он мне нужен потому что если я выберу 5 для выхода он будет проходить через петлю
Вы действительно уверены ?
Для меня вам нужно всегда возвращать userInput. Наличие enterd в цикле не имеет значения.
def userInput():
	userInput = (input("Enter a choice "))
	while userInput >5 or userInput <=0:
		print("Not correct menu choice")
		userInput = (input("Please Try Again"))
	return userInput


Member 12388676

да потому что он мне нужен потому что если я выберу 5 для выхода он будет проходить через петлю

Рейтинг:
1

Richard MacCutchan

Строка 32:

while counter <10:

Вы не объявили counter в этом модуле.


Member 12388676

так где же мне объявить счетчик ??

Richard MacCutchan

Где-то это имеет смысл в структуре вашей программы. Сначала вам нужно создать переменную и присвоить ей значение, прежде чем вы сможете использовать ее в математическом или логическом выражении.

Member 12388676

буду ли я тогда вызывать его из моего def menu_choice(counter):
как будто это так

Richard MacCutchan

Это зависит от того, для чего вы его используете, но вы должны установить значение, прежде чем сможете использовать его в этом случае while выражение.

Я также замечаю в main что вы вызываете свои методы в неправильном порядке. Вы звоните menu_choice() до userInput(), который вы затем вызываете повторно, ничего не делая с вводом, который предоставляет пользователь.

Member 12388676

как бы я это изменил я так запутался

Richard MacCutchan

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

Как разработчик, вы потратите гораздо больше времени на тестирование и отладку кода, чем на его написание, поэтому вам действительно нужно развить эти навыки.

Member 12388676

он не вызывает никаких других функций, которые я создал, я добавил в нижней части Тере то, что я сделал, и это, казалось, работало, но он не запускает код так, как я хочу, чтобы запустить его магазины в ответ на somereason

Рейтинг:
0

Member 12388676

import random
 
# this is my menu choice that the user can select from +,-,*,/ or else user would select 5 to exit.
def mainMenu():
	menu_pick = ["1. + ", "2. - ", "3. * ", "4. / ", "5. Exit"]
	print(menu_pick[0])
	print(menu_pick[1])
	print(menu_pick[2])
	print(menu_pick[3])
	print(menu_pick[4])
 
 #this function displays the introduction that the user would be given when first start the quiz.
def displayIntro():
	#prints the output of introduction and name
	print("Welcome to Random Maths Quiz ! What is your Name ")
	#what ever name was entered it will be stored in input 
	Name = input()
	#then will welcome the user plus there name that was stored in input and tell the user to begin the game.
	print("Welcome , "+ Name + "\n Lets Begin")
 
def userInput():
	userInput = (input("Enter a choice "))
	while userInput >5 or userInput <=0:
		print("Not correct menu choice")
		userInput = (input("Please Try Again"))
	else:
		return userInput
		
		
def menu_choice():
	function = ("+","-","*","/")
	counter =0
	while counter <10:
		fig1 = random.randint(0,12)
		fig2 = random.randint(0,6)
		function = random.choice(function)
		
		question = print(fig1,function ,fig2, '=')
		input('Answer:')
		counter = counter +1 
		if function == '1':
			count == fig1 + fig2
			if count == int(answer):
				print('correct!')
				score = score+1
			else:
				print ('Incorrect')
				
				
		elif function == '2':
				count == fig1 - fig2
				if count == int (answer):
					print('Correct')
					score = score+1
				else:
					print ('Incorrect')
					
		elif function == '3':
			count == fig1 * fig2
			if count == int (answer):
				print('Correct')
				score =score+1
			else:
				print('Incorrect')
				
		elif function == '4':
			count == fig1 / fig2
			if count == int(answer):
				print('Correct')
				score = score+1
			else:
				print('Incorrect')
					
		
					
	
 
def main():
	
		
    displayIntro()
    menu_choice()
    mainMenu()
    
    option = userInput()
    while option != 5:
        option = userInput()
    print("\n You have choosen to Exit.")
    
 
main()


Richard MacCutchan

У вас все та же проблема, что и раньше - перестаньте гадать и тщательно продумывайте каждый шаг, который должна сделать программа:
1. покажите введение
2. Дисплей меню
3. запустите цикл:
3.1. получить опцию ввода от пользователя
3.2. если пользователь вводит 5, то выходите
3.3. параметр процесса
3.4. повторите пункт 3.1.

Я бы предпочел отображать меню каждый раз, прежде чем запрашивать ввод пользователя.