[Python] Alguém me pode ajudar com esse código?

Olá, queria que alguem fizesse um teste esse código.

Ele tá funcionando, mas o que eu queria que vocês testassem era isto: Clica na opcao 1 e escreve um numero e faz isso mais 2 vezes. (com numeros diferentes), depois no menu clica no 8 que e pra selecionar o crescente. Voce vai verificar que os numeros vao ficar crescentes, porem se eu for adicionar mais numeros, e for na opcao 8 de novo, ele não vai colocar o array todo por ordem crescente. Apenas vai colocar os novos que foram adicionados.

[!] -> O array é colocado de ordem crescente no def arraysort(): é o ultimo código.

Alguem pode ajudar ai? :confused:slight_smile:

Código:

import sys
import os
import os.path
countpositivo = 0
countnegativo = 0
totalpositivo = 0
totalnegativo = 0
array = []
arraycrescente = []
countx = 0
x = 0
numerocontado = int
global menuoption
global result

	#MENU DO PROGRAMA

def menu():
	global menuoption
	global numero
	global j
	global arraycrescente
	global totalnegativo
	global totalpositivo
	print("\n\n===== MENU ARRAYS =====")
	print("\n1.Inserir valor no Array")
	print("\n2.Remover valor do Array")
	print("\n3.Total do Array")
	print("\n4.Ordernar Array (Crescente)")
	print("\n5.Guardar Array num Ficheiro")
	print("\n6.Mostrar Array")
	print("\n7.Reset Array")
	print("\n8.Ordenar Array (Crescente)")
	print("\n0.Sair")
	try:
		menuoption=int(input("\n\nOpcao: "))
	except:
		print("\nTens de escolher uma das opcoes!")
		return menu()
	if menuoption==1:										#opcao 1
		inserirvalor()
	elif menuoption==2: 			#opcao 2
		if array==[]:
			print("\n\n[ERRO] O array precisa de ter pelo menos um numero para poderes remover.")
			menu()
		else:
			removervalordoarray()
	elif menuoption==0:										#opcao9
		print("\n\n=== FIM DO PROGRAMA ===\n\n\n")
		sys.exit
	elif menuoption==6:										#opcao 8
		if array==[]:
			print("\n\n[ERRO] O array precisa de ter pelo menos um numero para ser mostrado.")
			menu()
		else:
			mostrararray()
	elif menuoption==4:										#opcao 5
		if array==[]:
			print("\n\n[ERRO] Nao tens nenhum numero inserido no array.")
			menu()
		else:
			arrayordem()
	elif menuoption==3:										#opcao 4
		if array==[]:
			print("\n\n[ERRO] Nao e possivel calcular o total com o array vazio!")
			menu()
		else:
			totaldoarray()
	elif menuoption==5:
		if array==[]:
			print("\n\n[ERRO] Nao e possivel salvares com um array vazio!")
			menu()
		else:
			guardarficheiro()
	elif menuoption>8:
		print("\n\n[!]Tens que escolher uma das opcoes!")
		menu()
	elif menuoption<0:
		print("\n\n[!]Tens que escolher uma das opcoes!")
		menu()
	elif menuoption==3:
		contarnrnoarray()
	elif menuoption==7:
		if array==[]:
			print("\n\n[ERRO] Nao e necessario resetar, o array ja se encontra vazio.")
			menu()
		else:
			totalpositivo = 0
			totalnegativo = 0
			numero = 0
			total = 0
			j = ' '
			j = []
			arraycrescente.clear
			j.clear
			arraycrescente = 0
			arraycrescente = []
			totalfinaldoarray = 0
			array.clear()
			print("\n\nArray Resetado!")
			menu()
	elif menuoption==8:
		print("\n\n===== ARRAY EM ORDEM CRESCENTE =====")
		arraysort()
	
	
	#DEFINIÇÕES DO PROGRAMA 
	
			#definição da opção 1
def inserirvalor():
	global numero
	global totalnegativo
	global totalpositivo
	global storage
	global a
	print("\n\n\n=== Inserir Valor no Array ===\n")
	try:
		numero=int(input("\nEscreva um numero para inserir no array: "))
	except:
		print("\nApenas numeros sao permitidos.")
		return inserirvalor()
	if numero<0:
		totalnegativo = totalnegativo + numero
		array.append(numero)
		menu()
	elif numero>0:
		totalpositivo = totalpositivo + numero
		array.append(numero)
		menu()
	elif numero==0:
		menu()
		
			#definição da opção 2
