【问题标题】:Dealing with Definitions处理定义
【发布时间】:2013-08-14 02:50:25
【问题描述】:

我正在尝试获得预期值,但我似乎遇到了麻烦。我将输入值转换为整数,我认为这就是错误的来源。我知道 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 有它的技巧!说我问是否有任何提示,或者您看到我可以改进的地方,请给我见解。

示例(空闲):

  1. 添加股票
  2. 推荐销售
  3. 退出

输入数字 (1-3):1
添加名称、价格、风险、股份
名称:谷歌
买家价格:21
当前价格:20
风险:1
分享:2
输入数字 (1-3):2
预期销售价值
回溯(最近一次通话最后一次):
文件“”,第 25 行,在
print("库存:", x, "\t预期价值:", Expected_Sale_value[x])
TypeError: 'int' 对象不可下标

【问题讨论】:

  • 您在提示中实际输入了什么?另外,请提供错误的完整堆栈跟踪。
  • 我会在一分钟内编辑我的问题,抱歉不清楚。

标签: python python-3.x


【解决方案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)

【讨论】:

  • 纠正了所有错误,但它仍然给我留下了一个问题:使用整数时,我可以在输入中使用小数吗?
  • @Kelsey:如果你想处理非整数值,你只需要在代码的另一部分更改Expected_Sale_value 的计算。将部分或全部 int 调用替换为对 float 的调用(或者可能来自 decimal 模块的 Decimal,如果您需要以一定速度为代价的精确计算)。
【解决方案2】:
for x in expected_value.key():

应该是

for x in expected_value.keys():

也可以使用raw_input

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 2014-02-23
  • 2011-01-30
  • 2021-10-10
  • 2018-05-28
相关资源
最近更新 更多