2017-02-14 370 views
-1

我的目標是允許用戶輸入兩個變量的RGB值,但我不知道如何讓Python預先用標籤識別RGB值,例如intfloat標籤。我的代碼示例如下所示。如何讓python識別RGB輸入?

shape_fill = input ("Which color do you want to fill your shape? Please enter an RGB value. ")) 
shape_pen = input ("Which color do you want the outline of your shape to be? Please enter an RGB value. ") 

有沒有人有解決方案?

順便說一句 - 我正在使用龜圖形,這是否有任何影響?

+0

我只是想讓你知道,我現在已經解決了這個問題。我通過將RGB值分成三個不同的int來實現這一點,並要求用戶輸入三個不同的值。 –

回答

0

只是讓用戶輸入逗號分隔值:

R, G, B = map(float, input("Enter comma-separated: ").split(',')) 

所以,當一個人進入2.3, 6.7, 34.8,的RGB的值將是從輸入提取的浮動。

你也可以這樣做:

shape_fill = map(...) 
shape_pen = map(...) 

然後後來解開彩車與R, G, B = shape_something

+0

對不起@ForceBru,但似乎沒有工作。錯誤消息說'字符串'不能被轉換爲'float'。 –

+0

@ A.Kassam,哦,對不起,我忘了給'split'添加一個重要的參數。應該現在工作。 – ForceBru

-1

我相信它確實會改變輸入法,如果你使用烏龜圖形 試着找at this website看看是否有幫助。

0

下面可能做你想要的東西 - 還沒有在前面的討論中被提及的一個問題是turtle.colormode()影響你是否希望整數或浮點數輸入:

from turtle import Turtle, Screen 

def input_rgb(prompt=""): 
    triple = None 

    text = prompt + "Enter comma-separated RGB values: " 

    while True: 
     try: 
      triple_string = input(text).split(',', maxsplit=2) 

      if len(triple_string) != 3: 
       continue 

      if isinstance(screen.colormode(), float): 
       triple = map(float, triple_string) 
      else: 
       triple = map(int, triple_string) 

     except ValueError: 
      continue 

     break 

    return triple 

screen = Screen() 

yertle = Turtle(shape="turtle") 

yertle.fillcolor(input_rgb("Fill color? ")) 
yertle.pencolor(input_rgb("Outline color? ")) 

yertle.begin_fill() 
yertle.circle(100) 
yertle.end_fill() 

screen.exitonclick() 

用法

% python3 test.py 
Fill color? Enter comma-separated RGB values: 1.0,0.0,0.0 
Outline color? Enter comma-separated RGB values: 0.0,0.0,1.0 

輸出

enter image description here

(你)的下一個挑戰是轉換input_rgb()用烏龜圖形輸入程序,而不是input()

turtle.textinput(title, prompt) 
turtle.numinput(title, prompt, default=None, minval=None, maxval=None) 
+0

對不起,@cdlane,但我的代碼出現了以下錯誤消息: –

+0

NameError:名稱'屏幕'未定義 –

+0

@ A.Kassam我剛剛從SO頁面複製我的答案到一個文件,它在Python下運行良好3.6.0。你一定有錯誤的東西,重新檢查並再試一次。 – cdlane