string => list
list => set 으로 변환
'Python' 카테고리의 다른 글
| 야구게임 Lab (0) | 2017.05.05 |
|---|---|
| 난수발생, 코드테스트 (0) | 2017.04.13 |
| 반복문 (0) | 2017.04.12 |
| 파이썬 조건문(if-else문법) (0) | 2017.04.10 |
| 화면 입출력 및 배열 (0) | 2017.04.10 |
string => list
list => set 으로 변환
| 야구게임 Lab (0) | 2017.05.05 |
|---|---|
| 난수발생, 코드테스트 (0) | 2017.04.13 |
| 반복문 (0) | 2017.04.12 |
| 파이썬 조건문(if-else문법) (0) | 2017.04.10 |
| 화면 입출력 및 배열 (0) | 2017.04.10 |
# -*- coding: utf-8 -*-
import random
def get_random_number():
# Helper Function - 지우지 말 것
# 100부터 999까지 수를 램덤하게 반환함
return random.randrange(100, 1000)
def is_digit(user_input_number):
# '''
# Input:
# - user_input_number : 문자열 값
# Output:
# - user_input_number가 정수로 변환 가능할 경우는 True,
# 그렇지 않을 경우는 False
# Examples:
# >>> import baseball_game as bg
# >>> bg.is_digit("551")
# True
# >>> bg.is_digit("103943")
# True
# >>> bg.is_digit("472")
# True
# >>> bg.is_digit("1032.203")
# False
# >>> bg.is_digit("abc")
# False
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
result = user_input_number.isdigit()
# ==================================
return result
def is_between_100_and_999(user_input_number):
# '''
# Input:
# - user_input_number : 문자열 값
# 입력된 값은 숫자형태의 문자열 값임이 보장된다.
# Output:
# - user_input_number가 정수로 변환하여 100이상 1000미만일 경우 True,
# 그렇지 않을 경우는 False
# Examples:
# >>> import baseball_game as bg
# >>> bg.is_between_100_and_999("551")
# True
# >>> bg.is_between_100_and_999("103943")
# False
# >>> bg.is_between_100_and_999("472")
# True
# >>> bg.is_between_100_and_999("0")
# False
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
result = (int(user_input_number) >= 100 and int(user_input_number) < 1000)
# ==================================
return result
def is_duplicated_number(three_digit):
# '''
# Input:
# - three_digit : 문자열로 된 세자리 양의 정수 값
# 문자열로 된 세자리 양의 정수값의 입력이 보장된다.
# Output:
# - three_digit 정수로 변환하였을 경우 중복되는 수가 있으면 True,
# 그렇지 않을 경우는 False
# ex) 117 - True, 123 - False, 103 - False, 113 - True
# Examples:
# >>> import baseball_game as bg
# >>> bg.is_duplicated_number("551")
# True
# >>> bg.is_duplicated_number("402")
# False
# >>> bg.is_duplicated_number("472")
# False
# >>> bg.is_duplicated_number("100")
# True
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
result = False
for d in three_digit:
if three_digit.count(d) > 1:
result = True
break
# ==================================
return result
def is_validated_number(user_input_number):
# '''
# Input:
# - user_input_number : 문자열 값
# Output:
# - user_input_number 값이 아래 조건이면 True, 그렇지 않으면 False를 반환
# 1) 숫자형 문자열이며, 2) 100이상 1000미만이며, 3) 중복되는 숫자가 없을 경우
# Examples:
# >>> import baseball_game as bg
# >>> bg.is_validated_number("amvd")
# False
# >>> bg.is_validated_number("402")
# True
# >>> bg.is_validated_number("472")
# True
# >>> bg.is_validated_number("100")
# False
# >>> bg.is_validated_number("1000")
# False
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
result = False
if is_digit(user_input_number) and is_between_100_and_999(user_input_number) and not is_duplicated_number(user_input_number):
result = True
# ==================================
return result
def get_not_duplicated_three_digit_number():
# '''
# Input:
# - None : 입력값이 없음
# Output:
# - 중복되는 숫자가 없는 3자리 정수값을 램덤하게 생성하여 반환함
# 정수값으로 문자열이 아님
# Examples:
# >>> import baseball_game as bg
# >>> bg.get_not_duplicated_three_digit_number()
# 125
# >>> bg.get_not_duplicated_three_digit_number()
# 634
# >>> bg.get_not_duplicated_three_digit_number()
# 583
# >>> bg.get_not_duplicated_three_digit_number()
# 381
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
# get_random_number() 함수를 사용하여 random number 생성
result = 0
while True:
result = get_random_number()
if is_validated_number(str(result)):
break
# ==================================
return result
def get_strikes_or_ball(user_input_number, random_number):
# '''
# Input:
# - user_input_number : 문자열값으로 사용자가 입력하는 세자리 정수
# - random_number : 문자열값으로 컴퓨터가 자동으로 생성된 숫자
# Output:
# - [strikes, ball] : 규칙에 따라 정수형 값인 strikes와 ball이 반환됨
# 변환 규칙은 아래와 같음
# - 사용자가 입력한 숫자와 컴퓨터가 생성한 숫자의
# 한 숫자와 자릿수가 모두 일치하면 1 Strike
# - 자릿수는 다르나 입력한 한 숫자가 존재하면 1 Ball
# - 세자리 숫자를 정확히 입력하면 3 Strike
# Examples:
# >>> import baseball_game as bg
# >>> bg.get_strikes_or_ball("123", "472")
# [0, 1]
# >>> bg.get_strikes_or_ball("547", "472")
# [0, 2]
# >>> bg.get_strikes_or_ball("247", "472")
# [0, 3]
# >>> bg.get_strikes_or_ball("742", "472")
# [1, 2]
# >>> bg.get_strikes_or_ball("472", "472")
# [3, 0]
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
strike = 0
ball = 0
for ui in range(0, len(user_input_number)):
if user_input_number[ui] in random_number[ui]:
strike += 1
elif user_input_number[ui] in random_number:
ball += 1
result = [strike, ball]
# ==================================
return result
def is_yes(one_more_input):
# '''
# Input:
# - one_more_input : 문자열값으로 사용자가 입력하는 문자
# Output:
# - 입력한 값이 대소문자 구분없이 "Y" 또는 "YES"일 경우 True,
# 그렇지 않을 경우 False를 반환함
# Examples:
# >>> import baseball_game as bg
# >>> bg.is_yes("Y")
# True
# >>> bg.is_yes("y")
# True
# >>> bg.is_yes("Yes")
# True
# >>> bg.is_yes("YES")
# True
# >>> bg.is_yes("abc")
# False
# >>> bg.is_yes("213")
# False
# >>> bg.is_yes("4562")
# False
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
result = False
upper_input = one_more_input.upper()
if upper_input == "Y" or upper_input == "YES":
result = True
# ==================================
return result
def is_no(one_more_input):
# '''
# Input:
# - one_more_input : 문자열값으로 사용자가 입력하는 문자
# Output:
# - 입력한 값이 대소문자 구분없이 "N" 또는 "NO"일 경우 True,
# 그렇지 않을 경우 False를 반환함
# Examples:
# >>> import baseball_game as bg
# >>> bg.is_no("Y")
# False
# >>> bg.is_no("b")
# False
# >>> bg.is_no("n")
# True
# >>> bg.is_no("NO")
# True
# >>> bg.is_no("nO")
# True
# >>> bg.is_no("1234")
# False
# >>> bg.is_no("yes")
# False
# '''
# ===Modify codes below=============
# 조건에 따라 변환되어야 할 결과를 result 변수에 할당
result = False
upper_input = one_more_input.upper()
if upper_input == "N" or upper_input == "NO":
result = True
# ==================================
return result
def main():
print("Play Baseball")
user_input = 999
EndGame = False
while EndGame is False:
strikeAndBalls = [0,0]
random_number = str(get_not_duplicated_three_digit_number())
print("Random Number is : ", random_number)
# ===Modify codes below=============
# 위의 코드를 포함하여 자유로운 수정이 가능함
while strikeAndBalls[0] < 3:
user_input = input("Input guess number : ")
if user_input == "0":
EndGame = True
break
elif is_validated_number(user_input):
strikeAndBalls = get_strikes_or_ball(user_input, random_number)
print("Strikes : ", strikeAndBalls[0], " , Balls : ", strikeAndBalls[1])
else:
print("Wrong Input, Input again")
while EndGame is False:
OneMore = input("You win, one more(Y/N) ?")
if is_no(OneMore):
EndGame = True
break
elif is_yes(OneMore):
break
else:
print("Wrong Input, Input again")
# ==================================
print("Thank you for using this program")
print("End of the Game")
if __name__ == "__main__":
main()
| string to list, list to set (0) | 2017.05.06 |
|---|---|
| 난수발생, 코드테스트 (0) | 2017.04.13 |
| 반복문 (0) | 2017.04.12 |
| 파이썬 조건문(if-else문법) (0) | 2017.04.10 |
| 화면 입출력 및 배열 (0) | 2017.04.10 |
[Player.cs]
using UnityEngine;
public class Player : MonoBehaviour {
public int id;
public string playerName;
public string backStory;
public float health;
public float damage;
public float weapon1Damage, weapon2Damage;
public string shoesName;
public int shoesSize;
public string shoesType;
// Use this for initialization
void Start () {
health = 50;
}
// Update is called once per frame
void Update () {
}
}
[PlayerInspector2.cs] - Editor폴더에 존재
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Player))]
[CanEditMultipleObjects]
public class PlayerInspector2 : Editor {
Player player;
SerializedProperty playerName;
SerializedProperty playerHealth;
private void OnEnable()
{
player = (Player)target;
playerName = serializedObject.FindProperty("playerName");
playerHealth = serializedObject.FindProperty("health");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.BeginVertical();
EditorGUILayout.PropertyField(playerName);
if(playerHealth.floatValue < 20)
{
GUI.color = Color.red;
}
if (playerHealth.floatValue > 80)
{
GUI.color = Color.green;
}
EditorGUILayout.PropertyField(playerHealth);
GUI.color = Color.white;
EditorGUILayout.EndVertical();
serializedObject.ApplyModifiedProperties();
}
}
| FSM 엔진 (0) | 2017.06.11 |
|---|---|
| Custom Inspector (0) | 2017.05.03 |
| EditorWindow 사용예 (0) | 2017.05.02 |
| Custom Editor Window - GUI (0) | 2017.05.02 |
| Editor Scripting Tip [Built-in Attribute] (0) | 2017.05.02 |