import random
def load_words(file):
f = open(file, "r", encoding="UTF-8")
words = []
for word in f.readlines():
words.append(word.strip('\n'))
words.sort()
return words
def pick_a_word(words):
n = len(words)
index = random.randint(0, n-1)
return words[index]
def level(m):
print("난이도1~3 1급 단어//3 ; 2급 단어//2 ; 3급 모든 단어")
n=input("난이도 입력:")
if n=="1":
return len(m)//3
elif n=="2":
return len(m)//2
else:
return len(m)
def puncture_word(word, n):
target = random.sample(list(word),n)
result = ""
for s in word:
if s in target:
result = result + "_"
else:
result = result + s
return result, target
def guess(picked_word, quiz_word, target,n,k):
n*=2
print("매번 단어를 맞히는 횟수가 빈칸을 채우는 횟수의 2배입니다(尝试的机会是空格的2倍), so 이번 단어 찾는 기획:", n)
c = input("guess a hidden character : ")
#ord('a') == 97, ord('z') == 122
while not(len(c) == 1 and 97 <= ord(c) <= 122):
c = input("guess a hidden character : ")
if c in target:
target.remove(c)
quiz_word = ""
for i in range(len(picked_word)):
if picked_word[i] in target:
quiz_word += "_"
else:
quiz_word += picked_word[i]
else:
k += 1
print("오답입니다. 현재까지 틀린 횟수(截止到现在次错误的次数):", k)
if k >= n:
print("틀린 횟수가 너무 많습니다. 프로그램을 종료합니다.")
exit()
return quiz_word, target,k
def main():
sorted_words = load_words("/Users/wangzhehan/Downloads/words_sample.txt")
picked_word = pick_a_word(sorted_words)
n=level(picked_word)
quiz_word, target = puncture_word(picked_word, n)
k = 0
while '_' in quiz_word and k < n:
print(quiz_word)
quiz_word, target,k= guess(picked_word, quiz_word, target,n,k)
#if k >= n * 2:
#print("틀린 횟수가 너무 많습니다. 프로그램을 종료합니다.")
#print(quiz_word)
#print("失败!")
#exit()
print(quiz_word)
print("축하합니다!")
@Dick_不周 哥 正常输入但输入错误的时候记一次错误的次数,但非正常输入不计入错误输入次数,在超过规定次数后直接打印 失败 但我试了很多次 在各个地方补充这个要求 但要么不满足要求 要么代码运行出错 能帮我看看吗?😭 拜-托啦🙏!
x = int(input('请输入一个数字x:'))
y = int(input('请输入一个数字y:'))
z = x -y
if z % 2 != 0:
print(z)
else:
print('结果不是奇数')
运行结果:
请输入一个数字x: 4
请输入一个数字y: 1
3
我可以帮你优化猜词游戏的Python代码,以下是具体步骤:
在现有的代码基础上,增加一个变量来记录错误次数,初始值为0,例如 err_count = 0。
在用户输入的语句中加入判断错误次数的逻辑,如果错误次数达到了规定次数,则直接打印“失败”并退出游戏。例如:
while err_count < max_err:
# 获取用户输入
guess = input("请猜一个单词:")
# 判断用户猜测是否正确
if guess == target_word:
print("恭喜你,猜对了!")
break
else:
err_count += 1
print("抱歉,猜错了!你还有", max_err - err_count, "次机会。")
if err_count == max_err:
print("失败!正确答案是", target_word)
if guess == target_word:
correct_count += 1
else:
err_count += 1
完整优化后的代码如下:
import random
words = ["python", "java", "ruby", "javascript"]
target_word = random.choice(words)
max_err = 5
correct_count = 0
err_count = 0
print("欢迎来到猜词游戏!")
print("游戏规则:你需要在", max_err, "次机会内猜出所选单词。")
while err_count < max_err:
# 获取用户输入
guess = input("请猜一个单词:")
# 判断用户猜测是否正确
if guess == target_word:
correct_count += 1
print("恭喜你,猜对了!")
break
else:
err_count += 1
print("抱歉,猜错了!你还有", max_err - err_count, "次机会。")
if err_count == max_err:
print("失败!正确答案是", target_word)
希望能够帮助到你!如果还有其他问题,欢迎随时跟我交流。
这啥代码,k都没定义呀
而且定义了一堆函数,没有调用,能运行才怪
你写一个函数就调一个函数,不要洋洋洒洒写了好几百行代码一起执行
那出问题鬼知道是哪出的问题
我理解一下你的需求,你希望在用户输入无效字符时不增加错误计数,超过一定次数后打印
修改你的guess方法,关键在continue和exit(),做了关键的判断,试试看看:
def guess(picked_word, quiz_word, target,n,k):
n*=2
print("매번 단어를 맞히는 횟수가 빈칸을 채우는 횟수의 2배입니다(尝试的机会是空格的2倍), so 이번 단어 찾는 기획:", n)
c = input("guess a hidden character : ")
while not(len(c) == 1 and 97 <= ord(c) <= 122):
c = input("guess a hidden character : ")
continue
if c in target:
target.remove(c)
quiz_word = ""
for i in range(len(picked_word)):
if picked_word[i] in target:
quiz_word += "_"
else:
quiz_word += picked_word[i]
else:
k += 1
print("오답입니다. 현재까지 틀린 횟수(截止到现在次错误的次数):", k)
if k >= n:
print("틀린 횟수가 너무 많습니다. 프로그램을 종료합니다.")
exit()
return quiz_word, target,k
如果有帮助,请点击一下采纳该答案~谢谢
最后一行后面忘了复制打main()了 是运行了的