python - 我如何为变量分配不同的变化,所以如果输入与分配的变量之一匹配,那么答案是正确的
问题描述
创建一个猜字游戏,secret_word 可以有任何变体,但是我将如何编写程序识别的 secret_word 的不同变体?
在这种情况下,秘密词是“韩国”,我怎样才能统一任何变体还是必须插入每一种不同的变体?
secret_word = {"korea", "kOrea", "KoRea", "KoReA", "KOrea, "KORea",
"Korea", "KOREA"}
guess = ""
guess_count = 0
guess_limit = 3
out_of_guesses = False
while guess != secret_word and not (out_of_guesses):
if guess_count < guess_limit:
guess = input("Guess a word: ")
guess_count += 1
else:
out_of_guesses = True
if out_of_guesses:
print("Maybe Next time! You are out of guesses")
else:
print("You win!")
解决方案
简而言之:不区分大小写的检查是一个比乍一看要困难得多的问题。函数[ str.casefold()
python-doc]应该为此类比较生成一个字符串。
您检查输入的字符串是否与要猜测的字符串.casefold()
相同,例如:.casefold()
secret_word = 'korea'
guess_count = 0
guess_limit = 3
while guess_count < guess_limit:
guess = input('Guess a word')
if guess.casefold() == secret_word.casefold():
break
else:
guess_count += 1
if guess_count < guess_limit:
print('You win')
else:
print('You lose')
Unicode 标准.casefold()
假定它会生成一个字符串,该字符串可以进行比较以进行不区分大小写的比较。例如在德语中,eszett ß [wiki]以大写形式映射到:
>>> 'ß'.lower()
'ß'
>>> 'ß'.upper()
'SS'
>>> 'SS'.lower()
'ss'
>>> 'ß'.lower() == 'SS'.lower()
False
而.casefold()
将返回ss
:
>>> 'ß'.casefold()
'ss'
>>> 'ss'.casefold()
'ss'
>>> 'ß'.casefold() == 'SS'.casefold()
True
不区分大小写的比较结果是一个难题,因为某些字符没有大写/小写等价物等。
推荐阅读
- google-sheets - 我正在尝试在 Google 协助操作控制台上的应用程序上上传 Google 工作表,但它给出了错误?
- google-bigquery - 关于 BigQuery 数据容量的保存方式。(BigQuery/Data Portal/Data Studio/Google)
- c# - 单击“下一步”时如何使用 MessageBox 验证多个文本框?视觉工作室(c# Winforms)
- d3.js - D3.js 版本 3 是否支持 es6/es2015
- vba - 如何根据发件人域将电子邮件移动到文件夹
- javascript - 是否可以在 VueJs 中为 paypal 智能按钮有条件地呈现 src 脚本?
- php - Laravel excel 3.1问题导入文件时出现空白页
- prism - Prism 更改模块的排序顺序
- javascript - 在数组中查找项目的索引
- sql-server - 自动将 Active Directory 组和角色添加到 Azure SQL Server