鱼C论坛

 找回密码
 立即注册
查看: 2989|回复: 17

[已解决]想了一天实在是搞不懂了

[复制链接]
发表于 2021-10-28 22:30:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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):
        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[0])
  

主要问题在这里
    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[1]:
                print("哎呦,不错哦,继续加油吧!!!")
                break                                                                        在这里写break,不知道为什么跳不出这个循环,会出现你写对了汉语也打印了“”这句话,但是他不会给你一个新单词,光标就停
            else:                                                                              在那里了,然后你按enter时 他会打印出 else中的话也不是给你一个新单词
                print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
                print(word_choice[0])
                continue
         break                                                                                      只有在这里写他才会当你输入正确后会立即返回给你一个值,相当于结束了这个小循环,又来了一次大循环,但是,此时你若
                                                                                                     是写错了汉语,他也是结束小循环,再来一次大循环,但我的目的是让他在重复一次小循环

        
我目前就只知道这么写,有哪位大神可以帮忙解决这个问题,,,,或者有自己的方法来实现次目的,
跪求  跪求  跪求
最佳答案
2021-10-29 08:30:15
本帖最后由 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[0])

    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[1]:
                print("哎呦,不错哦,继续加油吧!!!")
                is_find = True
                break

        # 判断是否找到
        if is_find:
            break
        else:
            print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
            print(word_choice[0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-28 23:02:34 | 显示全部楼层
发代码的时候能不能放在代码专用区域里面,类似这样:
int main(void) {
}
你这样看的好累。复制下来格式也有点乱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-28 23:11:48 | 显示全部楼层
本帖最后由 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[0]) . strip()
                put_chinese_es = put_chinese . split(',')
                for each_put_chinese in put_chinese_es:
                    if each_put_chinese in word_choice[1]:
                        print("哎呦,不错哦,继续加油吧!!!")
                        new_list_w_c . append(word_choice)
                        f = False
                if f:
                    print("你写的意思不正确哦,想一想或者查看资料后再填写吧!!!")
                print()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-28 23:13:46 | 显示全部楼层
复制了你的代码,不知道是不是下面这样的。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[0])
  

#主要问题在这里
    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[1]:
                print("哎呦,不错哦,继续加油吧!!!")
                break                                                                        
            else:                                                                              
                print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
                print(word_choice[0])
                continue
         break            #还有这个位置的break是干嘛用的?我有点看不明白,明明没有条件判断,怎么突然蹦出来一个break                                                                          
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-29 07:21:20 | 显示全部楼层
wutianlong220 发表于 2021-10-28 23:13
复制了你的代码,不知道是不是下面这样的。python语法我不是很懂,但是里面有几个我看的有点奇怪。

我也很奇怪但必须在这里写一个break才能在执行一次大循环。你可以在pycharm里面试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-10-29 07:29:52 | 显示全部楼层
wutianlong220 发表于 2021-10-28 23:13
复制了你的代码,不知道是不是下面这样的。python语法我不是很懂,但是里面有几个我看的有点奇怪。

他开始是一个空列表,但当你取一个单词,就会把他放进这个列表,遍历是为了在随机抽取单词时,不重复,大致就是随机取一个单词,判断是否在这个列表,在的话说明随机取得重复了,就在执行一遍,不在说明是个新的元素,所以就走上面的,然后打印出来,我的问题是处在下面的小循环,至于那个为什么加break ,说实话我也搞不懂。但必须在这里加上才会再次执行上面的大循环,即上面的while
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2021-10-29 07:31:08 | 显示全部楼层
wutianlong220 发表于 2021-10-28 23:02
发代码的时候能不能放在代码专用区域里面,类似这样:

你这样看的好累。复制下来格式也有点乱

在哪里找代码专用区域,怎么发这样的帖子,新人求指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-29 08:30:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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[0])

    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[1]:
                print("哎呦,不错哦,继续加油吧!!!")
                is_find = True
                break

        # 判断是否找到
        if is_find:
            break
        else:
            print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
            print(word_choice[0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 10:29:46 | 显示全部楼层
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[word]:
            print("哎呦,不错哦,继续加油吧!!!")
            break
        else: print("你写的意思不正确哦,想一想或者查看资料后在填写吧!!!")
    if len(res) == len(list(dictionary.keys())): break
print("你已经复习完毕了!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-29 12:25:05 | 显示全部楼层
zlj19931010 发表于 2021-10-29 08:30
加个标识量判断当前输入的翻译是否正确 就行了
is_find = False

哥们,确实可以了,我以前也试过,我用的是count=0   然后在 如果正确就写count==1,然后判断count是否等于1 但是结果却是不行,我没有想到用true和flase,,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-10-29 12:40:50 | 显示全部楼层
傻眼貓咪 发表于 2021-10-29 10:29
Python 就是简单化代码,为什么复杂化?

哥们确实不错,但是我的一个最重要的目的你没有解决,,,那就是我前面问的一个小问题,就是一个单词有很多意思,我不可能保证全部写出来所以当我写出其中的一个或者两个,或者顺序错误,都能搞算已经掌握了这个单词,所以有加了很多,是吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 12:48:32 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-10-29 12:50 编辑
老王来也 发表于 2021-10-29 12:40
哥们确实不错,但是我的一个最重要的目的你没有解决,,,那就是我前面问的一个小问题,就是一个单词有很 ...


你先试了我的代码再说,看是不是你想要的:“只输入单一意思就可以当作掌握这个词”,我的代码应该完全没有这方面问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 12:50:08 | 显示全部楼层
老王来也 发表于 2021-10-29 12:40
哥们确实不错,但是我的一个最重要的目的你没有解决,,,那就是我前面问的一个小问题,就是一个单词有很 ...

看来你根本没有试我的代码啊!我哭啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 12:57:29 | 显示全部楼层
学习是为了提升自己的知识水平,不是看见不明白的就略过

兄弟,如果知道你会略过我的代码,我就不写了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 14:45:05 | 显示全部楼层
老王来也 发表于 2021-10-29 12:25
哥们,确实可以了,我以前也试过,我用的是count=0   然后在 如果正确就写count==1,然后判断count是否等 ...

嗯 都是用标识量 0、1和True、False一样

你不行可能是代码有其他逻辑错误吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-29 18:08:37 | 显示全部楼层
傻眼貓咪 发表于 2021-10-29 12:50
看来你根本没有试我的代码啊!我哭啊!

跟门我亲自创建了一个film去试验你的代码,你告诉我如歌打印出band这个单词但是我只知道其中两个汉语意思,你写上去试试,你怎么写都不行只能写一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-29 18:10:30 | 显示全部楼层
傻眼貓咪 发表于 2021-10-29 12:57
学习是为了提升自己的知识水平,不是看见不明白的就略过

兄弟,如果知道你会略过我的代码,我就不写了

额,不会呀,凡是回答的楼主我都会仔细 去看 去思考 去亲自试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-29 18:15:31 | 显示全部楼层
傻眼貓咪 发表于 2021-10-29 12:48
你先试了我的代码再说,看是不是你想要的:“只输入单一意思就可以当作掌握这个词”,我的代码应该完全 ...

husband
丈夫
哎呦,不错哦,继续加油吧!!!
band
"乐
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队,波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队,波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
乐队 波段
你写的意思不正确哦,想一想或者查看资料后在填写吧!!!
band
哥们你说说这是怎么回事,并且你怎么输入能让他报正确,我是试了好多,或许可以,可能是我还不知道怎么能让他报正确吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-4 14:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表