2016-06-20 3 views
0

Возможно, есть более простой способ сделать это, но я прочитал, что в Python нет коммутатора/футляра. Я хотел спросить пользователя, ввести имя цвета и после вызова функции, которая должна позаботиться об этом, она должна вернуть код цвета в RGB. Мои утверждения if должны также принимать, когда первая буква или целое слово находится в капитале., имеющий сравнение сравнения строк strings @ python

Странная вещь, которая происходит со мной, я продолжаю получать результаты на своей консоли, которая не имеет никакого смысла, я УВЕРЕН, что есть (где-то) мизанкус от меня!

После ввода того же ввода, exacly же слово, результаты на консоли не совпадают.

В тот момент, когда это мой точный код.

import pygame 
import sys 

from pygame.locals import * 

White =(255, 0, 0) 
Black = (0, 0, 0) 

Red = (255, 0, 0) 
Green = (0, 255, 0) 
Blue = (0, 0, 255) 

Yellow = (255, 255, 0) 
Cyan = (0, 255, 255) 
Purple = (255, 0, 255) 


def set_display(): 
    pygame.init() 
    Display = pygame.display.set_mode((400, 300)) 
    pygame.display.set_caption('Seda\'s drawing game') 


def get_color(): 
    print('Please introduce one of the following colors') 
    print(' \n White \n Black \n Red \n Green \n Blue \n Yellow \n Cyan \n Purple') 
    color = input() 
    print (color) 
    if (color == 'Black') or (color == 'BLACK') or (color == 'black'): 
     return Black 
    elif (color == 'White') or (color == 'WHITE') or (color == 'white'): 
     return White 
    elif (color == 'Red') or (color == 'RED') or (color == 'red'): 
     return Red 
    elif (color == 'Green') or (color == 'GREEN') or (color == 'green'): 
     return Green 
    elif (color == 'Blue') or (color == 'BLUE') or (color == 'blue'): 
     return Blue 
    elif (color == 'Yellow') or (color == 'YELLOW') or (color == 'yellow'): 
     return Yellow 
    elif (color == 'Purple') or (color == 'PURPLE') or (color == 'purple'): 
     return Purple 
    elif (color == 'Cyan') or (color == 'CYAN') or (color == 'cyan'): 
     return Cyan 





while True: 

# set_display() 
# for event in pygame.event.get(): 
#  if event.type == QUIT: 
#   pygame.quit() 
#   sys.exit() 


    final_color = get_color() 
    print (get_color()) 
    print (final_color) 

Консоль вывода:

Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 
white 
white 
Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 
white 
white 
(255, 0, 0) 
(255, 0, 0) 
Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 
White 
White 
Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 
White 
White 
(255, 0, 0) 
(255, 0, 0) 
Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 
WHITE 
WHITE 
Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 
WHITE 
WHITE 
(255, 0, 0) 
(255, 0, 0) 
Please introduce one of the following colors 

White 
Black 
Red 
Green 
Blue 
Yellow 
Cyan 
Purple 

, кажется, каждые 2 раза я пишу что-то, если возвращает мне код цвета RGB.

, что я держу найти трудно понять, почему это:

final_color = get_color() 
    print (get_color()) 
    print (final_color) 

не показывает ту же самую вещь.

Спасибо за помощь, ребята

EDDIT1: я узнал, используя дополнительные услуги на этих отпечатков, что он не получает в этих 2-х последних отпечатков. Тем не менее, чтобы узнать, почему ..

EDDIT2: я замечаю свою собственную ошибку .. говоря белый (255.0.0): D

+0

у вас есть много заявлений для печати, но некоторые из них начинаются с какой-либо указания которого оператор печати является запуск его, попробуйте добавить например, «print (« get_color() », get_color())». –

+0

вы дважды вызываете 'get_color()' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'и ' –

ответ

1

так, как вы вернуть цвет может быть упрощена много, делая это. Он также исправляет вашу ошибку.

White =(255, 0, 0) 
Black = (0, 0, 0) 

Red = (255, 0, 0) 
Green = (0, 255, 0) 
Blue = (0, 0, 255) 

Yellow = (255, 255, 0) 
Cyan = (0, 255, 255) 
Purple = (255, 0, 255) 

colours = { 
    'white' : White, 
    'black' : Black, 
    'red' : Red, 
    'green' : Green, 
    'blue' : Blue, 
    'yellow' : Yellow, 
    'cyan' : Cyan, 
    'purple' : Purple 
} 

def get_colour(): 
    print('Please introduce one of the following colours') 
    for key in sorted(colours): 
     print(key.capitalize()) 
    colour = input() 
    return colours[colour.lower()] 

if __name__ == '__main__': #just added for preference 
    while True: 
     final_colour = get_colour() 
     print(final_colour) 

Вы должны ознакомиться с lists, dictionaries и некоторыми основными функциями Python. Они делают жизнь намного проще!

https://docs.python.org/3/tutorial/datastructures.html

P.S. Ваши Red и White значения rgb одинаковы.

+0

, но обратите внимание, что OP использует Python 3, что означает: no 'raw_input' –

+0

И, кстати,' print ('\ n White ...') 'можно переписать, используя цикл for через словарь ключи –

+0

@AndreaCorbellini спасибо, что указали это. Будет обновлен ответ –

0

первый я бы переписать функцию get_color на что-то больше, как это

def get_color(): 
    print('Please introduce one of the following colors') 
    print(' \n White \n Black \n Red \n Green \n Blue \n Yellow \n Cyan \n Purple') 
    color = input().lower() 
    print (color) 
    if color == 'black': return Black 
    elif color == 'white': return White 
    elif color == 'red': return Red 
    elif color == 'green': return Green 
    elif color == 'blue': return Blue 
    elif color == 'yellow': return Yellow 
    elif color == 'purple': return Purple 
    elif color == 'cyan': return Cyan 
    else: return "Color not found!" 
Смежные вопросы