我想根據輸入的型別列印一條訊息,但是每次我輸入一個復數時,例如(5j)它都會被檢測為字串輸入。請問我該如何解決?謝謝。
while True:
a = input("a ? ")
if (isinstance(a, complex)):
print("Valid number, please not Complex!")
try:
a = float(a)
except ValueError:
print ('please input a int or float')
if (type(a)==str):
print("Valid number, please not String!")
continue
if 0.5 <= a <= 100:
break
elif 0 <= a < 0.5:
print ('bigger number, please: 0.5-100')
elif a < 0:
print ('positive number, please')
elif a > 100:
print ('smaller number, please: 0.5-100')
執行示例:
a ? 5j
please input a int or float
Valid number, please not String!
我試過這樣做:
while True:
try:
a = input("a ? ")
if ('j' in a):
print("Valid number, please not Complex!")
a = float(a)
except ValueError:
print ('please input a int or float')
if (type(a)==str and 'j' not in a):
print("Valid number, please not String!")
continue
if 0.5 <= a <= 100:
break
elif 0 <= a < 0.5:
print ('bigger number, please: 0.5-100')
elif a < 0:
print ('positive number, please')
elif a > 100:
print ('smaller number, please: 0.5-100')
但這不是“完美”
uj5u.com熱心網友回復:
您可以將第一個代碼塊添加到 try 塊中
像這樣 -
while True:
try:
a = input("a ? ")
if (isinstance(a, complex)):
print("Valid number, please not Complex!")
a = float(a)
except ValueError:
print ('please input a int or float')
if (type(a)==str):
print("Valid number, please not String!")
continue
if 0.5 <= a <= 100:
break
elif 0 <= a < 0.5:
print ('bigger number, please: 0.5-100')
elif a < 0:
print ('positive number, please')
elif a > 100:
print ('smaller number, please: 0.5-100')
這是你的意思嗎?
uj5u.com熱心網友回復:
您可以改用嵌套try-except和內置函式complex()。
所以,你的代碼需要是這樣的
while True:
a = input("a? ")
try:
a = float(a)
if 0.5 <= a <= 100:
break
elif 0 <= a < 0.5:
print ('bigger number, please: 0.5-100')
elif a < 0:
print ('positive number, please')
elif a > 100:
print ('smaller number, please: 0.5-100')
except ValueError:
try:
a = complex(a)
print("Valid number, please not Complex!")
except ValueError:
print ("Valid number, please not String!")
continue
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/367372.html
上一篇:從字串中洗掉所有標點符號
