此代碼將檢查一個字符串並按順序返回數字,並將提供單個數字,因爲它們出現在字符串中。我知道有很多方法比我的代碼更好地查找字符串中的數字,這是一項任務。我只有循環的問題,循環應該運行直到字符串結束並終止。我無法做到這一點。我正在編寫一個查找字符串中的數字的程序
#variables
start = None
end = None
zero= None
one = None
two = None
three = None
four = None
five = None
six = None
seven = None
eight = None
nine = None
check = None
def numfind():
#will find numbers in a string and allocate position in the string
global zero
global one
global two
global three
global four
global five
global six
global seven
global eight
global nine
global end
global start
zero=text.find('0',end)
one=text.find('1',end)
two=text.find('2',end)
three=text.find('3',end)
four=text.find('4',end)
five=text.find('5',end)
six=text.find('6',end)
seven=text.find('7',end)
eight=text.find('8',end)
nine=text.find('9',end)
def numstart():
#will find the smallest number from among the previous function output and will allocate it as the start of the number, in "start" variable, will use slicing function to return the number
global zero
global one
global two
global three
global four
global five
global six
global seven
global eight
global nine
global start
for n in [zero,one,two,three,four,five,six,seven,eight,nine]:
if start is None:
if n != -1:
start = n
#print start
else:
continue
else:
if n != -1:
if start>n:
start=n
#print start
else:
continue
def numend1():
#Will find the space after numbers begin, will use "end" in the slicing function to return the first number from the string.
global start
global end
end=text.find(" ",start)
#print end
def endchecker():
#this is some bullshit I came up with to terminate the loop, but doesn't work :(
global zero
global one
global two
global three
global four
global five
global six
global seven
global eight
global nine
global start
global end
global check
for n in [zero,one,two,three,four,five,six,seven,eight,nine]:
if check is None:
if n != -1:
check = n
#print check
else:
check=n
else:
if n != -1:
check=n
#print check
else:
if check>n:
continue
else:
check = n
text=raw_input("Please enter a string containing a set of numbers:")
while True:
numfind()
endchecker()
print check
if check == -1:
break
numstart()
numend1()
try:
if end!=-1:
number1=float(text[start:end])
print number1
else:
number1=float(text[start:])
print number1
break
except:
print "Error"
break
print "End of Program"
你的代碼中的所有全局變量正在發生什麼? –
不使用全局變量,使用返回值;使用列表。 – Daniel
您在代碼中大量使用了'globals' ......這並不是建議的 –