我已经设置了以下for循环来接受5个测试分数。我希望循环提示用户输入5个不同的分数。现在我可以通过输入“请输入你的下一个测试分数”输入来做到这一点,但我宁愿为每个输入的分数提示输入相关的数字。
因此,对于第一个输入,我希望它显示“请输入您的测试1的分数”,然后为第二个分数显示“请输入您的测试2的分数”。当我尝试运行此循环时,出现以下错误:
Traceback (most recent call last):
File "C:/Python32/Assignment 7.2", line 35, in <module>
main()
File "C:/Python32/Assignment 7.2", line 30, in main
scores = input_scores()
File "C:/Python32/Assignment 7.2", line 5, in input_scores
score = int(input('Please enter your score for test', y,' : '))
TypeError: input expected at most 1 arguments, got 3
这是代码
def input_scores():
scores = []
y = 1
for num in range(5):
score = int(input('Please enter your score for test', y, ': '))
while score < 0 or score > 100:
print('Error --- all test scores must be between 0 and 100 points')
score = int(input('Please try again: '))
scores.append(score)
y += 1
return scores
答案 0 :(得分:6)
一种简单(正确!)的方式来写你想要的东西:
score = int(input('Please enter your score for test ' + str(y) + ': '))
答案 1 :(得分:2)
因为input
只需要一个参数而你提供三个参数,所以期望它将它们神奇地连接在一起: - )
您需要做的是将三部分字符串构建到一个参数中,例如:
input("Please enter your score for test %d: " % y)
这就是Python做sprintf
的方式 - 键入字符串构造。举例来说,
"%d / %d = %d" % (42, 7, 42/7)
是一种获取这三个表达式并将它们转换为一个字符串"42 / 7 = 6"
的方法。
有关其工作原理的说明,请参阅here。您还可以使用显示here的更灵活的方法,可以按如下方式使用:
input("Please enter your score for test {0}: ".format(y))