def removervalordoarray():
	print("\n\n\nArray:",array)
	try:
		print("\n-- Podes inserir 0 para voltar ao menu --")
		removervalor=int(input("\n\nOpcao: "))
	except:
		print("\nSo podes remover numeros que estejam no array!")
		return removervalordoarray()
	if removervalor==0:
		menu()
	else:
		array.remove(removervalor  )
		menu()
		
			#definição da opção 8		
def mostrararray():
	print("\n\nArray: ",array)
	try:
		escolhamostrar=int(input("\nSe quiseres voltar ao menu insere um 0 -> "))
		if escolhamostrar==0:
			menu()
		else:
			print("\nPara sair tens de inserir o numero 0")
			mostrararray()
	except:
		print("\n\nApenas numeros sao permitidos.")
		return mostrararray()
		
			#definição da opção 5
def arrayordem():
	array.sort()
	print("\n\n===== ARRAY CRESCENTE =====")
	print("\nArray: ",array)
	try:
		escolhamostrar=int(input("\nSe quiseres voltar ao menu insere um 0 -> "))
		if escolhamostrar==0:
			menu()
		else:
			print("\nPara sair tens de inserir o numero 0")
			arrayordem()
	except:
		print("\n\nApenas numeros sao permitidos.")
		return arrayordem()
		
			#definição da opção 4
def totaldoarray():
	print("\n\n===== TOTAL DO ARRAY =====")
	print("\nArray: ",array)
	totalfinaldoarray = totalpositivo + totalnegativo
	print("\nTotal Final: ",totalfinaldoarray)
	try:
		escolhamostrar=int(input("\nSe quiseres voltar ao menu insere um 0 -> "))
		if escolhamostrar==0:
			menu()
		else:
			print("\nPara sair tens de inserir o numero 0")
			totaldoarray()
	except:
		print("\n\nApenas numeros sao permitidos.")
		return totaldoarray() 
		
def guardarficheiro():
	print("\n===== GUARDAR FICHEIRO =====")
	filename=str(input("\n\nEscolhe um nome para o ficheiro -> "))
	if os.path.exists(filename):
		totalfinaldoarray = totalpositivo + totalnegativo
		Save.write(str('===== INFORMACOES DO ARRAY =====\n\n'))
		Save.write(str('Array: '+str(array)+'\n\n'))
		Save.write(str('Total Final: '+str(totalfinaldoarray)+'\n\n'))
		Save.write(str('=====================================\n\n'))
		Save.close()
		base = os.path.splitext(filename)[0]
		os.rename(filename, base + ".txt")
		print("\n\nAs informacoes do array foram salvas!")
		menu()
	else:
		totalfinaldoarray = totalpositivo + totalnegativo
		Save = open(filename, 'w')
		Save.write(str('===== INFORMACOES DO ARRAY =====\n\n'))
		Save.write(str('Array: '+str(array)+'\n\n'))
		Save.write(str('Total Final: '+str(totalfinaldoarray)+'\n\n'))
		Save.write(str('=====================================\n\n'))
		Save.close()
		base = os.path.splitext(filename)[0]
		os.rename(filename, base + ".txt")
		print("\n\nAs informacoes do array foram salvas!")
		menu()

		#Função bubble sort
		
def arraysort():
	for m in range(len(array)):
		j = array
		numero = min(array)
		array.remove(numero)
		arraycrescente.append(numero)
	j = ' '.join(str(i) for i in arraycrescente)
	print("\nArray Crescente: ",j)
	try:
		escolhamostrar=int(input("\nSe quiseres voltar ao menu insere um 0 -> "))
		if escolhamostrar==0:
			menu()
		else:
			print("\nPara sair tens de inserir o numero 0")
			arrayordem()
	except:
		print("\n\nApenas numeros sao permitidos.")
		return arrayordem()
	   
menu()

Esquece, ninguém vai testar por vc… o que vc deve fazer é rever sua forma de implementação… principalmente com esse monte de variável global:

countpositivo = 0
countnegativo = 0
totalpositivo = 0
totalnegativo = 0
array = []
arraycrescente = []
countx = 0
x = 0
numerocontado = int
global menuoption
global result

E não é porque vc não declarou global nas outras mais acima que elas não sejam, afinal vc acessa em qualquer função nesse arquivo, mas enfim ao inves de usar um array e arraycrescente dentro de arraysort, não seria melhor e mais intuitivo passar como parametro?

def arraysort(array):
    arrayOrdenado = []
    ....
    return arrayOrdenado

Já que vc não pode usar sort como vc disse em outros tópicos, cria um lista nova apenas quando arraysort for chamado e não antes como vc tinha feito, dessa forma evita comportamentos estranhos… pense a respeito