2014-01-08 89 views
-1

我的程序一直運行,直到到達「if」部分,然後它停止工作。有任何想法嗎?如何修復我的Python代碼?

import random 
skill = str() 
skill2 = str() 
strength1 = str() 
strength2 = str() 
final = str() 
strength_modifier = str() 
skill_modifier = str() 
dice = int() 

strength1 = input("Please enter your strength level for character 1: ") 
print(strength1) 
skill1 = input("Please enter your skill level for character 2: ") 
print(skill1) 

strength2 = input("Please enter your strength level for character 2: ") 
print(strength2) 
skill2 = input("Please enter your strength level for skill 2: ") 
print(skill2) 

if strength1 > strength2: 
    strength_modifier =(int(strength1)-int(strength2)) 
    print(strength_modifier) 

if strength2 > strength1: 
    strength_modifier = (int(strength2)-int(strength1)) 
    print(strength_modifier) 

if skill1 > skill2: 
    skill_modifier = (int(skill1)-int(skill2)) 
    print(skill_modifier) 

if skill2 > skill1: 
    skill_modifier = (int(skill2)-int(skill1)) 
    print(skill_modifier) 

可以請人剛修好它,並張貼在這裏,請:L

+3

你必須更具體 - 這個程序做什麼,你接受什麼輸入,是python3 vs 2.7等等。 –

+0

你看到什麼錯誤? – elbaulp

+0

我需要它來找出兩個數字之間的差異,當它獲得「如果」位,這就是爲什麼當它到達「如果」位,我試圖使它減去最大數字beucase中的最小數字,然後生病差異。 –

回答

8

我猜的變量實際上是字符串,你想兩個字符串「>」進行比較。嘗試先將字符串轉換爲int。

+0

'input()'[返回一個字符串](http://docs.python.org/3/library/functions。html#input) –

+0

'strength1 = int(input(「Enter your input:」))'。演員陣容可能會失敗,但有一個例外 – stanleyxu2005

+0

這是一個好主意,因爲他們不會在代碼後面的所有位置(在所有的if塊中)將其轉換爲int。 – CoryKramer

0

當你將變量定義爲str()時,你將它們分配給一個空字符串(嘗試在命令shell或IDLE中運行str()並查看其返回值)。

然後,使用您的input()函數,您將重新定義某些字符串的變量,並在if語句中將字符串與這些比較運算符進行比較!它在比較字符串時的作用是檢查字符串的第一個字符!因此,以'b'開頭的字符串大於以'a'開頭的字符串,'c'>'b'>'a'等等。 當字符串是一個數字時,就像這個'1234412'它檢查第一個數字的絕對值,所以'1231432'>'2'將返回False,因爲2大於1.

你想要什麼做的是,當要求輸入時,說變量應該等於用戶編寫的數字。像這樣:

skill1 = int(input("Type your skill... :")) 

但是,這可能會引發一個錯誤,如果用戶不輸入一個數字,所以你可能想趕上錯誤,並且還要求有效輸入!這樣做:

while True: 
    try: 
     skill1 = int(input("bla bla : ")) 
     break 
    except ValueError: 
     print("Type in a NUMBER") 

您可能還想加入成對工作的if語句!您可以通過兩種方式來完成此操作:Else語句或Elif語句......如果所有其他If-Elif語句的計算結果爲False,則執行Else語句;如果在同一個塊中的上面的所有If-Elif語句評估爲False!,則執行Elif語句。

if #some condition#: 
    #some code 
elif #some condition#: <== Only executes if the one above didn't execute 
    #some code 
elif #some condition#: <== Only executes if the ones above didn't execute 
    #some code 
else: # executes only if none of the above statements evaluated True. 

當使用像這樣的如果,艾利芙-else塊,你總是知道那一個,且只有一個的部分代碼將執行,因爲當一個條件判斷爲真,進入該語句的縮進代碼,當它結束時跳過所有其他條件!這樣的代碼將在下面的方式工作:

a = 10 
if a < 20: 
    print("Var 'a' is smaller than 20") 
elif a < 30: 
    print("Var 'a' is smaller than 30") 

雖然一個< 30是真的,只會調用第一次印刷,因爲當翻譯進入第一,如果,它會自動跳過所有其他的elif的和else語句。