为什么我的代码在自动标记时会出现此ValueError?

时间:2016-03-26 22:51:05

标签: python

所以,我的代码基于学习网站中的一个模块,我使用这个模块称为Grok,这些是为了传递到下一个阶段而必须创建的要求

The Requirements (left-hand-side of photo) and Auto Marker Error (bottom right handside)

有问题的错误是;

使用多个字母测试较长的案例。您的提交引发了ValueError类型的异常。这发生在program.py。第4行。

我似乎无法弄清楚如何解决这个问题以使其正确标记,但我的代码非常完美。

我的代码

import collections
collect = collections.defaultdict(list)
order = input('Name: ')
name, surname = order.split(' ', 1)
collect[surname].append(name)

mail = open('mail.txt', encoding="UTF-8").read()
mail = mail.split('\n')
letter = 0
package = 0
count = mail.count(' '.join(collect[surname]) + ' ' + surname + ',Letter')
count2 = mail.count(' '.join(collect[surname]) + ' ' + surname + ',Package')

for i in collect:
  if (' '.join(collect[surname]) + ' ' + surname + ',Letter') in mail:
    letter += 1 * count
  if (' '.join(collect[surname]) + ' ' + surname + ',Package') in mail:
    package += 1 * count2

if package == 0 and letter == 0:
  print("No mail")

if letter > 1:
 print(count, "Letters")

if letter == 1:
 print(count, "Letter")

if letter == 0 and package != 0:
 print("No Letters")

if package > 1:
 print(count2, "Packages")

if package == 1:
  print(package, "Package")

if package == 0 and letter != 0:
  print("No Packages")

2 个答案:

答案 0 :(得分:0)

屏幕截图中第三个输入的示例第二行中只有一个空格。

答案 1 :(得分:0)

对于第4行(name, surname = order.split(' ', 1)),如果order中没有空格,则元组解包将引发ValueError。

编辑:

order = input('Name: ')

# was name, surname = order.split(' ', 1)
try:
    name, surname = order.split(' ', 1)
except ValueError:
    name, surname = order, ""

collect[surname].append(name)