想了一天实在是搞不懂了
import randomwords = ["abandon", "band", "husband", "bound",]
chinese = [["放弃", "放纵"], ["乐队", "布条", "波段"], ["丈夫"], ["被束缚的"]]
w_c = zip(words, chinese)
list_w_c = list(w_c)
new_list_w_c = []
while True:
if len(new_list_w_c) == len(list_w_c):
new_list_w_c.clear()
break
word_choice = random.choice(list_w_c) 这些代码主要目的是随机打印出一个单词,且不重复,
if word_choice in new_list_w_c:
continue
new_list_w_c.append(word_choice)
print(word_choice)
主要问题在这里
while True:
put_chinese = input()
put_chinese_es = put_chinese.split(',')
for each_put_chinese in put_chinese_es:
if each_put_chinese in word_choice:
print("哎呦,不错哦,继续加油吧!!!")
break 在这里写break,不知道为什么跳不出这个循环,会出现你写对了汉语也打印了“”这句话,但是他不会给你一个新单词,光标就停
else: 在那里了,然后你按enter时 他会打印出 else中的话也不是给你一个新单词
print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
print(word_choice)
continue
break 只有在这里写他才会当你输入正确后会立即返回给你一个值,相当于结束了这个小循环,又来了一次大循环,但是,此时你若
是写错了汉语,他也是结束小循环,再来一次大循环,但我的目的是让他在重复一次小循环
我目前就只知道这么写,有哪位大神可以帮忙解决这个问题,,,,或者有自己的方法来实现次目的,
跪求跪求跪求
发代码的时候能不能放在代码专用区域里面,类似这样:
int main(void) {
}
你这样看的好累。复制下来格式也有点乱 本帖最后由 jackz007 于 2021-10-29 11:26 编辑
如果我没有猜错的话,楼主是想随机抽取英语单词,然后从键盘输入对应中文词意,并判断是否正确吧?
#coding:gbk
import random
words = ["abandon", "band", "husband", "bound",]
chinese = [["放弃", "放纵"], ["乐队", "布条", "波段"], ["丈夫"], ["被束缚的"]]
w_c = zip(words, chinese)
list_w_c = list(w_c)
new_list_w_c = []
while True:
if len(new_list_w_c) == len(list_w_c):
break
else:
word_choice = random . choice(list_w_c)
if not word_choice in new_list_w_c:
f = True
while f:
put_chinese = input('英语单词 [ %s ] 的汉语意思是 : ' % word_choice) . strip()
put_chinese_es = put_chinese . split(',')
for each_put_chinese in put_chinese_es:
if each_put_chinese in word_choice:
print("哎呦,不错哦,继续加油吧!!!")
new_list_w_c . append(word_choice)
f = False
if f:
print("你写的意思不正确哦,想一想或者查看资料后再填写吧!!!")
print() 复制了你的代码,不知道是不是下面这样的。python语法我不是很懂,但是里面有几个我看的有点奇怪。
import random
words = ["abandon", "band", "husband", "bound",]
chinese = [["放弃", "放纵"], ["乐队", "布条", "波段"], ["丈夫"], ["被束缚的"]]
w_c = zip(words, chinese)
list_w_c = list(w_c)
new_list_w_c = [] #这里new_list_w_c 不是空的么?为什么下面可以从里面拿出来遍历?
while True:
if len(new_list_w_c) == len(list_w_c):
new_list_w_c.clear()
break
word_choice = random.choice(list_w_c)
if word_choice in new_list_w_c:#比如这个地方,new_list_w_c 这个不是空的么?
continue
new_list_w_c.append(word_choice)
print(word_choice)
#主要问题在这里
while True:
put_chinese = input()
put_chinese_es = put_chinese.split(',')
for each_put_chinese in put_chinese_es:
if each_put_chinese in word_choice:
print("哎呦,不错哦,继续加油吧!!!")
break
else:
print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
print(word_choice)
continue
break #还有这个位置的break是干嘛用的?我有点看不明白,明明没有条件判断,怎么突然蹦出来一个break wutianlong220 发表于 2021-10-28 23:13
复制了你的代码,不知道是不是下面这样的。python语法我不是很懂,但是里面有几个我看的有点奇怪。
我也很奇怪但必须在这里写一个break才能在执行一次大循环。你可以在pycharm里面试一下 wutianlong220 发表于 2021-10-28 23:13
复制了你的代码,不知道是不是下面这样的。python语法我不是很懂,但是里面有几个我看的有点奇怪。
他开始是一个空列表,但当你取一个单词,就会把他放进这个列表,遍历是为了在随机抽取单词时,不重复,大致就是随机取一个单词,判断是否在这个列表,在的话说明随机取得重复了,就在执行一遍,不在说明是个新的元素,所以就走上面的,然后打印出来,我的问题是处在下面的小循环,至于那个为什么加break ,说实话我也搞不懂。但必须在这里加上才会再次执行上面的大循环,即上面的while wutianlong220 发表于 2021-10-28 23:02
发代码的时候能不能放在代码专用区域里面,类似这样:
你这样看的好累。复制下来格式也有点乱
在哪里找代码专用区域,怎么发这样的帖子,新人求指导 本帖最后由 zlj19931010 于 2021-10-29 08:31 编辑
加个标识量判断当前输入的翻译是否正确 就行了
is_find = False
import random
words = ["abandon", "band", "husband", "bound", ]
chinese = [["放弃", "放纵"], ["乐队", "布条", "波段"], ["丈夫"], ["被束缚的"]]
w_c = zip(words, chinese)
list_w_c = list(w_c)
new_list_w_c = []
while True:
if len(new_list_w_c) == len(list_w_c):
print("你已经复习完毕了!")
break
word_choice = random.choice(list_w_c)
if word_choice in new_list_w_c:
continue
new_list_w_c.append(word_choice)
print(word_choice)
while True:
put_chinese = input()
put_chinese_es = put_chinese.split(',')
# 开始循环查找是否翻译正确
is_find = False
for each_put_chinese in put_chinese_es:
if each_put_chinese in word_choice:
print("哎呦,不错哦,继续加油吧!!!")
is_find = True
break
# 判断是否找到
if is_find:
break
else:
print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
print(word_choice)
Python 就是简单化代码,为什么复杂化?
import random
dictionary = {"abandon": ["放弃", "放纵"], "band": ["乐队", "布条", "波段"], "husband": ["丈夫"], "bound": ["被束缚的"]}
res = []
while True:
word = random.choice(list(dictionary.keys()))
if word in res: continue
res.append(word)
while True:
print(word)
answer = input()
if answer in dictionary:
print("哎呦,不错哦,继续加油吧!!!")
break
else: print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
if len(res) == len(list(dictionary.keys())): break
print("你已经复习完毕了!") zlj19931010 发表于 2021-10-29 08:30
加个标识量判断当前输入的翻译是否正确 就行了
is_find = False
哥们,确实可以了,我以前也试过,我用的是count=0 然后在 如果正确就写count==1,然后判断count是否等于1 但是结果却是不行,我没有想到用true和flase,,谢谢了 傻眼貓咪 发表于 2021-10-29 10:29
Python 就是简单化代码,为什么复杂化?
哥们确实不错,但是我的一个最重要的目的你没有解决,,,那就是我前面问的一个小问题,就是一个单词有很多意思,我不可能保证全部写出来所以当我写出其中的一个或者两个,或者顺序错误,都能搞算已经掌握了这个单词,所以有加了很多,是吧 本帖最后由 傻眼貓咪 于 2021-10-29 12:50 编辑
老王来也 发表于 2021-10-29 12:40
哥们确实不错,但是我的一个最重要的目的你没有解决,,,那就是我前面问的一个小问题,就是一个单词有很 ...
你先试了我的代码再说,看是不是你想要的:“只输入单一意思就可以当作掌握这个词”,我的代码应该完全没有这方面问题 老王来也 发表于 2021-10-29 12:40
哥们确实不错,但是我的一个最重要的目的你没有解决,,,那就是我前面问的一个小问题,就是一个单词有很 ...
看来你根本没有试我的代码啊!我哭啊!{:10_266:} 学习是为了提升自己的知识水平,不是看见不明白的就略过
兄弟,如果知道你会略过我的代码,我就不写了 老王来也 发表于 2021-10-29 12:25
哥们,确实可以了,我以前也试过,我用的是count=0 然后在 如果正确就写count==1,然后判断count是否等 ...
嗯 都是用标识量 0、1和True、False一样
你不行可能是代码有其他逻辑错误吧。 傻眼貓咪 发表于 2021-10-29 12:50
看来你根本没有试我的代码啊!我哭啊!
跟门我亲自创建了一个film去试验你的代码,你告诉我如歌打印出band这个单词但是我只知道其中两个汉语意思,你写上去试试,你怎么写都不行只能写一个 傻眼貓咪 发表于 2021-10-29 12:57
学习是为了提升自己的知识水平,不是看见不明白的就略过
兄弟,如果知道你会略过我的代码,我就不写了
额,不会呀,凡是回答的楼主我都会仔细 去看 去思考 去亲自试试 傻眼貓咪 发表于 2021-10-29 12:48
你先试了我的代码再说,看是不是你想要的:“只输入单一意思就可以当作掌握这个词”,我的代码应该完全 ...
husband
丈夫
哎呦,不错哦,继续加油吧!!!
band
"乐
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队,波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队,波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队 波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
哥们你说说这是怎么回事,并且你怎么输入能让他报正确,我是试了好多,或许可以,可能是我还不知道怎么能让他报正确吧
页:
[1]