处理定义

时间:2013-08-14 02:50:26

标签: python python-3.x

我试图获得预期的价值,但我似乎遇到了麻烦。我将输入值转换为整数,我认为这是错误的来源。我知道int不能将空字符串转换为整数,但在测试时我有一个值。

错误:

 TypeError: 'int' object is not subscriptable

我该怎么做才能解决这个问题?

def print_menu():
print('1. Add a Stock')
print('2. Recommend Sale')
print('3. Quit')
print()

expected_value = {}

menu_choice = 0
print_menu()
while menu_choice != 3:
    menu_choice = int(input("Type in a number (1-3): "))
    if menu_choice == 1:
        print("Add Name, Prices, Risk, Shares")
        name = input("Name: ")
        price = input("Buyers Price: ")
        Cprice = input("Current Price: ")
        srisk = input("Risk: ")
        sshares = input("Shares: ")
       Expected_Sale_value = ((int(Cprice) - int(price)) - int(srisk) * int(Cprice)) *    int(sshares)
        expected_value[name] = Expected_Sale_value
    elif menu_choice == 2:
        print("Expected Sale values")
        for x in expected_value.keys():
            print("Stock: ", x, "\tExpected value:", Expected_Sale_value[x])
        print()
    elif menu_choice != 3:
        print_menu()

我是python的新手,我知道python有它的技巧!说我问是否有任何提示,或者你看到我可以改进的东西,请给我见解。

实施例(IDLE):

  1. 添加股票
  2. 推荐促销
  3. 退出
  4. 输入数字(1-3):1
    添加名称,价格,风险,股份
    姓名:Google
    买家价格:21
    当前价格:20
    风险:1
    股票:2
    输入数字(1-3):2
    预期销售价值
    追溯(最近的呼叫最后):
      文件“”,第25行,中     print(“Stock:”,x,“\ t预期值:”,Expected_Sale_value [x])
    TypeError:'int'对象不可订阅

2 个答案:

答案 0 :(得分:1)

for x in expected_value.key():

应该是

for x in expected_value.keys():

也使用raw_input

答案 1 :(得分:1)

如果您使用错误的变量名称,则会出现错误。以下是相关部分:

for x in expected_value.keys():
    print("Stock: ", x, "\tExpected value:", Expected_Sale_value[x])

print语句中,您正在索引变量Expected_Sale_value而不是expected_valueExpected_Sale_value是一个整数,而不是字典,所以你得到一个例外。

稍微更“Pythonic”的循环方式是:

for key, value in expected_value.items():
    print("Stock: ", key, "\tExpected value:", value)