この関数は、ユーザーからの入力を受け取り、入力を値に変換します。たとえば、1kを入力すると、出力は1000になります。逆方向に移動したいと考えています。 325000という値があれば、それを325kに変更したいと思います。どのように私はこれを達成することができるかに関する任意のアイデア?どのように数字をPythonの文字に変更する
class Parsing:
def __init__(self, instring):
self.instring = instring
def valueParsing(self):
self.instring = self.instring.strip()
self.parsedString = ''
self.scalerDict = {'K': 1000, 'MEG': 1000000, 'G': 1000000000, 'M': 0.001, 'U': 0.000001, 'N': 0.000000001, 'P': 0.000000000001}
self.scaler = 1.0
self.stringCounter = 0
self.errorflag = False
self.Parsedvalue = 0.0
self.inStringLength = len(self.instring)
for self.stringCounter in range (self.inStringLength):
if ((self.instring[self.stringCounter].upper()) == 'K'):
self.scaler = self.scalerDict['K']
elif ((self.instring[self.stringCounter].upper()) == 'G'):
self.scaler = self.scalerDict['G']
elif ((self.instring[self.stringCounter].upper()) == 'U'):
self.scaler = self.scalerDict['U']
elif ((self.instring[self.stringCounter].upper()) == 'N'):
self.scaler = self.scalerDict['N']
elif ((self.instring[self.stringCounter].upper()) == 'P'):
self.scaler = self.scalerDict['P']
elif ((self.instring[self.stringCounter].upper()) == 'M'):
if (((self.instring.upper()).count('MEG'))):
self.scaler = self.scalerDict['MEG']
else:
self.scaler = self.scalerDict['M']
elif ((self.instring[ self.stringCounter ].upper()) == 'F'):
break
elif ((self.instring[ self.stringCounter ].upper()) == 'W'):
break
elif ((self.instring[ self.stringCounter ].upper()) == 'S'):
break
elif ((self.instring[ self.stringCounter ].upper()) == '%'):
break
elif ((self.instring[ self.stringCounter ].upper()) == 'V'):
break
elif ((self.instring[ self.stringCounter ].upper()) == 'A'):
break
elif ((self.instring[ self.stringCounter ].upper()) == 'H'):
break
elif ((self.instring[ self.stringCounter ].upper()) == 'Z'):
break
elif ((self.instring[ self.stringCounter ]) == '.'):
self.parsedString = self.parsedString + self.instring[ self.stringCounter ]
elif (self.instring[self.stringCounter].isdigit()):
if(int(self.instring[self.stringCounter]) >= 0):
if(int(self.instring[self.stringCounter]) <= 9):
self.parsedString = self.parsedString + self.instring[self.stringCounter]
else:
self.errorflag = True
break
else:
self.errorflag = True
print('Invalid input, Try again.')
if (self.errorflag):
self.parsedvalue = -1
else:
self.parsedvalue = long(self.parsedString)*self.scaler
return self.parsedvalue
print '1. Resistors in series\n',\
'2. Resistors in Parallel\n',\
'3. Voltage Divider\n'
iput = int(input("Enter your choice: "))
if iput == 1:
r1 = raw_input("Enter first resistor:")
r2 = raw_input("Enter second resistor:")
R1 = Parsing(r1)
R2 = Parsing(r2)
req = R1.valueParsing() + R2.valueParsing()
print "The value of the series resistors is %s." % req
理由変数().upper [self.stringCounter] self.instring格納しませんか? ;-)あなたのコードを読みやすくして、Pythonが同じことを上から実行するのを防ぐ...あなたと他の人があなたのコードを読むのを助けるでしょう。 –
あなたのクラスは本当に関数でなければなりません。それは2つのメソッドしかありません。そのうちの1つは '__init__'です。 「[クラスを書くのをやめる](https://www.youtube.com/watch?v=o9pEzgHorH0)」を参照してください。また、 'self'をたくさん入力することを避けるでしょう。 :-) –
picoOhmsを使って作業していますか?我々は非常に頻繁にオームの単位よりも小さくはしませんが、ピコオムスは、私たちが見つけることができるほとんどのケーブルや電子トレースよりもはるかに耐性が低いと思いますか? – BriceP