我正在编写一个程序来显示用户的电影评分。应用程序应允许用户输入五部不同电影的分级。每个评级应该是一个数字,从1到10只。应用程序应该使用由一行星号()组成的水平条形图来绘制评级图,.Each行应该包含一个到10个星号()。星号的数量取决于电影的评级。我不得不用元组来存储5部电影的名字。我在编程方面真的很新,所以请友好点。
到目前为止,这就是我所拥有的,但我正在挣扎:
movies = ("Shrek", "Platoon", "Scary Movie II", "Gone With The Wind", "Harvey", "7:4")
rating = int(input ("Enter Movie Rating: "))
for i in range(1,11):
print ("Rating for movie: ", movies[rating])
while rating < 0 or rating > 10:
ratings = int(input("Enter movie rating: ", rating))
for j in range(rating):
print ("*"*5,)发布于 2015-04-29 14:18:19
首先,元组并不适合这样做。你可以用一个列表代替。它非常类似,但值得使用方括号进行切换。
movies = ["Shrek", "Platoon", "Scary Movie II", "Gone With The Wind", "Harvey", "7:4"]接下来,您希望获得for循环来检查每个电影,而不是用户允许放入的值的范围。您可以循环使用
for movie in movies:
print ("Rating for movie: ", movie)因此,现在列表的每个部分都将作为“电影”一个一个地存储在代码的其余部分中。
接下来,您需要首先将评级设置为0,以便在用户给出评级之前至少运行一次while循环。
不要使用输入,因为输入会以意想不到的方式运行。"raw_input“是您想要使用的,因为它接受任何输入作为字符串。
此外,使用int()时,如果有人键入不能转换为整数的内容,您将得到一个错误。所以你应该用一种叫做“尝试”的方法,除了。这些基本允许您的代码预测错误,并在出现错误时继续运行。
rating = 0
while rating < 1 or rating > 10:
try:
ratings = int(raw_input("Enter movie rating: "))
except ValueError:
print ("That's not a valid number.")最后,您不需要循环完成最后的打印,只需将字符串乘以评级即可。
print ("*"*rating)发布于 2015-04-29 14:15:26
如果我正确地理解了您的问题,您应该先在电影列表上迭代以获得评分,然后再迭代以打印电影名称及其评分:
movies = ("Shrek", "Platoon", "Scary Movie II", "Gone With The Wind", "Harvey", "7:4")
ratings = []
for m in movies:
ratings.append( input ("Enter Rating for {0}: ".format(m)) )
for m,r in zip(movies,ratings):
print "{0:<20} : {1}".format(m,'*'*r)另外,您也不需要对输入使用int(),因为有一个隐式eval
发布于 2015-04-29 14:57:55
如果打印一个漂亮的表是问题所在,那么请尝试如下:
电影=“史莱克”、“排”、“恐怖电影2”、“飘”、“哈维”
评级= 1,2,3,4,5
num = 0,1,2,3,4
打印“星限从1到10”
在数字中的x:
my =int(raw_input("stars for "+movies[x]+"-----"))
rating[x]= myM=“+moviesx+”中的“星星”-“
打印30*"_“
在数字中的x:
print "|"+movies[x]+(20-len(movies[x]))*" "+"|"+rating[x]*"*"
print 30*"_"如果你喜欢的话,就投大钱!
https://stackoverflow.com/questions/29946108
复制相似问题