1

どこでも検索しましたが、答えがどこにも見つかりません。コードに問題がありました。peewee で簡単なインベントリを実行しようとしています。私が持っているのはこのエラーだけです。

  File "inventario.py", line 38
if selection =='1':
                  ^
IndentationError: unindent does not match any outer indentation level

タブをスペースと混合するとこれが発生する可能性があることを読みましたが、SublimeText がタブをスペースに置き換えるツールを使用しても、それを確認しました。

from peewee import *

db = SqliteDatabase('stockpy.db') #creates db

class Product(Model): #data to create product table
    id_prod = IntegerField()
    name = CharField()
    price = IntegerField()
    stock = IntegerField()

    class Meta:
        database = db #tells which db to use 

Product.create_table() #creates table

def newProd(id_prod, name, price, stock):
     Product.create(id_prod =  id_prod, name = name, price = price, stock = stock) #adds new product with input

def deleteProd(name): #Deletes de product with the given name
     todelete = Product.get(Product.name == name)
     todelete.delete_instance()
def viewStock():
     for name in Product.select(): #shows whats in the table
      print Product.id_prod, Product.name, Product.price, Product.stock

menu = {} #simple menu
menu['1']="Add product." 
menu['2']="Delete product."
menu['3']="View stock"
menu['4']="Exit"
while True: 
  options=menu.keys()
  options.sort()
  for entry in options: 
        print entry, menu[entry]
        selection=raw_input("Please Select:")
   if selection =='1':
        print "Need the following data:"
        id_prod = raw_input("Product id: ")
        int(id_prod)
        name = raw_input("Product name: ")
        price = raw_input("Product price: ")
        int(price)
        stock = raw_input ("How many are there: ")
        int(stock)
        print "You're adding the following data", id_prod, name, price, stock
      newProd()
   elif selection == '2':
        name = raw_input ("Enter the name of the product you want to delete: ")
       deleteProd(name)
   elif selection == '3':
        print "Here's your stock"
        viewStock()
   elif selection == '4':
         print "Goodbye"
         break
   else:
         print "Unknown Option Selected!"

どんな助けやヒントも大歓迎です。前もって感謝します。

4

2 に答える 2

5

インデントは一貫している必要があります。インデントのサイズ (4 つのスペースを推奨) を選択し、それを維持します。各行は、このインデント サイズの倍数でインデントする必要があります。

各行の前にスペースの数を付けてコードにコメントしました(矛盾に注意してください):

menu = {} #simple menu                             # 0
menu['1']="Add product."                           # 0
menu['2']="Delete product."                        # 0
menu['3']="View stock"                             # 0
menu['4']="Exit"                                   # 0
while True:                                        # 0
  options=menu.keys()                              # 2
  options.sort()                                   # 2
  for entry in options:                            # 2
        print entry, menu[entry]                   # 8
        selection=raw_input("Please Select:")      # 8
   if selection =='1':                             # 3
        print "Need the following data:"           # 8
        id_prod = raw_input("Product id: ")        # 8
        int(id_prod)                               # 8
        name = raw_input("Product name: ")         # 8
        price = raw_input("Product price: ")       # 8
        int(price)                                 # 8
        stock = raw_input ("How many are there: ") # 8
        int(stock)                                 # 8
        print "You're adding the following data", id_prod, name, price, stock # 8
      newProd()                                    # 6
   elif selection == '2':                          # 3
        name = raw_input ("Enter the name of the product you want to delete: ") # 8
       deleteProd(name)                            # 7
   elif selection == '3':                          # 3
        print "Here's your stock"                  # 8
        viewStock()                                # 8
   elif selection == '4':                          # 3
         print "Goodbye"                           # 9
         break                                     # 9
   else:                                           # 3
         print "Unknown Option Selected!"          # 9
于 2014-01-13T21:14:05.473 に答える
1

これがあなたが望むものだと思います:

from peewee import *

db = SqliteDatabase('stockpy.db') #creates db

class Product(Model): #data to create product table
    id_prod = IntegerField()
    name = CharField()
    price = IntegerField()
    stock = IntegerField()
    class Meta:
        database = db #tells which db to use 

Product.create_table() #creates table

def newProd(id_prod, name, price, stock):
     Product.create(id_prod=id_prod,
                    name=name,
                    price=price,
                    stock=stock) #adds new product with input

def deleteProd(name): #Deletes de product with the given name
     todelete = Product.get(Product.name == name)
     todelete.delete_instance()

def viewStock():
    for name in Product.select(): #shows whats in the table
        print Product.id_prod, Product.name, Product.price, Product.stock

menu = {} #simple menu
menu['1'] = "Add product." 
menu['2'] = "Delete product."
menu['3'] = "View stock"
menu['4'] = "Exit"
while True: 
    options = menu.keys()
    options.sort()
    for entry in options: 
        print entry, menu[entry]
        selection=raw_input("Please Select:")
    if selection =='1':
        print "Need the following data:"
        id_prod = raw_input("Product id: ")
        int(id_prod)
        name = raw_input("Product name: ")
        price = raw_input("Product price: ")
        int(price)
        stock = raw_input ("How many are there: ")
        int(stock)
        print "You're adding the following data", id_prod, name, price, stock
        newProd()
    elif selection == '2':
        name = raw_input ("Enter the name of the product you want to delete: ")
        deleteProd(name)
    elif selection == '3':
        print "Here's your stock"
        viewStock()
    elif selection == '4':
        print "Goodbye"
        break
    else:
        print "Unknown Option Selected!"

どれがどのブロックの一部であるかがはっきりしなかったので、インデントのいくつかを推測する必要がありました。

インデントを適切に処理するエディターを入手する必要があります。最良の結果を得るには、常にインデントレベルごとに4 つのスペースを使用してインデントしてください。

于 2014-01-13T21:14:22.413 に答える