首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python列表新手

python列表新手
EN

Stack Overflow用户
提问于 2012-12-10 06:59:24
回答 3查看 82关注 0票数 1

这是我当前的代码:

代码语言:javascript
复制
while True:
        try:
            mylist = [0] * 7
            for x in range(7):
                    sales = float(input("Sales for day:"))
                    mylist[x] = sales
                    if  sales < 0:
                        print ("Sorry,invalid. Try again.")
        except:
            print ("Sorry, invalid. Try again.")
        else:
            break

print (mylist)

best = max(sales)
worst = min(sales)

print ("Your best day had", best, "in sales.")
print ("Your worst day had", worst, "in sales.")

当我运行它时,我得到这样的结果:

代码语言:javascript
复制
Sales for day:-5
Sorry,invalid. Try again.
Sales for day:-6
Sorry,invalid. Try again.
Sales for day:-7
Sorry,invalid. Try again.
Sales for day:-8
Sorry,invalid. Try again.
Sales for day:-9
Sorry,invalid. Try again.
Sales for day:-2
Sorry,invalid. Try again.
Sales for day:-5
Sorry,invalid. Try again.
[-5.0, -6.0, -7.0, -8.0, -9.0, -2.0, -5.0]
Traceback (most recent call last):
  File "C:/Users/Si Hong/Desktop/HuangSiHong_assign9_part.py", line 45, in <module>
    best = max(sales)
TypeError: 'float' object is not iterable

我不太确定如何编码,使列表不接受负值,因为我只需要0或更大的值。

我不确定如何解决TypeError问题,以便像我的代码中那样打印最小值和最大值

我的最后一个问题是,如果我想要找到用户输入的七个输入的平均值,我应该如何从列表中提取这些值

非常感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-10 07:03:16

最好的办法是将数据检查放到while循环中。这将继续循环此值,直到满足您的条件(>0)

此外,对于用户来说,这可能会让他们弄清楚他们输入的是哪天的结果。另外,您需要使用最大/最小值列表,而不是单个值。将它们放在一起,并进行以下更改:

代码语言:javascript
复制
        for x in range(7):
            sales=-1
            while (sales<0):
                sales = float(input("Sales for day {0}".format(x)))
                mylist[x] = sales
                if  sales < 0:
                    print ("Sorry,invalid. Try again.")

并在以后进行以下更改:

代码语言:javascript
复制
best = max(my_list)
worst = min(my_list)
票数 3
EN

Stack Overflow用户

发布于 2012-12-10 07:03:42

你的意思是说:

代码语言:javascript
复制
best = max(my_list)
worst = min(my_list)

至于有效性检查,存在的问题是,如果输入无效,仍然会继续检查x的下一个值。

票数 3
EN

Stack Overflow用户

发布于 2012-12-11 09:04:44

也许(未测试):

代码语言:javascript
复制
mylist = []
while len(mylist) < 7:
    sales = float(input("Sales for day %s:" % str(len(mylist)+1)))
    if  sales >= 0:
        mylist.append(sales)
    else:
        print ("Sorry,invalid. Try again.")

print (mylist)

best = max(mylist)
worst = min(mylist)

print ("Your best day had", best, "in sales.")
print ("Your worst day had", worst, "in sales.")
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13792781

复制
相关文章

相似问题

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