我被赋予了一个以非常基本的python风格编写程序的任务。该程序应该询问用户是否要1.掷硬币,或2.选择一张卡。
然后使用IF检查用户选择的内容。如果它是一个,它应该随机生成头或尾并打印它得到的东西。
如果选择为2,则要求用户选择套装,然后生成1到13之间的数字(ace为王)并打印'你选择了[套装]的[值]
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)
正如您所看到的,它是基本的,但我被要求尽可能密切地遵循伪代码。它在开始时就停止了。我输入了数字作为选择,它就结束了。
编辑:我修改了代码以显示我已更改的内容。答案 0 :(得分:2)
你有两个问题:
choice = int(input('Enter a coice :'))
if choice == '1':
这里您要比较整数选择和字符串'1'值。
第二个问题是你有很多结构看起来像:
if a == '1':
some_statement
elif a == '2:
some statement
...
这样的开关可以用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 :(得分:2)
由于other answers非常充分地批评你的采卡设计,我只会发布关于你的硬币翻转的信息。
该计划的结果是一个声明:
You got {heads|tails}
。
因此,我们只对字符串'heads'
或'tails'
感兴趣。由于显式优于隐式:
outcomes = ('heads', 'tails')
print('You got {}.'.format(random.choice(outcomes)))
就是你所需要的一切。
答案 2 :(得分:1)
常见错误:
==
用于比较,不用于分配,例如4 == 4
True
int
类型的变量从不等于字符串,例如4 == '4'
为False
。这就是您的if
语句无法执行的原因。input()
之前,无需进行变量初始化。else
,通常最好拥有elif
。肮脏但完全修复:
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 version:
import random
print('1. Flip a coin')
print('2. Pick a card')
choice = int(input('Enter a choice: '))
if choice == 1:
outcomes = ('heads', 'tails')
print('You got {}.'.format(random.choice(outcomes)))
else:
suits = ('Hearts', 'Clubs', 'Diamonds', 'Spades')
print()
for index, element in enumerate(suits, start=1):
print('{}. {}'.format(index, element))
suitno = int(input('Choose a suit: '))
value = random.randint(1, 13)
print('\nYou picked', value, 'of', suits[suitno-1])
答案 3 :(得分:0)
这是另一个重组版本:
from random import choice
COINS = ["Heads", "Tails"]
FACES = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]
SUITS = ["Hearts", "Clubs", "Diamonds", "Spades"]
def get_int(prompt, lo=None, hi=None):
while True:
try:
value = int(input(prompt))
if (lo is None or lo <= value) and (hi is None or value <= hi):
return value
except ValueError:
pass
def do_menu(prompt, options):
print("")
for i,option in enumerate(options, 1):
print("{:>3}. {}".format(i, option))
return get_int(prompt, 1, len(options)) - 1
def main():
while True:
option = do_menu("> ", ["Flip a coin", "Pick a card", "Quit"])
if option == 0:
print("\nYou flipped {}.".format(choice(COINS)))
elif option == 1:
suit = SUITS[do_menu("Pick a suit: ", SUITS)]
print("\nYou picked {} of {}".format(choice(FACES), suit))
else:
print("\nGoodbye!")
break
if __name__=="__main__":
main()