python - python 似乎跳过了一行,原因是

  显示原文与译文双语对照的内容
0 0

我在写一些代码我有问题。 我的函数写得很好,但主循环( 应该是indefinetely的) 只能正确工作一次。 下面是代码:

while 1==1:
 choice=int(raw_input("press 1 for encrypt, 2 for decrypt"))
 if choice==1:
 string=raw_input("please enter plaintext heren")
 print('cipher-text follows and was copied to clipboard"'+encrypt_string(string))+'"'
 elif choice==2:
 string=raw_input("please enter cipher-text heren")
 print('plaintext follows :"'+decrypt_string(string))+'"'
 else:
 print("please enter a valid option")

问题之后,整个循环一次工作,然后它继续跳过raw_Input命令并抛出值错误。 我不明白为什么会这样做。 有什么想法吗?

编辑,错误:

Traceback (most recent call last):
 File"C:UsersRaffiDocumentspythonencryptor.py", line 37, in <module>
 choice=int(raw_input("press 1 for encrypt, 2 for decrypt"))
ValueError: invalid literal for int() with base 10: ''
时间:原作者:6个回答

0 0

在终端粘贴文本到终端时,可能会出现多个换行符,使程序继续输入下一个命令。 早期问题的两个可以能解决方案包括:

( 1 ) 使用 sys.stdin.read():

print("please enter plaintext heren")
text = sys.stdin.read()

但是,你必须按Ctrl键/Ctrl键表示你已经完成输入文本。

( 2 ) 使用 Tk.clipboard_get 或者类似命令直接从剪贴板读取。

from Tkinter import Tk
root = Tk()
root.withdraw()
...
text = raw_input('Please enter plain text or just press enter to copy from the clipboardn')
if not text:
 text = root.clipboard_get()

( 3 ) 你还可以以继续允许输入直到空白行或者它的他标记文本结尾的方式输入。

print('Please enter plain text. Enter"stop" when you are finished')
text = ''
while True:
 inp = raw_input()
 if inp == 'stop':
 break
 text += inp

当然,这假定在你要复制的文本中没有行说'停止'。

原作者:
...