Все Перечислимые объекты для строкового представления (C#)

Ваш код всегда будет оцениваться как истинный

if again == "yes" or "YES":

Измените его на:

if again.lower() == "yes":

Или

 if again in ("YES", "yes", "y",..)

Когда он истинный, вам нужно чтобы оторвать от вас второй цикл:

if again.lower() == "yes":
    replay = replay + 1
    break

Когда оно ложно, не прерывайте, а выйдите из программы, используя:

exit()

Поскольку воспроизведение используется только для выхода из вашего кода, вам это не нужно, если вы используете exit ().

Тогда код будет: импортировать случайным образом

while True:
    target = random.randint(1, 100)
    guess = int(input("Guess the number 1-100: "))

    score = 0

    while True:
        score = score + 1
        if guess < target:
             print ("The number is higher. Try again.")
             guess = int(input("Guess the number 1-100: "))
        elif guess > target:
             print ("The number is lower. Try again.")
             guess = int(input("Guess the number 1-100: "))
        elif guess == target:
             print ("You guessed Correctly!")
             print ("Your score was:", score)
             again = str(input("Play again? (yes or no)"))
             if again.lower() == "yes":
                 break
             elif again.lower() == "no":
                 exit()
23
задан Keltex 10 April 2009 в 15:24
поделиться

5 ответов

string s = string.Join(",",Enum.GetNames(typeof(LogicOperands)));
65
ответ дан 29 November 2019 в 00:47
поделиться

Вы должны сделать что-то вроде этого:

var sbItems = new StringBuilder()
foreach (var item in Enum.GetNames(typeof(LogicOperands)))
{
    if(sbItems.Length>0)
        sbItems.Append(',');
    sbItems.Append(item);
}

Или в Linq:

var list = Enum.GetNames(typeof(LogicOperands)).Aggregate((x,y) => x + "," + y);
12
ответ дан 29 November 2019 в 00:47
поделиться
string LogicOperandsStr 
     = Enum.GetNames(typeof(LogicOoperands)).Aggregate((current, next)=> 
                                                       current + "," + next);
2
ответ дан 29 November 2019 в 00:47
поделиться

Хотя ответ @ Moose самый лучший, я Рекомендуется кешировать значение, так как вы можете часто его использовать, но вряд ли оно изменится во время выполнения на 100% - если только вы не изменяете и не перекомпилируете перечисление. :)

Примерно так:

public static class LogicOperandsHelper
{
  public static readonly string OperandList = 
    string.Join(",", Enum.GetNames(typeof(LogicOperands)));
}
1
ответ дан 29 November 2019 в 00:47
поделиться
foreach (string value in Enum.GetNames(typeof(LogicOoperands))
{
    str = str + "," + value;
}
0
ответ дан 29 November 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: