len(int)<1时退出

时间:2019-02-04 17:16:10

标签: python

我是python的新手,如果Input为空或小于One 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

3 个答案:

答案 0 :(得分:0)

int(x,base)函数将从任何数字或字符串返回整数对象。基数默认为10。如果x是字符串,则其相应数字应在该基数的可能值之内。

由于没有输入任何内容,因此被视为无效文字。

因此,请使用输入内容作为字符串,这样可以轻松解决问题。

答案 1 :(得分: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!因此引发了错误。

相反,您应该先不要将输入转换为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()
        ...

答案 2 :(得分: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")