首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python : pop()方法能连续工作3次吗?

Python : pop()方法能连续工作3次吗?
EN

Stack Overflow用户
提问于 2020-12-27 15:09:22
回答 1查看 79关注 0票数 0

我正在处理Python列表操作。我试图从用户那里获取大量输入,并将其附加到列表中。

之后,我将验证列表元素是否为浮动值,如果不是,我将将消息打印为无效输入。此外,我想消除如果用户输入的值是42.195从列表。

如果我给上述值3次,我的代码将跳过42.195的第三次存在。我怎么解决这个问题?任何帮助都将不胜感激。

代码语言:javascript
复制
def isfloat(value):
    try:
        float(value)
        return True
    except ValueError:
        return False

user_input = input("Enter the distance covered by racers in Marathon (Kilometers) please \n (press q to terminate):")
R = []


while user_input != 'q':
    R.append(user_input)
    user_input = input("Enter the distance covered by racers in Marathon (Kilometers) please \n (press q to terminate):")

print("R",R)
valid = False

def validate(R):
    for i in R:
        if isfloat(i) == False:
            print('Invalid Input')
            return False
        elif (float(i) < 0):
            print("Invalid Input")
            return False
        elif (float(i) > 42.195):
            print("Invalid Input")
            return False
        elif (float(i) == 42.195):
            x = R.index(i)
            print('x',x)
            R.pop(x)
    return True


if validate(R):
    print('R2:',R)
    R.sort(reverse= True)
    print(R[0:3])
    
    
    if validate(R):
      print('R2:',R)
      R.sort(reverse= True)
      print(R[0:3])

样本输入

代码语言:javascript
复制
42.195
42.195
42.195
33.25
40
41.2
38.9
37.5
q
EN

回答 1

Stack Overflow用户

发布于 2020-12-27 17:08:22

从您的函数中,您可以删除删除42.195的出现的elif部分,并使用列表理解器重新分配原始列表,而不需要值42.195。

代码语言:javascript
复制
R = [i for i in R if float(i) != 42.195]

这将给出一个没有出现数字42.195的列表。

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

https://stackoverflow.com/questions/65467159

复制
相关文章

相似问题

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