【问题标题】:TypeError? pairing lists?类型错误?配对清单?
【发布时间】:2013-02-15 16:45:52
【问题描述】:

无法计算距离? (TypeError: unsupported operand type(s) for /: 'int' and 'str') 建议让 python 识别哪个名称与哪个数字对应?这样我就可以让它打印正确的名字和获胜时间? (字符串?)

def main():
    print "~*~*~*~*~*~ Timbuktu Archery Contest ~*~*~*~*~*~"
    archerList = [] #list
    timeList = [] #list2
    distanceList = [] #list3
    name = raw_input ("Enter contestants first name: ")
    s = str(name)
    archerList.append(name)
    while name:
        time = raw_input ("Enter time (in milliseconds) for %s: " % s)
        timeList.append(time)
        name = raw_input ("Enter contestants first name: ")
        s = str(name)
        archerList.append(name)
    else:
        print "Slowest archer was " , min(timeList)
        print "Fastest archer was " , max(timeList)
    for time in timeList:
        distance = ((230/time)*681.1)
        distanceList.append(distance)

【问题讨论】:

  • raw_input 得到的一切都是一个字符串。您必须在代码中将其转换为适当的类型。
  • 运行代码后,您的 while 循环中似乎存在无限循环。它可能是我正在使用的平台(code.hs)。

标签: python


【解决方案1】:

首先不要使用time作为变量,它是一个python模块

其次

time = raw_input ("Enter time (in milliseconds) for %s: " % s) 这里time 是一个字符串

你应该把它转换成int,比如timeList.append(int(time)),然后用它来

distance = ((230/time)*681.1)

如果您不转换 min/max 也不会提供所需的输出

【讨论】:

  • 建议让python识别哪个名字和哪个数字?这样我就可以让它打印正确的名字和获胜时间? (str?)?
  • 你最好创建一个字典,以名称为键,时间为值,这样检索会容易得多
【解决方案2】:
time = raw_input ("Enter time (in milliseconds) for %s: " % s)

应该是:

time = int( raw_input ("Enter time (in milliseconds) for %s: " % s) )

甚至更好:

repeat = True
while repeat:
    try:
        time = int(raw_input ("Enter time (in milliseconds) for %s: " % s))
        repeat = False
    except ValueError:
        print "Invalid time."

【讨论】:

    【解决方案3】:

    由于其他人已经“直截了当地”给了你答案,这里是一些额外的信息。

    在计算之前,您必须先将时间转换为int 或更确切地说是float。 Python 是强类型语言。没有变量类型声明,但是,每个变量都有一个类型。

    你也应该写distance = ((230./time)*681.1)(注意230后面的“.”),这样你就可以将浮点数除以某个数字。浮点除法不同于整数除法。

    【讨论】:

    • 准确地说,Python中没有变量,只有类型对象的引用。
    • 有趣。这是一个非常强大的立场,但使一些特殊性更容易理解。
    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2013-01-16
    相关资源
    最近更新 更多