即使用户选择卡,程序也输出硬币投掷的答案

时间:2014-10-24 11:31:09

标签: python

def program():
    print ("please make sure your answer is spelt correctly")
    print ('Start program')
    choice = input("please select either a card or coin?") 


    if choice == "COIN" or "coin" or "Coin":  
        print ("you will now be given heads or tails")   


    import random

    higher_value = 2
    lower_value = 1
    final_value = random.randint (lower_value, higher_value)

    if final_value == 1:
        print ("Heads")

    elif final_value == 2:
        print ("Tails")
        #CARD
    else:                                    
        if choice == "Card" or "card" or "CARD":
            print("you will now be given a number for; number,suit")


    import random
    higher_value = 13
    lower_value = 1
    final_value = random.randint (lower_value, higher_value)

    if final_value == 1:
               print ("ace")

    if final_value == 2:
               print ("2")
    if final_value == 3:
               print ("3")
    if final_value == 4:
               print ("4")
    if final_value == 5:
               print ("5")
    if final_value == 6:
               print ("6")
    if final_value == 7:
               print ("7")
    if final_value == 8:
               print ("8")
    if final_value == 9:
               print ("9")
    if final_value == 10:
               print ("10")  
    if final_value == 11:
               print ("Jack")
    if final_value == 12:
               print ("Queen")
    if final_value == 13:
               print ("King")


    import random

    higher_value = 4
    lower_value = 1
    final_value = random.randint (lower_value, higher_value)

    if final_value == 1:
               print ("Hearts")
    if final_value == 2:
               print ("Clubs")
    if final_value == 3:
               print ("Spades")
    if final_value == 4:
               print ("Diamonds")
    #REPEAT LOOP
    flag = True
    while flag:
        program()
        flag = input('Would you like to run the program again? [y/n]') == 'y'    
    print ("The program will now terminate.")    
    print ("Have a good day")

我目前正在尝试将程序的两个部分分开,这是因为如果我输入卡片就会输出硬币投掷和卡片选择的结果,这非常令人沮丧。我无法看到为什么会发生这种情况的原因所以有人可以帮我解决这个问题,谢谢:)

1 个答案:

答案 0 :(得分:1)

您必须正确缩进此部分:

import random

higher_value = 2
lower_value = 1
final_value = random.randint (lower_value, higher_value)

if final_value == 1:
    print ("Heads")

elif final_value == 2:
    print ("Tails")

它必须与print ("you will now be given heads or tails")具有相同的缩进,否则解释器将假定它存在于if语句之外

以同样的方式,您必须正确缩进print("you will now be given a number for; number,suit")以下的所有内容

请记住,python与其他语言的不同之处在于您不使用花括号或begin..end语句来显示代码块。相反,解释器通过缩进来理解代码块,所以你必须小心它。

编辑:要进一步解释它,您必须了解以下代码片段的区别:

i=1
j=2

if i==1: 
    print i
    if j==10:
        print j
else:            #<--- this corresponds to if i==1:
    print j

这将打印1

但是,只需更改缩进:

i=1
j=2

if i==1:
    print i
    if j==10:
        print j
    else:        #<--- now this corresponds to if j==10:
        print j

这将打印1 2

编辑2:

if choice == "COIN" or "coin" or "Coin":

必须更改为

if choice == "COIN" or choice == "coin" or choice == "Coin":

否则它总会评估为真

以同样的方式更改:if choice == "Card" or "card" or "CARD":

编辑3: 这对我有用

import random

def main():
  print ("please make sure your answer is spelt correctly")
  print ('Start program')
  choice = input("please select either a card or coin?")
  if choice == "COIN" or choice == "coin" or choice == "Coin":  
    print ("you will now be given heads or tails")
    higher_value = 2
    lower_value = 1
    final_value = random.randint (lower_value, higher_value)
    if final_value == 1:
      print ("Heads")
    elif final_value == 2:
      print ("Tails")
#CARD
  else: 
    if choice == "Card" or choice == "card" or choice == "CARD":
      print("you will now be given a number for; number,suit")

      higher_value = 13
      lower_value = 1
      final_value = random.randint (lower_value, higher_value)

      if final_value == 1:
       print ("ace")
      if final_value == 2:
        print ("2")
      if final_value == 3:
        print ("3")
      if final_value == 4:
        print ("4")
      if final_value == 5:
        print ("5")
      if final_value == 6:
        print ("6")
      if final_value == 7:
        print ("7")
      if final_value == 8:
        print ("8")
      if final_value == 9:
        print ("9")
      if final_value == 10:
        print ("10")  
      if final_value == 11:
        print ("Jack")
      if final_value == 12:
        print ("Queen")
      if final_value == 13:
        print ("King")
      higher_value = 4
      lower_value = 1
      final_value = random.randint (lower_value, higher_value)

      if final_value == 1:
        print ("Hearts")
      if final_value == 2:
        print ("Clubs")
      if final_value == 3:
        print ("Spades")
      if final_value == 4:
        print ("Diamonds")

if __name__ == "__main__":
  main()