我在编程竞赛中(我不知道为什么,我几乎不知道任何高级Python),因为我的老师认为这是一个好主意。其中一个练习项目是创建一个包含6个函数的字符串编辑器,分别是Insert,Delete,Reverse,Update/Replace,Append和Prepend一个字符串。对于输入的语法应该是这样的:Python字符串编辑器
computer I 3 BIT
与
comper
输出所以第一部分是编辑字符串,第二个是操作(I可以进行插入,为d删除,R表示反向等)。问题是,其余的东西是不同的。对于I,D和R,共有4个部分。第三是操作的起点。第四个是为I插入的字符串,以及为D删除的字符数,R可以处理的字符数。但是,更新/替换包含5个部分。字符串,修饰符(U),开始位置,要替换的字符数以及要替换的子字符串。
同样,Append和Prepend有3个部分。原始字符串,修饰符(A或P)以及要添加或附加的子字符串。
到目前为止,我已经拿出下面的代码。
while True:
Full_String = input("Please enter a string, modifier, start character, and iteration modifier: ")
string, modifier, start, itermod = Full_String.split (" ")
print (string)
print (modifier)
print (start)
print (itermod)
打印命令只是为了确保字符串正确拆分。然而,每当我尝试使用某些操作所需的3或5个参数时,我会得到一个ValueError。通常,我可以添加Try-Except块来捕获错误,但我无法弄清楚如何在没有2级用户输入的情况下执行此操作。
那么,无论如何,我该如何设法将这个问题归结为一行输入?对于每个输入应类似于以下:
插入:字符串I 2新
删除:字符串d 2 3
反向:字符串R 2 3
更新/替换:字符串ù 2 3个新(字符串的长度必须是不管以前的说法是,即3个新的,4日消息,5大)
附加:字符串的新
Prepen d:字符串P新
任何帮助都非常感谢。
使用拆分,但将结果保留在单个列表中:'result = Full_String.split(“”)'。然后,你可以参考'result [3]'和'result [4]'等,这取决于result [0]的值。 –
你需要看看*加星号的表达*。 –
通常,在你的问题中追加堆栈跟踪(这种情况下的ValueError)是有帮助的 – rinderwahn