如何更改以列表形式输入 for 循环的变量

2024-01-18

我正在用 Python 编写一个基本程序,提示用户输入 5 个测试分数。然后,该程序会将每个测试分数转换为一个绩点(即 4.0、3.0、2.0...),然后取这些数字的平均值。

我为每个测试分数分配了自己的变量,并将它们输入到 for 循环中,如下所示:

for num in [score1, score2, score3, score4, score5]:
   if num >= 90
       print('Your test score is a 4.0')
   elif num < 90 and >= 80
   .
   .
   # and so on for each grade point.

现在,这可以很好地显示每个测试分数相当于成绩点的程度。但是,稍后在函数中我需要计算每个成绩点值的平均值。所以,我实际上想为当时通过 for 循环传递的特定变量分配一个成绩点值。那么,当score1通过for循环并确定适当的绩点时,我如何才能将该绩点实际分配给score1,然后在它们通过循环时分配给score2等等?

我希望这能让问题清楚。 Python 没有这种功能似乎很愚蠢,因为如果没有这种功能,您将无法重新定义通过 for 循环传递的任何变量(如果它是正在传递的列表的一部分)。


Not only are variables "in" the list (the list actually only stores values) updated, but the list isn't updated at all by this process. See Why doesn't assigning to the loop variable modify the original list? How can I assign back to the list in a loop? https://stackoverflow.com/questions/20688324 for that version of the question.


“Python 不具备这种功能似乎很愚蠢,因为如果没有这种功能,你将无法重新定义通过 for 循环传递的任何变量(如果它是正在传递的列表的一部分)。”- 这就是大多数编程语言的工作原理。允许这种功能是很糟糕的,因为它会产生副作用,从而使代码变得迟钝。

此外,这是一个常见的编程陷阱,因为您应该将数据保留在变量名称之外: see http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html(尤其是类似问题的列表;即使您不处理变量名称,您至少正在尝试处理变量名称空间)。补救措施是在“更高一级”工作:在这种情况下是一个列表或集合。这就是为什么你原来的问题不合理。 (某些版本的 python 可以让你破解locals()字典,但这是不受支持和无记录的行为,而且风格非常糟糕。)


但是,您可以强制 python 使用副作用,如下所示:

scores = [99.1, 78.3, etc.]
for i,score in enumerate(scores):
    scores[i] = int(score)

以上将把分数向下舍入scores大批。这正确的方法然而,要做到这一点(除非您正在使用数亿个元素)是重新创建scores像这样的数组:

scores = [...]
roundedScores = [int(score) for score in scores]

如果你有很多事情想要做来获得分数:

scores = [..., ..., ...]

def processScores(scores):
    '''Grades on a curve, where top score = 100%'''
    theTopScore = max(scores)

    def processScore(score, topScore):
        return 100-topScore+score

    newScores = [processScore(s,theTopScore) for s in scores]
    return newScores

旁注:如果你正在进行浮点计算,你应该from __future__ import division或使用 python3,或转换为float(...)明确地。


如果你确实想修改传入的内容,可以传入一个可变对象。您传入的数字是不可变对象的实例,但如果您有:

class Score(object):
    def __init__(self, points):
        self.points = points
    def __repr__(self):
        return 'Score({})'.format(self.points)

scores = [Score(i) for i in [99.1, 78.3, ...]]
for s in scores:
    s.points += 5  # adds 5 points to each score

