首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的电影评分

Python中的电影评分
EN

Stack Overflow用户
提问于 2015-04-29 14:04:12
回答 3查看 2.6K关注 0票数 0

我正在编写一个程序来显示用户的电影评分。应用程序应允许用户输入五部不同电影的分级。每个评级应该是一个数字,从1到10只。应用程序应该使用由一行星号()组成的水平条形图来绘制评级图,.Each行应该包含一个到10个星号()。星号的数量取决于电影的评级。我不得不用元组来存储5部电影的名字。我在编程方面真的很新,所以请友好点。

到目前为止,这就是我所拥有的,但我正在挣扎:

代码语言:javascript
复制
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,)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-29 14:18:19

首先,元组并不适合这样做。你可以用一个列表代替。它非常类似,但值得使用方括号进行切换。

代码语言:javascript
复制
movies = ["Shrek", "Platoon", "Scary Movie II", "Gone With The Wind", "Harvey", "7:4"]

接下来,您希望获得for循环来检查每个电影,而不是用户允许放入的值的范围。您可以循环使用

代码语言:javascript
复制
for movie in movies:
    print ("Rating for movie: ", movie)

因此,现在列表的每个部分都将作为“电影”一个一个地存储在代码的其余部分中。

接下来,您需要首先将评级设置为0,以便在用户给出评级之前至少运行一次while循环。

不要使用输入,因为输入会以意想不到的方式运行。"raw_input“是您想要使用的,因为它接受任何输入作为字符串。

此外,使用int()时,如果有人键入不能转换为整数的内容,您将得到一个错误。所以你应该用一种叫做“尝试”的方法,除了。这些基本允许您的代码预测错误,并在出现错误时继续运行。

代码语言:javascript
复制
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.")

最后,您不需要循环完成最后的打印,只需将字符串乘以评级即可。

代码语言:javascript
复制
print ("*"*rating)
票数 0
EN

Stack Overflow用户

发布于 2015-04-29 14:15:26

如果我正确地理解了您的问题,您应该先在电影列表上迭代以获得评分,然后再迭代以打印电影名称及其评分:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2015-04-29 14:57:55

如果打印一个漂亮的表是问题所在,那么请尝试如下:

电影=“史莱克”、“排”、“恐怖电影2”、“飘”、“哈维”

评级= 1,2,3,4,5

num = 0,1,2,3,4

打印“星限从1到10”

在数字中的x:

代码语言:javascript
复制
my =int(raw_input("stars for  "+movies[x]+"-----"))


rating[x]= my

M=“+moviesx+”中的“星星”-“

打印30*"_“

在数字中的x:

代码语言:javascript
复制
print "|"+movies[x]+(20-len(movies[x]))*" "+"|"+rating[x]*"*"

print 30*"_"

如果你喜欢的话,就投大钱!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29946108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档