2013-07-07 53 views
0

所以我的代碼基本上模擬了每場比賽中棒球運動員(Joe DiMaggio)的蝙蝠。這是目前爲止的代碼PRINT和IF語句的難點

import random 
i = random.randint(1, 100) 
j = random.randint(1, 100) 
k = random.randint(1, 100) 
l = random.randint(1, 100) 
while True: 
    if i <= 32: 
     i = 1 
    else: 
     i = 0 
    if k <= 32: 
     k = 1 
    else: 
     k = 0 
    if j <= 32: 
     j = 1 
    else: 
     j = 0 
    if l <= 32: 
     l = 1 
    else: 
     l = 0 
    m = i+j+k+l 
    print("He went", m, "-4") 

我想知道它是否適用於所有不同的IF和ELSE語句。同樣,當我嘗試運行它時,它會突出顯示print語句中的m,並顯示以下錯誤:Invalid Syntax。

如何解決此問題的任何幫助? 編輯:語法錯誤已被修復,但現在它只是第一次添加它們,其餘的打印都是4-4。

回答

3

你需要修復您的打印statment:

print("He went", m, "-4") 

或使用字符串連接:

print("He went" + str(m) + "-4") 

或字符串格式化:

print("He went {} -4".format(m)) 

您的代碼將會進入到一個英輝循環重複計算相同的值m一遍又一遍,作爲隨機v每次都重新計算線索而不是ijkl靜態,他們不引用他們一個調用的返回值參照各random.randint()函數調用。

您可以使用一個循環的基礎上,新的隨機值重新計算每個m時間,這確實簡化代碼:

m = sum(1 for i in range(4) if random.random() < 0.32) 
+0

那固定的語法,但那裏有一個新的問題! – user2557303

+0

如果random.random()<0.32替換所有的if和else語句,那麼m = sum(1中的i在範圍(4)中? – user2557303

+0

是的,它和'random.randint()'也會調用。 –

1

你必須使用連接運算符。

print("He went " + str(m) + "-4") 

因此你串接輸出在打印前一個字符串