这仍然是一种非功能性的做事方式,因此容易出现副作用引起的所有问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改以列表形式输入 for 循环的变量 的相关文章

  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • Python 2.7 中的断言对我来说不起作用示例assertIn

    我的 Mac 上安装了 python 2 7 通过在终端中运行 python v 进行验证 当我尝试使用任何新的 2 7 断言方法时 我收到 AtributeError 我看过http docs python org 2 library u
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • pytest:同一接口的不同实现的可重用测试

    想象一下我已经实现了一个名为的实用程序 可能是一个类 Bar在一个模块中foo 并为其编写了以下测试 测试 foo py from foo import Bar as Implementation from pytest import ma
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 在 Django 查询中使用 .extra(select={...}) 引入的值上使用 .aggregate() ?

    我正在尝试计算玩家每周玩游戏的次数 如下所示 player game objects extra select week WEEK games game date aggregate count Count week 但姜戈抱怨说 Fiel
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • Android - 按钮彼此相邻

    我无法将按钮放在一起 我已经研究过这个话题 但似乎没有任何帮助 这是我的 XML 代码 Link http pastebin com d6gxDLTU 现在的显示方式如下 我的屏幕 https i stack imgur com ocagu
  • 使用javascript从mp3读取id3标签

    我知道以前已经有人问过这个问题 但我的条件有点不同 我正在制作一个 Chrome 应用程序 因此我可以访问它支持的所有最新 JavaScript 文件 api 而不必担心兼容性 更重要的是 我真的很想自己做这件事 即没有任何图书馆 教程或指
  • PostgreSQL 跨服务器查询? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法可以查询位于 服务器 2 上的数据库并获取 服务器 1 中的数据 那就是将一组记录从远程服务器返回到我的本地服务器 PS 不
  • char数组前面的&号会影响scanf吗?合法吗?

    我们平时输入字符串的时候是这样做的 include
  • Firefox 附加组件 window.navigator.userAgent 错误:窗口未定义

    我想得到userAgent https developer mozilla org en US docs Web API NavigatorID userAgent并想对其进行一些解析 我的代码是 var userAgentInfo use
  • SwiftUI - 如何添加 Scenekit 场景

    如何将 Scenekit 场景添加到 SwiftUI 视图 我使用标准船舶场景示例尝试了以下 Hello World import SwiftUI import SceneKit struct SwiftUIView View var bo
  • 以编程方式更改和刷新图标(无需重新启动)

    当我手动替换图标 即不是从资源管理器中的 文件夹选项 窗口 时 图标不会更新 例如 如果我执行此批处理代码 REG ADD HKCR testfile DefaultIcon ve d C test ico 0 f 图标在文件夹选项的列表中
  • EC2 服务器上的 MongoDB 还是 AWS SimpleDB?

    什么场景更有意义 托管多个安装了 MongoDB 的 EC2 实例 还是使用 Amazon SimpleDB Web 服务 当有多个带有 MongoDB 的 EC2 实例时 我遇到了自己设置实例的问题 当使用 SimpleDB 时 我遇到了
  • 我怎样才能知道哪里的内存段全为零

    我的意思是 我分配了一段内存 也许是 1k 也许是 20 字节 假设指针是pMem我怎样才能知道内容pMem所提及的就是全部Zero or 0 我知道memcmp但第二个参数应该是另一个内存地址 谢谢 正如其他人已经建议的那样 你可能想要m
  • 上传到 Azure Blob 存储时设置内容类型

    我正在使用 Azure Blob 存储客户端库上传静态站点 blob service client BlobServiceClient from connection string az string blob client blob se
  • 当应用程序为 preApi9 时,Google 下载器的 eclipse 库项目中出现 styles.xml 错误

    我正在使用新的谷歌扩展包内容 下载器的谷歌库项目有一个特殊的values v9 styles xml 文件用于通知文本属性 当使用该库的应用程序是 preAPI9 时 这会导致错误 至少对我来说 它指的是一些仅在api9中出现的样式东西 我
  • 如果表单位于具有 ng-if 条件的 div 内,则无法读取未定义的属性“$valid”

    我有一个使用 ng if 在 div 内形成表单健康 状况 最初表单是关闭的 单击按钮后 将显示表单 但在提交表格时 我得到Cannot read property valid of undefined错误 如果我更改ngif和ng sho
  • 将树视图中的复选框与使用远程数据源的复选框绑定

    我在这里布置一个情况 我遇到一种情况 我需要在表单上显示几个复选框 这些复选框本质上是分层的 其中一些属于一个类别 另一些属于第二个类别 依此类推 我的第一个想法是使用带有复选框的 KendoUI 树视图 我有几个与此相关的问题 显然 存在
  • 如果 C/C++ 定义了标准 ABI,它们会“失去”什么?

    标题说明了一切 我专门谈论 C C 因为两者都认为这是 实现问题 我认为 定义一个标准接口可以轻松地在其上构建模块系统 以及许多其他好处 如果 C C 定义了标准 ABI 它们会 失去 什么 在每个处理器上以最自然的方式实现事物的自由 我认
  • 计算旋转矩形的顶点

    我正在尝试计算旋转矩形 2D 的顶点 如果矩形没有旋转 这很容易 我想出了这部分 如果矩形已经旋转 我想到了两种可能的方法来计算顶点 弄清楚如何将顶点从本地 对象 模型空间 我在下面弄清楚的 转换到世界空间 老实说 我不知道 如果这是最好的
  • 如何在 Docker 容器内设置 Java 堆大小 (Xms/Xmx)?

    在提出这个问题时 Docker 看起来还很新 在网上还没有这个问题的答案 我唯一找到的地方是本文 http blog takipi com ignore the hype 5 docker misconceptions java devel
  • 来自 Android 设备的时间戳,格式为 hh:mm:ss:SS

    我需要在 Android 中记录传感器数据 为了将值存储在数据库中 我需要时间戳作为主键 格式为 hh mm ss SS 其中 SS 代表毫秒值 当我尝试使用 SensorEvent timestamp 使用下面的代码 时 我无法从 Dat
  • Maxima:将矩阵转换为列表

    我通过以下方式将 Maxima 中的列表转换为矩阵 DataL 1 2 2 4 3 6 4 8 DataM apply matrix DataL 另一种方式该怎么做 如何转换给定矩阵DataM进入列表DataL 我知道现在已经很晚了 但就其
  • 如何计算两个 chrono::DateTime 之间的持续时间?

    我正在使用chrono https crates io crates chrono板条箱并想要计算Duration两个之间DateTimes use chrono Utc use chrono offset TimeZone let sta
  • 如何更改以列表形式输入 for 循环的变量

    我正在用 Python 编写一个基本程序 提示用户输入 5 个测试分数 然后 该程序会将每个测试分数转换为一个绩点 即 4 0 3 0 2 0 然后取这些数字的平均值 我为每个测试分数分配了自己的变量 并将它们输入到 for 循环中 如下所