为什么randint不能在矩阵中工作,而是在其他地方工作? (Noob Python)

时间:2013-10-21 03:22:59

标签: python matrix

我一直在制作一张Python座位表,显示每个座位的缺席情况。为了列出示例缺席列表,我决定使用randint生成0-15之间的随机值,但是当我在矩阵中尝试它时,它不起作用。然而,在矩阵外使用的同一行只是打印工作正常..我该如何解决这个问题?

这是我的代码:

import random

student0Abs_EX = random.randint(0,15)
student1Abs_EX = random.randint(0,15)
student2Abs_EX = random.randint(0,15)
student3Abs_EX = random.randint(0,15)
student4Abs_EX = random.randint(0,15)
student5Abs_EX = random.randint(0,15)
student6Abs_EX = random.randint(0,15)
student7Abs_EX = random.randint(0,15)
student8Abs_EX = random.randint(0,15)
student9Abs_EX = random.randint(0,15)

print("\n\nExample Absences: \n")
matrix = [[student0Abs_EX + '\t\t', student1Abs_EX + '\t\t', student2Abs_EX + '\t\t'], [student3Abs_EX + '\t\t', student4Abs_EX + '\t\t', student5Abs_EX + '\t\t'], [student6Abs_EX + '\t\t', 'Empty' + '\t\t', student7Abs_EX + '\t\t'], ['Empty' + '\t\t', student8Abs_EX+ '\t\t', student9Abs_EX + '\t\t']]
for row in matrix:
    print ' '.join(row)

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

random.randint功能没有任何问题。问题是,当您执行以下操作之一时,您尝试将intstr添加到一起:student0Abs_EX + '\t\t'

一种解决方法是将所有内容更改为str(student0Abs_EX) + '\t\t'

str函数将int转换为相应的字符串。

答案 1 :(得分:0)

因为您不能仅仅连接intstr

Type "help", "copyright", "credits" or "license" for more information.
>>> 1 +'2'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

似乎你只需要一个随机矩阵的文本表示。尝试其他方式来创建而不是[student0Abs_EX + '\t\t', student1Abs_EX + '\t\t', student2Abs_EX + '\t\t'], ...