抛硬币/选卡程序不工作

2024-10-03 00:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是用一种非常基本的python风格编写一个程序。程序应该询问用户是否想要1。掷一枚硬币,或2枚。选一张牌。在

然后使用IF来检查用户选择了什么。如果它是一个,它应该随机产生正面或反面,然后打印它得到的。在

如果选择是2,它会要求用户选择一套西装,然后生成一个介于1到13之间的数字(从王牌变为王牌),并打印出“You picked[value]of[suit]”

import random

print('1. Flip a coin')
print('2. Pick a card')
choice = int(input('Enter a coice :'))
if choice == 1:
    Hort = ''
    HorT == random.randint(0,1)
    if HorT == "0":
       print('You got Heads')
    elif HorT == "1":
       print('You got Tails')
elif choice == 2:
    print()
    print('1. Hearts')
    print('2. Clubs')
    print('3. Diamonds')
    print('4. Spades')
    print()
    suitno = ''
    suitno ==int(input('Choose a suit'))
    if suitno == "1":
        suit == "Hearts"
    elif suitno == '2':
        suit == 'Clubs'
    elif suitno == '3':
        suit == 'Diamonds'
    elif suitno == '4':
        suit == 'Spades'
    value = ''
    value == random.randint(1,13)
    print()
    print('You picked', value, 'of', suit)

正如您所看到的,它是基本的,但是我被要求尽可能地紧跟伪代码。它从一开始就停止了。我输入then number作为选择,结果就结束了。在

编辑:我修改了代码,以显示我所做的更改。在


Tags: of用户程序youifvaluerandomprint
3条回答

你有两个问题:

choice = int(input('Enter a coice :'))
if choice == '1':

在这里,您将比较integer choice和字符串“1”的值。在

第二个问题是,你有很多结构,看起来像:

^{pr2}$

这种开关可以用python和字典组成:

import random

coin_sides = {
    '1': 'Heads',
    '2': 'Tails'
}

card_suits = {
    '1': 'Hearts',
    '2': 'Clubs',
    '3': 'Diamonds',
    '4': 'Spades'
}

print('1. Flip a coin')
print('2. Pick a card')

choice = input('Enter a coice :')

if choice == '1':
    side = random.randint(0,1)
    print 'You got {0}'.format(coin_sides.get(side))

elif choice == '2':
    print()
    print('1. Hearts')
    print('2. Clubs')
    print('3. Diamonds')
    print('4. Spades')
    print()

    suitno = input('Choose a suit')

    suit = card_suits.get(suitno)

    value = random.randint(1,13)

    print()

    print('You picked', value, 'of', suit)

常见错误:

  1. ==用于比较,用于赋值,例如4 == 4是{}
  2. int类型的变量将从不等于字符串,例如4 == '4'False。这就是您的if语句没有执行的原因。在
  3. 在获取input()之前不需要初始化变量。在
  4. 如果你有else,通常最好是else。在

脏,但完全修复:

import random

print('1. Flip a coin')
print('2. Pick a card')

choice = int(input('Enter a coice: '))

if choice == 1:
    HorT = random.randint(0,1)
    if HorT == 0:
        print('You got Heads')
    else:
        print('You got Tails')

elif choice == 2:
    print()
    print('1. Hearts')
    print('2. Clubs')
    print('3. Diamonds')
    print('4. Spades')
    print()
    suitno = int(input('Choose a suit: '))
    if suitno == 1:
        suit = "Hearts"
    elif suitno == 2:
        suit = 'Clubs'
    elif suitno == 3:
        suit = 'Diamonds'
    else:
        suit = 'Spades'

    value = random.randint(1, 13)
    print()
    print('You picked', value, 'of', suit)

它可以写得更简洁,但它是pretty basic python style程序:)

@Two-Bit Alchemist-@vaultah版本:

^{pr2}$

既然other answers相当充分地批评了你的选牌设计,我就只贴一点我对你投硬币的看法。在

掷硬币

该项目的结果是:

You got {heads|tails}.

因此,我们只对字符串'heads'或{}感兴趣。由于显式优于隐式

outcomes = ('heads', 'tails')
print('You got {}.'.format(random.choice(outcomes)))

就是你所需要的。在

相关问题 更多 >