【问题标题】:How to pass string input as integer arguments? [duplicate]如何将字符串输入作为整数参数传递? [复制]
【发布时间】:2020-02-17 05:15:59
【问题描述】:

我想通过从input() 方法传递参数num1num2 的值来进行以下简单计算。

我尝试了以下代码:

def add(num1, num2):
    return num1 * num2

num1 = input('Enter number1: ')
num2 = input('Enter number2: ')

print(add(num1, num2))

但运行时显示如下错误(输入num1num2后):

TypeError: can't multiply sequence by non-int of type 'str'

谁能解释我哪里出错了以及如何将输入字符串转换为整数类型?

【问题讨论】:

  • 只是对意图的评论:您确定名为add 的函数应该执行乘法吗?

标签: python string integer arguments


【解决方案1】:

input()会返回一个字符串,你必须将字符串转换成ìntfloat,你可以测试输入是否为有效数字。

如果字符串中的所有字符都是数字字符并且字符串不为空,isnumeric() 将返回 true。

注意:我将函数重命名为mul,因为这不是添加...

def mul(num1,num2):
    return num1*num2

inp1=input('Enter number1: ')
inp2=input('Enter number2: ')

if inp1.isnumeric() and inp2.isnumeric():
    num1 = int(inp1)
    num2 = int(inp2)
    print(mul(num1,num2))
else:
    print("Atleast one input is not numeric")

【讨论】:

【解决方案2】:

你可以试试这个:

def add(num1, num2):
    return num1 * num2

num1 = int(input('Enter number1: '))
num2 = int(input('Enter number2: '))

print(add(num1, num2))

input 函数将输入存储为字符串,因此您的代码中发生的情况是您输入了两个整数,但它们被存储为字符串。您不能将两个字符串相乘。您需要做的就是使用[int()][2] 函数将输入字符串转换为整数。如果要乘以浮点数,可以使用[float()][3] 函数代替int() 函数。将字符串传递给函数后,您还可以将它们转换为整数或浮点数。像这样的:

def add(num1, num2):
    return int(num1) * int(num2)

num1 = input('Enter number1: ')
num2 = input('Enter number2: ')

print(add(num1, num2))

【讨论】:

    【解决方案3】:

    input(在 Python 3 中)返回一个 str,它被视为文本而不是数字。如果要乘(或加)数字,必须先将字符串解析为数字。

    有时这也会失败。如果您假设输入始终是有效数字,则可以使用以下方法转换字符串:

    float("3.1415926")
    

    您可以在代码中使用它:

    def add(num1,num2):
        return num1*num2
    
    num1=float(input('Enter number1: '))
    num2=float(input('Enter number2: '))
    
    print(add(num1,num2))
    

    为避免浮点错误,您可以使用 f 字符串(在 Python 3.6 中添加)打印/显示浮点数。

    def add(num1,num2):
        return num1*num2
    
    num1=float(input('Enter number1: '))
    num2=float(input('Enter number2: '))
    
    print(f"{add(num1,num2):.2f}")
    

    【讨论】:

    • 我试过了,效果很好!我毫无疑问。当我将输入类型更改为浮点数(随机将值设置为 num1=1.34 和 num2=0.11)时,结果为“1.4500000000000002”。这个值而不是 1.45 的原因是什么?
    • 这是一个经典的计算机科学问题,称为floating point error。您可以将添加的数字视为“1.450...02”,并选择使用有限的小数位数显示浮点数。 print(f"{add(num1,num2):.2f})。这假设 Python >= 3.6。
    【解决方案4】:
    def mul(num1,num2):
        return(num1*num2)
    
    inp1 = input('Enter number1:')
    inp2 = input('Enter number2:')
    
    num1 = int(inp1)
    num2 = int(inp2)
    
    print(mul(num1,num2))
    

    【讨论】:

    • 请修正您的代码缩进
    • 这与这里的其他答案有什么不同?
    猜你喜欢
    • 2020-01-18
    • 2021-12-28
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多