簡體   English   中英

嘗試將 function 參數乘以 integer 時出現不支持的操作數類型錯誤

[英]Unsupported operand type error when trying to multiply function parameter by an integer

我正在嘗試制作一個簡單的 function ,它接受一個參數並將其乘以 integer 以多次返回它。 我嘗試使用如下所示的 python 3 代碼來執行此操作:

def user_input(x):
    print(x)


def repeat(y):
    return 5*y


repeat(user_input(input('Get input ')))

此代碼應該采用參數y ,在這種情況下, user_input function 並將其乘以 5,因此它應該重復 5 次。 但是每當我運行程序時,我都會收到以下錯誤:

TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'這個錯誤發生在return 5*y中,我知道由於某種原因它將y解釋為None類型。 我如何將其解釋為適當的類型?

在編程語言中,我們使用函數來做兩件事:
他們的副作用
這包括以下內容:

  • 打印到屏幕
  • 改變變量的值

它們的返回值
這是函數“返回”的值(就像數學函數一樣)。

你的問題

您有一個具有副作用(打印到屏幕)但沒有返回值的 function。 如果 function 沒有顯式返回任何內容,則 python 返回值“None”。

解決方案

如果您想使用第一個 function 中的值作為第二個參數,您可以執行以下操作:

def user_input(x):
    return x

def repeat(x):
    return x*5

print(repeat(user_input("this is some user input")))

這將打印出repeat的返回值,它接收用戶輸入的返回值,它接收一個字符串。

清理

作為旁注,用戶輸入 function 現在什么都不做,它只是返回它傳遞的值,因此您可以執行以下操作:

def repeat(x):
    return x*5

print(repeat(input(">>> ")))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM