基本上使用 input()。這是示例代碼:
a1 = input("Number1? ")
a2 = input("Number2? ")
if a1.is_float():
a1 = float(a1)
if a2.is_float():
a2 = float(a2)
當我輸入第一個數字(0.5)然后第二個數字(0.5)時,它表明它是一個浮點數。但是,之前我為 a1 和 a2 撰寫的代碼是一個整數。如果數字是浮點數或整數,我希望它給出答案。無需使用任何其他功能。(我在代碼中使用了函式)。只有一個功能。任何解決方案?
uj5u.com熱心網友回復:
數字 12(例如)是一個有效的整數并且是一個有效的浮點數,因為浮點數不需要有小數點。如果你真的想區分它們,你需要先檢查整數,然后浮點數:
from validate import is_float, is_integer
a1 = input("Number1? ")
if is_integer(a1):
a1 = int(a1)
elif is_float(a1):
a1 = float(a1)
else:
pass # neither float nor integer
同樣對于a2.
uj5u.com熱心網友回復:
下面的代碼要求并驗證一個整數和一個浮點數,并在計算中使用它們。也許這會帶來幸福。
def getInteger(prompt):
while True:
val = input(prompt)
if val.isdigit():
return int(val)
print("That's not an integer")
def getFloat(prompt):
while True:
val = input(prompt)
try:
return float(val)
except ValueError:
print("That's not a float")
a1 = getInteger( "give me an int: " )
a2 = getFloat( "give me a float: " )
print( a1 ** a2 )
托馬斯的回答讓我覺得我可能誤解了措辭相當糟糕的問題陳述。這是我的代碼,如果它是整數,則修改為回傳整數,否則為浮點數。
def getValue(prompt):
while True:
val = input(prompt)
if val.isdigit():
return int(val)
try:
return float(val)
except ValueError:
print("That's neither an integer or a float")
a1 = getValue( "give me an int: " )
a2 = getValue( "give me a float: " )
print( a1 ** a2 )
uj5u.com熱心網友回復:
input 函式回傳一個字串,而不是一個數字。“str”物件沒有任何稱為“is_float”的方法或屬性。
但是,對于整數,有一種稱為 isdigit() 的方法。僅當字串為整數格式時才回傳 True。
例子:
s="34"
print(s.isdigit()) // True
所以對于整數,你可以寫一個像這樣的簡單代碼。
a1=input("Number? ")
if a1.isdigit():
a1=int(a1)
else:
print("wrong format")
現在對于浮動,沒有任何類似的方法。所以你可以 1) 使用 try-except 塊或 2) 使用正則運算式來做到這一點
- 嘗試除外
例子:
a1=input("Number? ")
try:
a1=float(a1)
except ValueError as e:
print("wrong format")
- 正則運算式
例子:
import re
pattern = r'^\s*[0-9] (\.[0-9] )?\s*$'
a1=input("Number? ")
if re.fullmatch(pattern, a1):
a1=float(a1)
else:
print("wrong format")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/349376.html
標籤:Python
上一篇:去除姓名、數字和高度之間的空白
