Программа Я пишу ниже, имеет требования следовать:Python всегда получать тот же результат
# Design a program that prompts the user to enter the names of two primary colors
# to mix. If the user enters anything other than red, blue or yellow, the
# program should display an error message. Otherwise the program should display
# the name of the secondary color that results.
Это код, который я написал - на основании программы Java я писал ранее, и, очевидно, был далеко для Python .:
print('You will be mixing two primary colors to get a resulting color.')
print('Primary colors are blue, red and yellow \n')
red = False
blue = False
yellow = False
color1 = bool(input('Enter your first primary color: \n'))
color2 = bool(input('Enter your second primary color: \n'))
if color1 == red and color2 == blue:
print('That makes purple!')
elif color1 == blue and color2 == red:
print('That makes purple!')
elif color1 == yellow and color2 == red:
print('That makes orange!')
elif color1 == red and color2 == yellow:
print('That makes orange!')
elif color1 == blue and color2 == yellow:
print('That makes green!')
elif color1 == yellow and color2 == blue:
print('That makes green!')
else:
print('You did not enter a primary color!')
Независимо от того, какую комбинацию цветов я ввожу, я получаю результат «Это делает фиолетовый!». Где я ошибся с логикой этой программы? Кроме того, когда я не входят зеленый в качестве основного цвета, я получаю это:
Traceback (most recent call last):
File "color.py", line 19, in <module>
color1 = bool(input('Enter your first primary color: \n'))
File "<string>", line 1, in <module>
NameError: name 'green' is not defined
вместо сообщения об ошибке «Вы не ввели основной цвет!»
Куда я иду не так?
EDIT: Это мой новый код, и он работает иначе, чем ошибка.
print('You will be mixing two primary colors to get a resulting color.')
print('Primary colors are blue, red and yellow \n')
red = 1
blue = 2
yellow = 3
color1 = input('Enter your first primary color: \n')
color2 = input('Enter your second primary color: \n')
if color1 == 1 and color2 == 2:
print('That makes purple!')
elif color1 == 2 and color2 == 1:
print('That makes purple!')
elif color1 == 3 and color2 == 1:
print('That makes orange!')
elif color1 == 1 and color2 == 3:
print('That makes orange!')
elif color1 == 2 and color2 == 3:
print('That makes green!')
elif color1 == 3 and color2 == 2:
print('That makes green!')
else:
print('You did not enter a primary color!')
Вы находитесь в python 3, да? Что вы ожидаете получить от 'bool ('red')'? Вы всегда будете получать 'True', потому что строка не пуста. –
Да, эта логика не имеет смысла. 'red',' blue' и 'yellow' установлены на одно значение,' False', но вы ожидаете, что в ваших условиях 'if' будет разница? Попробуйте написать псевдокод, а затем преобразуйте его в python. – clcto