3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
主要出在eval上。
python3.0
第一個(gè)方案:
while True:
ten=input("x:")
try:
x=eval(ten)
if type(x)==int:break
except:pass
然后輸入asf,沒(méi)有提示。輸入344就退出了
x:asf
x:344
第二個(gè)方案
while True:
ten=None
try:
ten=int(input("x:"))
except:pass
if type(ten)==int:break
這個(gè)在python3.0上調(diào)試通過(guò)
第三個(gè)方案:python2.x的方案
while True:
ten=raw_input("Enter a number:")
if ten.isdigit():break
ten=int(ten) #或者是ten=eval(ten)
都調(diào)試過(guò)。可以用

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
具體解決辦法如下:
第一個(gè)方案:
1.復(fù)制代碼,如下,
while True:
ten=input("x:")
try:
x=eval(ten)
if type(x)==int:
break
except:
pass
2.然后輸入asf,沒(méi)有提示。輸入344就退出了
x:asf
x:344
第二個(gè)方案
1.復(fù)制代碼
while True:
ten=None
try:
ten=int(input("x:"))
except:
pass
if type(ten)==int:
break
這個(gè)在python3.0上調(diào)試通過(guò)
第三個(gè)方案:python2.x的方案
while True:
ten=raw_input("Enter a number:")
if ten.isdigit():
break
ten=int(ten) #或者是ten=eval(ten)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先你使用的input的函數(shù),但是input函數(shù)必須接受的類(lèi)型為數(shù)字你輸入非數(shù)字的字母會(huì)報(bào)錯(cuò)。
其次如果你輸入了數(shù)字你這個(gè)程序也不會(huì)正常工作,ten的類(lèi)型可能是float也可能是int 但是eval接受的參數(shù)類(lèi)型必須是字符串,所以這句if也會(huì)出錯(cuò)。
改為 if type(ten) is type(1):break
添加回答
舉報(bào)