2015-04-17 3 views
-3

Im обучение для книги «Intr. Python 2.6.6» и я имею эту ошибку в примереPython «не определен» в лотерею

line 12, in <module> 
aux=num_ele 
NameError: name "num_ele" is not defined 

Но я не понимаю, в чем проблема

# -*- coding:utf-8 *-* 

import random 
import os 

def combinacion(num_ele, total_num, repetir=False, ordenar_resultado=True): 
    elementos=[] 
    if num_ele>total_num and not repetir: 
     print ("No puedes sacar mas valores de los que ya tienes!") 
     return 

aux=num_ele 

while aux>0: 
    numero = int(random.uniform(1,total_num)) 
    if repetir: 
     elementos.append(numero) 
     aux=aux-1 
    else: 
     if elementos.count(numero)==0: 
      elementos.append(numero) 
      aux=aux-1 

if ordenar_resultado: 
    elementos.sort() 
print (elementos) 

def menu(): 
    print (""" 
    Menu Principal 

    Este programa genera combinaciones de juegos de azar. elige el juegos 
    que mas te guste. 

    1) Loteria Primitiva 
    2) Euromillones 
    9) Salir 
    """) 

    opcion = input("") 
    return opcion 

def aplicacion(): 
    os.system(cls) 
    opcion = ("") 
    while opcion!=("9"): 
     opcion = menu() 
     if opcion ==("1"): 
      print ("") 
      print ("Combinacion para loteria primitiva: ") 
      combinacion(6,49) 
      print ("") 

     if opcion == ("2"): 
      print ("") 
      print ("Euromillones") 
      print ("Combinacion ganadora: ") 
      combinacion(5,50) 
      print ("Estrellas: ") 
      combinacion(2,9) 
      print ("") 

aplicacion() 

Благодарю вас за внимание.

+0

Найти другую книгу. 2.6 - это старая версия Python, и вы должны использовать что-то более новое. – Kevin

+3

@Kevin Не имеет значения, какую версию python он использует. Никаких существенных изменений между 2.6 и 2.7, которые по-прежнему очень используются сегодня – letsc

+0

@letsc: Я не могу подсчитать количество раз, когда OP сказал, что у них 2,7, и сказал, что мой ответ не работает, и оказалось, что они 2,6, а не 2,7, и я использовал определение набора или dict, 'str.format' с неявными индексами или два файла в' '' инструкции. :) – abarnert

ответ

3

Я предполагаю, что вы имели в виду, чтобы иметь aux=num_ele и код, начиная внутри combination функции: уровень

# -*- coding:utf-8 *-* 
import random 
import os 

def combinacion(num_ele, total_num, repetir=False, ordenar_resultado=True): 
    elementos=[] 
    if num_ele>total_num and not repetir: 
     print ("No puedes sacar mas valores de los que ya tienes!") 
     return 
    aux=num_ele 

    while aux>0: 
     numero = int(random.uniform(1,total_num)) 
     if repetir: 
     elementos.append(numero) 
     aux=aux-1 
     else: 
     if elementos.count(numero)==0: 
      elementos.append(numero) 
      aux=aux-1 
     if ordenar_resultado: 
     elementos.sort() 
     print (elementos) 

def menu(): 
    print (""" 
    Menu Principal 

    Este programa genera combinaciones de juegos de azar. elige el juegos 
    que mas te guste. 

    1) Loteria Primitiva 
    2) Euromillones 
    9) Salir 
    """) 

Отступ вашего aux=num_ele и следующий код помещает его вне сферы combination «s.

+0

Я думаю, что следующие несколько строк - до меню def - также должны быть отступом –

+0

Абсолютно. Обновленный ответ. – EvenLisle