簡體   English   中英

當您嘗試將數據類型分配給python中的輸入時發生錯誤

[英]An error occurs when you try to assign a data type to a input in python

背景故事:我是python的新手,並且正在編寫一個非常簡單的程序來查找三個數字中的最大值,因此我發現它沒有給出正確的答案。 我認為這可能是一個邏輯問題,並試圖制作流程圖和在線搜索同一程序的示例,我發現了很多,但直到逐行閱讀並意識到這一點之后,我發現這些程序與我的程序之間沒有任何區別。這不是比較的問題,而是我正在接受輸入的方法。 我正在接受這樣的輸入:

num1 = float=(input("Enter first number: "))

浮點數后的這個多余的=符號似乎可以解決問題。 但是,我當時想知道為什么python允許這樣做,如果這樣做有什么作用? python在這里實際上在做什么? 以及它如何改變我的計划的結果?

我的程序:

num1 = float=(input("Enter first number: "))
num2 = float=(input("Enter second number: "))
num3 = float=(input("Enter third number: "))

if (num1 > num2) and (num1 > num3):
   print("The largest number is",num1)
elif (num2 > num1) and (num2 > num3):
   print("The largest number is",num2)
else:
   print("The largest number is",num3)

我的輸入:

 Enter first number: 11
 Enter second number: 6
 Enter third number: 5

輸出:

 The largest number is 6

這行是合法的Python,但不是很有用:

num1 = float=(input("Enter first number: "))

這是一條鏈接分配語句,它將input返回的值分配給兩個名稱: num1float

這樣做不會調用內置的float函數-實際上,它隱藏了內置的函數,因此您永遠無法再次調用它。 (如果嘗試,則將收到有關無法調用字符串的TypeError 。)

這是合法的,因為float和其他內置函數不是關鍵字,也不是其他特殊內容。 它們只是內置命名空間中的變量。

您在這里想要的絕對是float ,而不是隱藏它,就像這樣:

num1 = float(input("Enter first number: "))

那么,為什么它似乎起作用? 確實,這只是偶然地接近工作。 您的num1num2num3以及其他字符串,例如字符串'6' (並且float最終與num3相同)。 >比較兩個字符串是完全合法的。 但是,這並不是您真正想要的。 字符串按字母順序進行比較,因此'6' > '11' (因為第一個字符6大於第一個字符1 )。 這就是為什么要將這些字符串轉換為數字的原因:float 6.0 < 11.0 ,正如您期望的數字一樣。

如果您的代碼有問題,則在此處添加=不能解決問題。 充其量,您只是將錯誤隱藏在另一個錯誤的后面,因此您甚至不再遇到真正的問題。

使用extra = ,您可以將input()的返回值分配為float作為變量,從而隱藏了內置的float()函數。 然后將該值分配給num1 (以及以下各行中的num2num3 )。

您應該刪除extra =以便可以將輸入正確地轉換為數字以進行數字比較。 否則,您的比較將基於字符串,這就是為什么示例輸出中的'6'大於'11'

num1 = float = (input("Enter first number: "))

此代碼讀取用戶的輸入,並將該值分配給num1float

您可能想要這樣:

num1 = float(input("Enter first number: "))

就目前而言,您的代碼將num1num2num3作為字符串進行比較,在這種情況下6確實是“最大”字符串。

通過將num1num2num3float分配給input函數,您將獲得以下變量:

num1 = '11'
num2 = '6'
num3 = '5'
float = '5'

=運算符是一個賦值運算符,可幫助您隱藏float函數。 使用它,您可以將新值設置為float ,最后一次輸入將其設置為'5' 使用此值,您比較了三個字符串,並且'6'大於'11'因此將num2作為最大輸入。 不建議遮蓋內置函數,但這是python的靈活性。

暫無
暫無

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

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