GVKun编程网logo

在Python中舍入一个数字,但保持零结尾(在python中舍入一个数字,但保持零结尾)

16

在本文中,您将会了解到关于在Python中舍入一个数字,但保持零结尾的新资讯,同时我们还将为您解释在python中舍入一个数字,但保持零结尾的相关在本文中,我们将带你探索在Python中舍入一个数字,

在本文中,您将会了解到关于在Python中舍入一个数字,但保持零结尾的新资讯,同时我们还将为您解释在python中舍入一个数字,但保持零结尾的相关在本文中,我们将带你探索在Python中舍入一个数字,但保持零结尾的奥秘,分析在python中舍入一个数字,但保持零结尾的特点,并给出一些关于Python-人类的数字,带有字母数字,但在pyQt和__lt__运算符中、python命令行交互 引导用户输入一个数字、python如何输入一个数字、Python舍入问题需要将每个位数舍入一半的实用技巧。

本文目录一览:

在Python中舍入一个数字,但保持零结尾(在python中舍入一个数字,但保持零结尾)

在Python中舍入一个数字,但保持零结尾(在python中舍入一个数字,但保持零结尾)

我一直在研究一个脚本,该脚本从Excel电子表格中获取数据,四舍五入并删除小数点,例如2606.89579999999变为26069。但是,即使有可能将数字四舍五入到两位小数尾随零,所以2606.89579999999应该变成260690。

我目前拥有它,因此i可以从Excel中的单元格中获取数据,并将其四舍五入到小数点后两位(i = round(i,2)),这在上述示例中为我提供了一个小数点。

我试图弄清楚如何使其与一起使用Decimal,但似乎无法使其正常工作。

舍入后的所有其他数字(如果舍入后的值不以‘0’结尾)可以与一起使用round(i, 2),但是如果这些数字恰好以*
.x0结尾,则该0会掉落并与数据混淆。

答案1

小编典典

在谈论尾随零时,这是一个关于字符串表示的问题,您可以使用

>>> "%.2f" % round(2606.89579999999, 2)''2606.90''

或使用具有format功能的现代风格:

>>> ''{:.2f}''.format(round(2606.89579999999, 2))''2606.90''

并用replace或删除点translate_指的是python控制台中先前命令的结果):

>>> _.translate(None, ''.'')''260690''

请注意,此处不需要四舍五入,因为.2f格式适用于相同的四舍五入:

>>> "%.2f" % 2606.89579999999''2606.90''

但是正如您提到的excel一样,您可能会选择滚动自己的舍入函数,或使用小数,因为float.round浮点表示法会导致奇怪的结果:

>>> round(2.675, 2)2.67>>> round(2606.89579999999, 2)2606.89

用十进制使用量化:

>>> from decimal import *>>> x = Decimal(''2606.8950000000001'')# Decimal(''2606.8950000000001'')>>> ''{}''.format(x.quantize(Decimal(''.01''), rounding=ROUND_HALF_EVEN))''2606.90''

对于您的原始任务,它变为:

>>> x = Decimal(''2606.8950000000001'')>>> int((x*100).quantize(1, rounding=ROUND_HALF_EVEN))260690

四舍五入的原因是Decimal

>>> x = Decimal(2606.8950000000001)# Decimal(''2606.89499999999998181010596454143524169921875'') # internal float repr

Python-人类的数字,带有字母数字,但在pyQt和__lt__运算符中

Python-人类的数字,带有字母数字,但在pyQt和__lt__运算符中

我有数据行,希望将它们显示如下:

11a1a22399.91010a11100100ababaBAB

当我使用pyQt并且代码包含在TreeWidgetItem中时,我要解决的代码是:

def __lt__(self, otherItem):    column = self.treeWidget().sortColumn()    #return self.text(column).toLower() < otherItem.text(column).toLower()    orig = str(self.text(column).toLower()).rjust(20, "0")    other = str(otherItem.text(column).toLower()).rjust(20, "0")    return orig < other

答案1

小编典典

这可能对您有帮助。编辑正则表达式以匹配您感兴趣的数字模式。Mine将把包含的所有数字字段都.视为浮点数。用于swapcase()颠倒您的情况,以便排''A''在后面''a''

更新 :改进:

import redef _human_key(key):    parts = re.split(''(\d*\.\d+|\d+)'', key)    return tuple((e.swapcase() if i % 2 == 0 else float(e))            for i, e in enumerate(parts))nums = [''9'', ''aB'', ''1a2'', ''11'', ''ab'', ''10'', ''2'', ''100ab'', ''AB'', ''10a'',    ''1'', ''1a'', ''100'', ''9.9'', ''3'']nums.sort(key=_human_key)print ''\n''.join(nums)

输出:

11a1a22399.91010a11100100ababaBAB

更新
:(响应评论)如果您有一个类Foo并且想要__lt__使用_human_key排序方案来实现,则只需返回_human_key(k1) <_human_key(k2);的结果即可。

class Foo(object):    def __init__(self, key):        self.key = key    def __lt__(self, obj):        return _human_key(self.key) < _human_key(obj.key)>>> Foo(''ab'') < Foo(''AB'')True>>> Foo(''AB'') < Foo(''AB'')False

因此,对于您的情况,您将执行以下操作:

def __lt__(self, other):    column = self.treeWidget().sortColumn()    k1 = self.text(column)    k2 = other.text(column)    return _human_key(k1) < _human_key(k2)

其他比较运算符(__eq____gt__等)将以相同的方式实现。

python命令行交互 引导用户输入一个数字

python命令行交互 引导用户输入一个数字

代码

以下代码将在命令行中,引导用户选择一个数字,并反馈用户输入的值

# -*- coding:UTF-8 -*-
"""
@author: dyy
@contact: douyaoyuan@126.com
@time: 2023/11/22 15:51
@file: 引导用户输入一个数字.py
@desc: xxxxxx
"""

# region 引入必要的依赖
import os

模块名 = ''DebugInfo''
try:
    from DebugInfo.DebugInfo import *
except ImportError as impErr:
    print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")
    print(f"尝试安装 {模块名} 模块:")
    try:
        os.system(f"pip install {模块名}")
    except OSError as osErr:
        print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")
        exit(0)
    else:
        try:
            from DebugInfo.DebugInfo import *
        except ImportError as impErr:
            print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")
            exit(0)

# endregion

看板: 打印模板 = 打印模板()


def 大于0小于120(内容: str or int) -> bool:
    if not isinstance(内容, int):
        内容 = str(内容 if 内容 else '''').strip()
        if not 内容:
            return False
        elif not 内容.isdigit():
            return False
        else:
            内容 = int(内容)
    return 0 < 内容 < 120

用户年龄 = 交互接口类().发起文本交互(输入提示=''请输入您的年龄:'', 限定范围=大于0小于120, 画板=看板.副本)

if ''0'' == 用户年龄:
    看板.消息(红字(''您拒绝输入年龄''))
else:
    看板.消息(f''用户年龄是: {绿字(用户年龄)}'')

以上代码中:

  • 我们准备了方法,用户判断用户的输入是否符合预期
  • 然后我们向用户发起文本交互,将使用我们提供的方法判断是否符合预期
  • 当用户输入 0 时,我们提示用户放弃了输入
  • 当用户输入一个非整数或者非数字时,我们提示用户输入无效
  • 当用户输入一个小于0的数字时,我们提示用户输入无效
  • 当用户输入一个大于120的数字时,我们提示用户输入无效
  • 当用户输入一个 (0,120) 的整数时,我们返回用户的输入

用户拒绝输入

当用户输入 0 并回车时,我们提示用户拒绝了选择,如下
20231122160921

用户输入了一个非整数或者非数字时

当用户输入非整数或者非数字时,我们提示用户输入无效,如下
20231122165028

用户输入一个小于0的数字时

当用户输入一个小于 0 的数字时,我们提示用户输入无效,如下
20231122165223

用户输入了一个大于120的数字时

当用户输入一个大于120的数字时,我们提示用户输入无效,如下
20231122165312

用户输入一个 大于0 小于120 的数字时

当用户输入一个 0-120 的数字时,我们反馈提示用户的输入,如下
20231122165444

小结

以上就是今天分享的引导用户输入一个数字的例子了,通过这种方法,我们可以在命令行中实现优良的交互体验,在保持命令行高效的同时,又保留了窗口界面的易用性,同时约束了用户输入的多变性。

python如何输入一个数字

python如何输入一个数字

在 python 中,通过 input() 获取用户输入的字符串,再使用 int() 或 float() 函数转换为数字类型。若输入为整数,可使用 int() 将其转换为整数,例如:number = int(input("请输入一个数字:"))。若输入为浮点数,可使用 float() 将其转换为浮点数,例如:number = float(input("请输入一个数字:"))。需要注意,非数字输入会引发 valueerror,int() 会舍去小数部分,而 float() 则包含小数部分。

python如何输入一个数字

Python 中输入数字

在 Python 中,使用 input() 函数从用户那里获取输入。该函数会读取用户在命令行的输入并将其作为字符串返回。要获取数字,需要将输入转换为数字类型。

方法:

  1. 使用 int() 函数:

    立即学习“Python免费学习笔记(深入)”;

    将输入字符串转换为整数,例如:

    number = int(input("请输入一个数字:"))
    登录后复制
  2. 使用 float() 函数:

    将输入字符串转换为浮点数,例如:

    number = float(input("请输入一个数字:"))
    登录后复制

示例:

# 获取用户输入的数字并将其转换为整数
number = int(input("请输入一个数字:"))

# 对输入的数字进行操作
print("您输入的数字是:", number)

if number % 2 == 0:
    print("输入的数字是偶数。")
else:
    print("输入的数字是奇数。")
登录后复制

注意事项:

  • 如果用户输入的是非数字字符,则程序会引发 ValueError。
  • 使用 int() 时,会将小数部分舍去。
  • 使用 float() 时,可以获取包含小数部分的数字。

以上就是python如何输入一个数字的详细内容,更多请关注php中文网其它相关文章!

Python舍入问题需要将每个位数舍入一半

Python舍入问题需要将每个位数舍入一半

如果有人有什么好主意

这个怎么样?在数学上,您实际上在做错事,试图将单个数字舍入到舍入点之后。

原因有一个原因,即四舍五入仅检查答案中您想要的最后一位之后的数字。

想法是使错误最小化,并根据所需位数选择最接近值。 64.060546875最接近的四进制小数位值为64.0605,如下表所示:

Value:   64.050546875   64.050546875
Round:   64.0505        64.0506
Error:    0.000046875    0.000053125

因此,64.0505舍入后的值更接近于实际值。

,

我猜没有人知道我正在尝试执行ROUND_UP而不是ROUND_HALF_UP。这样可以解决我的问题。

关于在Python中舍入一个数字,但保持零结尾在python中舍入一个数字,但保持零结尾的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Python-人类的数字,带有字母数字,但在pyQt和__lt__运算符中、python命令行交互 引导用户输入一个数字、python如何输入一个数字、Python舍入问题需要将每个位数舍入一半等相关内容,可以在本站寻找。

本文标签: