2014-11-06 126 views
0

我想獲取用戶輸入作爲我的函數參數。我這樣做:字符串python中額外的''字符

Utilities.py

def EnterVersion() 
    gVer = "" 
    tgVer = "" 
    while True: 
      gVer = input(" Enter game version : ") 
      if gVer ='': 
      tgVer = tgVer[:-1] 
      break 
      else: 
      gVer = '\'' + gVer + '\'' + ',' 
      tgVer += gVer 

    tgVer = "\"(%s)\""%tgVer 
    print(tgVer) 
    return tgVer 

a.py

game_version = "" 

def getGameVersion() 
    game_version = utilities.EnterVersion() 
    return game_version 

當用戶輸入這樣的:

進入遊戲版本: 1
E NTER遊戲版本:2

編輯:
我使用VS爲Python
從腳本的輸出(在命令行中)好:

「( '1',」 2' )」

但是,當我把手錶放在變量,它去這樣:
enter image description here

的輸出將是這樣的:

「(\ '1 \',\ '2 \')」

沒有額外 '\' 就可以了。

因此,鑑於輸入我的查詢(我正在使用熊貓)沒有運行。

因爲它讀出的遊戲版本:

'\ 1' \和 '\ 2 \',或
\ '1 \' 和\ '2 \'

我知道'\'用於在python中編寫特殊字符。
但爲什麼我在我的?
任何人都可以向我解釋爲什麼我的字符串上有額外的'\'?下面python2.7

+1

你的代碼編譯? (它沒有給我)。 這行看起來不對,'gVer ='\''+ gVer +'\''+',' ' – smushi 2014-11-06 06:57:35

+0

嗯, 是的,我可以編譯它。 我使用的版本是3.3.2 – noobsee 2014-11-06 07:10:06

+1

@smushi用'raw_input()'替換'input()' – 2014-11-06 07:11:27

回答

0

當我嘗試運行它時,您的代碼會產生語法錯誤。並且它也是你的預期輸出而不用改變代碼。

def EnterVersion(): 
    gVer = "" 
    tgVer = "" 
    while True: 
      gVer = input(" Enter game version : ") 
      if gVer =='': 
      tgVer = tgVer[:-1] 
      break 
      else: 
      gVer = '\'' + gVer + '\'' + ',' 
      tgVer += gVer 

    tgVer = "\"(%s)\""%tgVer 
    print(tgVer) 
    return tgVer 


if __name__ == "__main__": 
    game_version = EnterVersion() 
    print(game_version) 
+0

它的輸出是什麼? – noobsee 2014-11-06 07:12:57

+0

「('5','5')」這是從python3.3輸出的 – 2014-11-06 07:22:26

+0

是的,我編輯了我的問題。 :)) – noobsee 2014-11-06 07:32:09

0

運行的代碼會確定:

def EnterVersion(): 
    gVer = "" 
    tgVer = "" 
    while True: 
      gVer = raw_input(" Enter game version : ") #use raw_input here 
      if gVer == '': 
      tgVer = tgVer[:-1] 
      break 
      else: 
      gVer = '\'' + gVer + '\'' + ',' 
      tgVer += gVer 

    tgVer = "\"(%s)\""%tgVer 
    print(tgVer) 
    return tgVer 

結果:

Enter game version : 2 
Enter game version : 4 
Enter game version : 1 
Enter game version : 2 
Enter game version : 
"('2','4','1','2')" 

編輯:您所做的一切都很好!但是你不應該在調試模式下看到結果,因爲它使用了代碼中表示的字符串,而不是真正的輸出。即如果在調試模式下看到​​,並且實際輸出字符串爲abc,如果在調試模式下看到「\'hi \'」,則真正輸出的字符串將是'hi',這沒關係!

+0

我使用的版本3.3 .2。 啊,是的,對不起,我把你們全部弄錯了方向。要更新 – noobsee 2014-11-06 07:14:16

+0

@noobsee看到我的編輯,你的代碼還行,但是你把代表字符串和實際的輸出字符串混淆了 – tianwei 2014-11-06 07:28:08

+0

啊,我找到了! !..在EnterVersion()我把額外的「」「所以它錯誤..這不是因爲'\' – noobsee 2014-11-06 09:16:59