退出而LEN(INT)<1

问题描述 投票:0回答:3

我在新的蟒蛇,我试图做一个简单的退出,如果输入为空或小于一个int类型。我得到它说的错误 - ValueError异常:“在进入没事的时候,只是在启动进入”:无效的字面INT()基数为10。

import sys
import os
import getpass
def clear(): return os.system('clear')
ballance = 500.00
# Garage Stockas
Wood_InStock = 600
Weed_InStock = 300
Gun_InStock = 15
Gun_Ammo_InStock = 500 * 30 # X30 Total 15000
# Kainos
Gun_Ammo_Price = 15.50
Wood_Price = 3.50
Weed_Price = 9.50
Gun_Price = 250.50
# Produktai
medis = '~ Elemental Wood ~'
weed = '~ Indoor Kush ~'
gun = '~ Shotgun  ~'
gun_ammo = '~ Shotgun ammo 30x ~'
# Inventory
Wood_Inventory = 0
Weed_Inventory = 0
Gun_Inventory = 0
Gun_Ammo_Inventory = 0
# No Money
Not_Enough_Money = '~ Sorry you dont have enough money'


while True:
    Shop_Pasirinkimas = int(input("~ What would you like to buy?\n1. {medis}\n2. {weed}\n3. {gun}\n".format(medis=medis,weed=weed,gun=gun)))
    if len(Shop_Pasirinkimas) < 1:
        sys.exit("SOrry")
    elif Shop_Pasirinkimas == 1:
        clear()
        WoodPirkimo_Skaic = int(input("How much {medis} would you like to buy? ".format(medis=medis) + "Wood Now in Stock - {woodins}\n".format(woodins=Wood_InStock)))
        # Price per wood - 3.50
        ballance -= ( Wood_Price * WoodPirkimo_Skaic)
        Wood_Inventory += WoodPirkimo_Skaic
        Wood_InStock -= WoodPirkimo_Skaic
        print("~ In stock of {}, left {}".format(medis,Wood_InStock))
        print("~ Successfully bought {}, Your Ballance is {}\n".format(medis,ballance))
        print('Inventory:')
        print("~ You have {}, of {}\n".format(Wood_Inventory,medis))
        Buymore = input("Would you like to buy anything more?... Yes/No\n")
        if "Yes" in Buymore or "yes" in Buymore:
            continue
        elif "No" in Buymore or "no" in Buymore:
            break
        else:
            break
python
3个回答
0
投票

让我们来看看代码只有这一部分:

while True:
    Shop_Pasirinkimas = int(input("~ What would you like to buy?\n1. {medis}\n2. {weed}\n3. {gun}\n".format(medis=medis,weed=weed,gun=gun)))
    if len(Shop_Pasirinkimas) < 1:
        sys.exit("SOrry")

空用户输入将被传递到int(),但一个空字符串不能转换为int!因此,将引发一个错误。

你应该反而是不转换输入的第一个诠释,并把它作为一个字符串:

while True:
    Shop_Pasirinkimas = input("~ What would you like to buy?\n1. {medis}\n2. {weed}\n3. {gun}\n".format(medis=medis,weed=weed,gun=gun))
    if len(Shop_Pasirinkimas) < 1:
        sys.exit("SOrry")
    elif int(Shop_Pasirinkimas) == 1: # convert to int here
        clear()
        ...

0
投票

INT(X,基峰)函数将来自任何数量或字符串返回整数对象。基缺省值为10如果x是字符串,其相应的号码应该是相对于该基体的可能值范围内。

由于,没有任何输入,它被认为是无效的文字。

因此,请使用输入作为其可以轻松解决这个问题的字符串。


0
投票

如果用户没有输入一个整数,你会遇到Shop_Pasirinkimas = int(input(...))异常。除了int没有len()所以这也将导致错误len(Shop_Pasirinkimas)。你可以做到以下几点来完成你想什么

while True:
    try:
        Shop_Pasirinkimas = int(input("~ What would you like to buy?\n1. {medis}\n2. {weed}\n3. {gun}\n".format(medis=medis,weed=weed,gun=gun)))
        if Shop_Pasirinkimas < 1:
            sys.exit("SOrry")
        elif Shop_Pasirinkimas == 1:
            clear()
            WoodPirkimo_Skaic = int(input("How much {medis} would you like to buy? ".format(medis=medis) + "Wood Now in Stock - {woodins}\n".format(woodins=Wood_InStock)))
            # Price per wood - 3.50
            ballance -= ( Wood_Price * WoodPirkimo_Skaic)
            Wood_Inventory += WoodPirkimo_Skaic
            Wood_InStock -= WoodPirkimo_Skaic
            print("~ In stock of {}, left {}".format(medis,Wood_InStock))
            print("~ Successfully bought {}, Your Ballance is {}\n".format(medis,ballance))
            print('Inventory:')
            print("~ You have {}, of {}\n".format(Wood_Inventory,medis))
            Buymore = input("Would you like to buy anything more?... Yes/No\n")
            if "Yes" in Buymore or "yes" in Buymore:
                continue
            elif "No" in Buymore or "no" in Buymore:
                break
            else:
                break
    except ValueError:
        sys.exit("SOrry")
© www.soinside.com 2019 - 2024. All rights reserved.