我如何让用户猜测字母和相应的数字,刽子手风格?

2024-03-29 07:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个工作计划:

取一个短语并用1-26之间的随机数字进行编码 允许用户选择3个字母,以及计算机分配的编号 但我想做的是让用户能够猜出一个字母,以及他们认为正确的字母是什么,如果他们的猜测是正确的,允许他们继续,但如果是错误的,那么就这样说,让他们再试一次。最终允许他们猜出整个短语

希望这是有道理的:)

代码如下:

import string, random
import pandas as pd
#User Input
title = input("Please Enter A Title For This Puzzle: ")
if len(title) == 0:
    print("String is empty")
    quit()

phrase = input("Please Enter A Phrase To Be Encoded: ")
if len(phrase) == 0:
    print("String is empty")
    quit()


if not  phrase.islower():
    print("Please use lowercase for the phrase")
    quit()

#Numbers get assigned to the letters
nums = random.sample(range(1, 27), 26)
code = dict(zip(nums, string.ascii_lowercase))

print(    )
#Giveaway letters
num1 = int(input("Enter the first giveaway letter you would like (Note:a=0, b=1 ect): "))
num2 = int(input("Enter the second giveaway letter you would like (Note:a=0, b=1 ect): "))
#Code for Grid
code2 = {'Number': [[nums[num1]],[nums[num2]]],
        'Letter': (string.ascii_lowercase[num1],string.ascii_lowercase[num2]),
        }
#'Start' of Puzzle for the user  
print (  )
print ("The Title Of This Puzzle Is", title)
print(    )

df = pd.DataFrame(code2, columns = ['Number', 'Letter'])
code = dict(zip(string.ascii_lowercase, nums))
code.update({" ":100})
encoded = [code[item] for item in phrase]



print (df)
print(    )
print ("Hint: 100 is always a space")
print (encoded)

注意:我以前问过这个问题,但是在这种特殊情况下,提供的链接没有那么大帮助。如能提供示例或少量代码片段,将不胜感激

我一直在尝试我自己,但它看起来像一团乱,无法与此程序。不管这里是什么:

def make_a_guess():

          print("A is " + str(a))
          print("Make a guess...")
          Article_Guess = input("What letter: ").lower()
          Numerical_Guess = int(input("What number: "))

          if Article_Guess == 'a' and Numerical_Guess == a:
               print_letters()
               print("Correct, A: " + str(a))

          elif Article_Guess == 'b' and Numerical_Guess == b:
               print_letters()
               print("Correct, B: " + str(b))

          elif Article_Guess == 'C' and Numerical_Guess == c:
               print_letters()
               print("Correct, C: " + str(c))

          elif Article_Guess == 'D' and Numerical_Guess == d:
               print_letters()
               print("Correct, D: " + str(d))

          elif Article_Guess == 'E' and Numerical_Guess == e:
               print_letters()
               print("Correct, E: " + str(e))

          elif Article_Guess == 'F' and Numerical_Guess == f:
               print_letters()
               print("Correct, F: " + str(f))

          elif Article_Guess == 'G' and Numerical_Guess == g:
               print_letters()
               print("Correct, G: " + str(g))

          elif Article_Guess == 'H' and Numerical_Guess == h:
               print_letters()
               print("Correct, H: " + str(h))

          elif Article_Guess == 'I' and Numerical_Guess == i:
               print_letters()
               print("Correct, I: " + str(i))

          elif Article_Guess == 'J' and Numerical_Guess == j:
               print_letters()
               print("Correct, J: " + str(j))

          elif Article_Guess == 'K' and Numerical_Guess == k:
               print_letters()
               print("Correct, K: " + str(k))

          elif Article_Guess == 'L' and Numerical_Guess == l:
               print_letters()
               print("Correct, L: " + str(l))

          elif Article_Guess == 'M' and Numerical_Guess == m:
               print_letters()
               print("Correct, M: " + str(m))

          elif Article_Guess == 'N' and Numerical_Guess == n:
               print_letters()
               print("Correct, N: " + str(n))

          elif Article_Guess == 'O' and Numerical_Guess == o:
               print_letters()
               print("Correct, O: " + str(o))

          elif Article_Guess == 'P' and Numerical_Guess == p:
               print_letters()
               print("Correct, P: " + str(p))

          elif Article_Guess == 'Q' and Numerical_Guess == q:
               print_letters()
               print("Correct, Q: " + str(q))

          elif Article_Guess == 'R' and Numerical_Guess == r:
               print_letters()
               print("Correct, R: " + str(r))

          elif Article_Guess == 'S' and Numerical_Guess == s:
               print_letters()
               print("Correct, S: " + str(s))

          elif Article_Guess == 'T' and Numerical_Guess == t:
               print_letters()
               print("Correct, T: " + str(t))

          elif Article_Guess == 'U' and Numerical_Guess == u:
               print_letters()
               print("Correct, U: " + str(u))

          elif Article_Guess == 'V' and Numerical_Guess == v:
               print_letters()
               print("Correct, V: " + str(v))

          elif Article_Guess == 'W' and Numerical_Guess == w:
               print_letters()
               print("Correct, W: " + str(w))

          elif Article_Guess == 'X' and Numerical_Guess == x:
               print_letters()
               print("Correct, X: " + str(x))

          elif Article_Guess == 'Y' and Numerical_Guess == y:
               print_letters()
               print("Correct, Y: " + str(y))

          elif Article_Guess == 'Z' and Numerical_Guess == z:
               print_letters()
               print("Correct, Z: " + str(z))

1条回答
网友
1楼 · 发布于 2024-03-29 07:20:56

我以前没有使用过熊猫数据帧。我相信您也可以使用这些,但我发现使用内置结构更容易。
我在评论中建议使用字符列表。可能是这样的:

mylist = [ 'a', 'b', 'c' ]
print(mylist[1])
# outputs 'b', because that's at position 1 in the list

然而,由于您的代码中已经有一个数字和字符的dict,我们也可以使用这个codedict:

import string, random

def make_a_guess(solution):
    print("Make a guess...")
    letter = input("What letter: ").lower()
    number = int(input("What number: "))

    # the -1 is a default value to be returned if no valid number was provided. None would work just as well, if not better.
    if solution.get(number, -1) == letter:
        print("Correct, {} = {}".format(letter, number))
    else:
        print("Wrong, {} != {}".format(letter, number))

#User Input
title = input("Please Enter A Title For This Puzzle: ")
if len(title) == 0:
    print("String is empty")
    quit()

phrase = input("Please Enter A Phrase To Be Encoded: ")
if len(phrase) == 0:
    print("String is empty")
    quit()


if not  phrase.islower():
    print("Please use lowercase for the phrase")
    quit()

#Numbers get assigned to the letters
nums = random.sample(range(1, 27), 26)
code = dict(zip(nums, string.ascii_lowercase))

print('')

while True:
    make_a_guess(code)

当然,您仍然需要添加停止条件和允许用户以数字形式输入正确短语的方法。但是make_a_guess函数应该是我认为您正在寻找的


奖金问题

正如你在评论中所问的,我是否知道为什么我代码中的数字与索引中的数字相比相差1。 这可能仅仅是因为这里的这一行,它从1而不是027的最小值进行采样

nums = random.sample(range(1, 27), 26)

如果您将其更改为以下内容,它也将从0开始

nums = random.sample(range(0, 26), 26)

通常,数组从0开始计数,而不是从1开始计数,而且熊猫似乎遵守了这个约定

相关问题 更多 >