在猜数游戏中 while 循环里 guess=int(input(""))和 if int(guess) 使用有什么区别呢

1.Python中我按照python 2的教材在python 3 上写了一个猜数小游戏 但是运行之后 我写的代码在我猜对了数之后不会跳出循环, 而是又一次的开始了循环,直到次数用完。后来找大神改了一下代码可以成功运行了,但是对于其中 guess=int(input(""))和 if int(guess)有了疑问。
我用的就是Python自带的 IDLE

2.教材上的代码:

import random
secret = random.randint(1, 99)
guess = 0
tries = 0
print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!")
print ("It is a number from 1 to 99,I'll give you 8 tries. ")
while guess != secret and tries < 8:
    guess = input("what's yer guess? ")
    if guess < secret:
        print ("太小")
    elif guess > secret:
        print ("太大!")
    tries = tries + 1
if guess == secret:
    print ("答对了")
else:
    print ("没有机会了!")
    print ("正确答案",secret)

如果我按照教材上的代码运行会报错:
图片说明
大概意思就是不同的类型不能比较大小。所以我就在我的代码上改进了一下。

(2)我自己的代码:
因为教材上是在py 2上写的 我是在Py 3写的 所以有一点改动就是在guess前面加上了int

import random
secret = random.randint(1, 99)
guess = 0
tries = 0
print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!")
print ("It is a number from 1 to 99,I'll give you 8 tries. ")
while guess != secret and tries < 8:
    guess = input("what's yer guess? ")
    if int(guess) < secret:
        print ("太小")
    elif int(guess) > secret:
        print ("太大!")
    tries = tries + 1
if int(guess) == secret:
    print ("答对了")
else:
    print ("没有机会了!")
    print ("正确答案",secret)

但是我自己写的是可以运行了但是不会跳出while循环 我就很奇怪了,下面是我的运行结果报错:
图片说明
就是说我在第五次已经猜对了,但是并没有跳出循环而是继续让我猜了。(不能使用break,就是用单纯的while循环)

(3)大神改进后的代码:大神只是在教材上的代码稍加改动,结果就可以正确运行了,大神在源代码的

guess = input("what's yer guess? ")

改成了

guess = int(input("what's yer guess? "))

是在input钱加了int 详细如下:

import random
secret = random.randint(1, 100)
guess = 0
tries = 0
print ("AHOY! I'm the Dread Pirate Roberts,and I have a secret!")
print ("It is a number from 1 to 99,I'll give you 8 tries. ")
while guess != secret and tries < 8:
    guess = int(input("what's yer guess? "))
    if guess < secret:
        print ("太小")
    elif guess > secret:
        print ("太大!")
    tries = tries + 1
if guess == secret:
    print ("答对了")
else:
    print ("没有机会了!")
print ("正确答案",secret)

这样就可以完美输出了结果如下:
图片说明在第七次猜对之后直接跳出循环并结束了;大神给我简单解释说:在input上加, guess就是一个数值类型了,并且在当前循环中都是的; 你在 if int(guess)中这样使用
只是把输入的字符串变成了int 并没有赋值 ,此时guess还是字符串类型,你这种 guess = int(guess)
把转换成int的重新赋值在一个变量上才行.如果我输入40 本应该和随机的相等的,但是此时的40不是int

类型啊,字符串和int做比较,那怎么会相等呢."if ‘40’== 40,是这种形式了".
但是我不理解的是既然我的方法并没有让guess变成int型那代码是怎么运行并且还判断了大小了呢。
为此我有和我学Java的同学聊了一下 但是Java和Python语法上会有相差没有搞懂:

图片说明
现在就想请教一下大神 我这个是一个什么情况 ,第一次提问还是恳请大神讲解一下 本人是自学小白 只是大学学了一点编程
再补充一下: 就是我自己改的代码哪里一直没有跳出循环我一开始以为是缩进问题,但是我试过了并不是 而且我试着在print("答对了")下一行加上 break 结果我的代码就也能比较大小也能完美运行了,所以就对大神给我的解释更蒙了

我这个其实总共出现了两个问题吧一个是我的那种方法为什么不会跳出循环呢 第二个就是按照大神那样的改的话while 循环里 guess=int(input(""))和 if int(guess) 使用有什么区别呢

2个回答

首先,我也是自学小白,在看python从入门到实践,也就是python创始人写的书。你的问题我看了下,我自己写过后发现,兄弟,你在下面的if
语句中用了int(guess),那么上面while呢? 难道不应该是 while int(guess) != secret and tires < 8 : 吗?后面的你就不用改了
看我耐心的看了你的代码后,你看看我的代码,能在猜对了就退出,还能显示猜的次数,但是我这也有不明白的,我那个else为什么可以在哪个位置,不用缩进。我去,自己都把自己尴尬到了,你自己copy后运行一下(csdn中缩进我还是不会搞于是我就贴图了),猜对猜错都试一试,然后咱么两个小白互补一下图片说明
还有就是第三个if也可以是elif,亲测效果都一样。当然,你可别错过这条!!!!!!!!!!!!!!!!!!!!!!!!后面看其他代码时突然想到一个问题,就是else无意义,于是去掉了,然后发现运行结果一致,噗笑哭,所以图片里面的else没意义,完全可以去掉,不过如果想在完成游戏(无论是猜对还是猜错)都有over输出,就请一定要注意缩进。!!!!

weixin_44074810
宗文博 https://blog.csdn.net/weixin_44074810/article/details/88694460 这个是链接
10 个月之前 回复
weixin_44074810
宗文博 兄弟你可以加我QQ:1691598339我给你解释一下或者我一会把你的问题写一个博客放出来 你可以看一下 因为我不知道回复你消息怎么添加图片
10 个月之前 回复

while guess!=secret and tries<8,你这循环的条件就是不够8次,就算猜对了也会再次循环的啊

Python_Leaner
Python_Leaner 上一条回答没理解你的意思,你看啊,while循环是当满足条件时循环while之后的语句对吧,意思就是当猜的数字不等于随机数and变量tires(猜的次数)<8这两个条件都满足时,退出while循环,但是当他猜的数字=随机数字后,已经不满足while语句了,但仍没有退出循环,所以是你没理解意思啦。
10 个月之前 回复
Python_Leaner
Python_Leaner 兄弟,python会从0.1.2.3.4.5.6.7这样来运行8次,所以次、是足够的
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用pyinstaller生成的exe可执行程序,每次运行到最后出结果一步就闪退,怎么解决?
import random secret = random.randint(1,10) print("--------------猜字小游戏--------------") temp=input("猜一下我心里想的是哪个数字:") guess=int(temp) while guess != secret: if guess > secret: print("哥,大了,大了!") if guess < secret: print("哥,小了,小了!") temp=input("哎呀,猜错了,重新输入吧:") guess=int(temp) print("恭喜你,猜对了!") print("游戏结束啦!") ``` ```
python时间函数例题解析
if __name__ == '__main__': import time import random play_it = input('do you want to play it.(\'y\' or \'n\')') while play_it == 'y': c = input('input a character:\n') i = random.randint(0,2**32) % 100 print( 'please input number you guess:\n') start = time.perf_counter() a = time.time() guess = int(input('input your guess:\n')) while guess != i: if guess > i: print( 'please input a little smaller') guess = int(input('input your guess:\n')) else: print( 'please input a little bigger') guess = int(input('input your guess:\n')) end = time.perf_counter() b = time.time() var = (end - start) / 18.2 print (var) # print 'It took you %6.3 seconds' % time.difftime(b,a)) if var < 15: print( 'you are very clever!') elif var < 25: print ('you are normal!') else: print( 'you are stupid!') print( 'Congradulations') print( 'The number you guess is %d' % i) play_it = input('do you want to play it.')
新手Python入门题,不知道哪里不对,求各位帮忙
循环无法进行...... ``` #p3_1.py import random secret = random.randint(1,10) temp = input ("猜猜我现在在想哪个数字?") guess = int(temp) while guess != secret: temp = intput("猜错啦,重新输入吧") guess = int(temp) if guess > secret: print("大了大了") else: print("再大点试试") if guess == secret: pirntf("猜对啦") print("结束啦,不玩啦!") ```
利用Python运行结果不全,这是为什么?
初学,利用Python写的代码,运行的时候显示结果不全。 ``` import random secret = random.randint(1,100) guess = 0 tries = 0 print("AHOY! I'm the Dread Pirate roberts, and I have a secret!") print("It is a number from 1 to 99. I'll give you 6 tries.") while guess != secret and tries < 6: guess = int(input("what's yer guess")) if guess < secret: print("Too low. ye scurvy dog") elif guess > secret: print("Too high, landlubber!") tries = tries + 1 if guess == secret: print("Avast! Ye got it! Found my secret,ye did") else: print("NO more guesses! Better luck next time matey") print("The secret number was"),secret 运行以后只显示前三行的语句
猜数字(Bulls and Cows)如何用python实现?
猜数字具体规则见:http://baike.baidu.com/subview/358630/11117097.htm 玩家和电脑对抗的模式,玩法为猜数字游戏标准玩法。 游戏流程: 执行guess.py文件开始游戏。 脚本随机生成一个没有重复的4位数字作为被猜数字。 玩家和电脑轮流猜数字。 玩家通过命令行输入数字,脚本打印出1A1B样式的测试结果。 脚本打印出电脑的猜测数字和结果。电脑不能使用玩家的猜测结果。 重复此过程直至一方猜中。 打印出胜利者的信息,脚本结束执行。 要求: 使用python2.7版本 使用一个py文件来实现,命名为guess.py,完成上述玩法需求。 guess.py文件可以作为模块被其他脚本调用,提供如下接口: check:根据猜测数和预期数2个参数返回1A1B格式结果。 calculate:根据猜测数、该猜测数的1A1B格式结果,返回所有可能是正确答案的数据集。 在github上有一个比较完善的程序(python3.0)https://github.com/vpavlenko/bulls-and-cows/blob/master/solver.py 这两天我自己写好的python2.7代码: ``` #!/usr/bin/python # -*- coding:utf-8 -*- import random def random_num(): #生成4位无重复数字的随机数(首位不可为0) com_num = random.sample('123456789', 4) com_num = ''.join(com_num) return com_num def player_input(): #判断玩家输入合法性 while(True): try: global player_num player_num = str(raw_input('\nYour turn! Enter Your Guess Number:')) z = int(player_num) if(len(player_num) != 4): print('Please enter a 4 DIGIT number.') continue except ValueError: if player_num == 'quit': exit() print('Your input is not a number.') else: if(len(set(player_num)) != 4): print('Please enter a number with different digits.') continue elif player_num[0] == 0: print('Please enter a number that first number is not 0.') continue else: return def check(number, question): #根据猜测数和被猜数计算返回1A1B样式的结果"(1, 1)" number = str(number) question = str(question) global a_count global b_count a_count = 0 b_count = 0 for i in range(4): for j in range(4): if(number[i] == question[j]): if(i == j): a_count += 1 else: b_count += 1 return (a_count, b_count) def allowed_number(number): #判断数字合法性 return len(str(number)) == 4 and len(set(str(number))) == 4 all_numbers = [number for number in range(1234, 9877) if allowed_number(number)] #所有可能结果 def calculate(number, answer): #根据猜测数和1A1B结果计算返回所有可能结果 number = str(number) global num_series num_series = [] for possible_num in all_numbers: if not abs(cmp(check(possible_num, number), answer)): num_series.append(possible_num) return num_series def history_rec(number): #记录本轮游戏出现过的数字 global history return history.append(int(number)) def del_history(num_series, history): #删除本轮游戏中出现过的数字 for number in history: if number in num_series: num_series.remove(number) return num_series def ai_best(): #反馈个数指标评判答案最优解 global best if not (best[0]+best[1] > answer[0]+answer[1]): if not (best[0] > answer[0]): best = answer def history_area(num_series): #计算保存最可能的值域,取历史值域及新值域的交集 global area intersection = [i for i in area if i in num_series] intersection = list(set(area).intersection(set(num_series))) return intersection print''' ----------Guess The Number Game: Player VS AI---------- You can input"quit"to exit Rules: 1.Question number is a random 4 digit number without same digits (first digit can't be 0). 2.Player and AI guess the number one by one until Player Win or AI Win. 3.After every guess, program will return an answer of 1A1B like:"(1, 1)". A value is the number of digit and position are all correct. B value is just the number of digit is correct (position is wrong).''' player_num = 0 ai_num = 0 random_number = random_num() player_turn = 1 answer = (0, 0) a_count = 0 best = (0, 0) history = [] area = all_numbers while(a_count != 4): question = random_number num_series = [] #玩家的回合 if player_turn: player_input() history_rec(player_num) answer = check(player_num, question) a_count = answer[0] print "\nYour choice is", player_num print "Your answer is", answer ai_best() #电脑的回合 else: ai_num = random.choice(area) history_rec(ai_num) answer = check(ai_num, question) a_count = answer[0] print "\nAI's choice is", ai_num print "AI's answer is", answer ai_best() num_series = del_history(calculate(player_num, best), history) area = history_area(num_series) print num_series print area player_turn = not player_turn #输出胜负结果 if player_turn: print("\nYou Win!") else: print("\nAI Win!") ``` 但是运行几次老是报错 ``` Traceback (most recent call last): File "C:\Python27\guess.py", line 144, in <module> ai_num = random.choice(area) File "C:\Python27\lib\random.py", line 275, in choice return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty IndexError: list index out of range ```
新手求助C语言,求大神解答
#include <stdio.h> #include<time.h> #include<stdlib.h> #include<ctype.h> int main() { const int target; int min,max,count,guess; char c='Y'; srand(time(NULL)); while(1){ min=1; max=100; count=0; target=rand()%max+1; while(1){ guess=0; printf("输入一个数字 %d %d\n",min,max); fflush(stdin); scanf("%d",&guess); ++count; if(guess<min||guess>max){ printf("the input is out of %d-%d\n",min,max); continue;} else{ if(target==guess){ printf("恭喜你!\nyou have guessed %d times in total.\n",count); break;} else if(target>guess){ min=guess; printf("猜测的数字大于 %d\n",guess);} else{ max=guess; printf("猜测的数字小于 %d\n",guess);}}} printf("是否继续?(Y-yes,N-no)\n"); fflush(stdin); scanf("%c",&c); if(toupper(c)!='Y') break;} return 0; } 提示15行 左值指定 const 对象 是哪里错了,要怎么改
小白求答,写了个猜字母的代码,可是它识别不了我的答案,求大神解惑
import java.util.Scanner; public class Guess { public static void main(String[] args) { // TODO Auto-generated method stub //第一步:定义数据结构: /*Input:*/ char[] chs = new char[5];//保存随机生成的5个字母 char[] input = new char[5];//保存用户输入的5个字母 /*Output:*/ //第几次尝试,猜对几个字母,几个字母的位置正确 int times=0,right=0,position=0; int score=0;//分数 char[] realtime=new char[5];//保存实时显示猜对位置字母的数组 /*隐含变量*/ String inStr=" ";//临时保存从控制台录入的字符串 /*process*/ generate(chs); /*打桩测试*/ for(int i=0;i<chs.length;i++){ System.out.print(chs[i]+","); } /*主程序循环*/ Scanner sc=new Scanner(System.in);//只有从控制台获得用户输入就用Scanner System.out.println("游戏开始..."); //循环 /*字符串不是基本类型,做等值比较,不能用== * 应该使用Java专门的API比较字符串是否相等 * 语法:字符串1.equals(字符串2); */ while(!inStr.equals("EXIT")&&position!=chs.length){ System.out.println("请输入5个字母,按回车继续...(exit-退出)"); //Step2:获得用户输入: /*获得用户输入的字符串:sc.next()——返回输入整个字符串 * 防止、去掉空格:字符串.trim()——去掉字符前后空格 * 将输入的字符串中所有的小写字母,统一转换为大写字母: * 字符串.toUpperCase() */ inStr=sc.next().trim().toUpperCase(); //Stpe3:判断:如果用户输入的不是exit,才继续 if(!inStr.equals("EXIT")){ //Stpe4:将字符串,转化为字符数组,保存到input数组中 //将字符串转换为字符数组的API:字符数组=字符串.toCharArray() input=inStr.toCharArray(); //Step5:比较chs和input两个数组的相似程度 //得到right:猜对几个字母 //得到position:猜对位置的有几个 //得到realtime:猜对位置的实时数组 int[] result=compare(chs,input,realtime); right=result[0]; position=result[1]; //Step6:如果没有都猜对 if(position!=chs.length){ //将尝试次数+1 times++; System.out.println("第"+times+"次尝试:"+"猜对了" +right+"个字母,"+"其中"+position+ "个位置正确"); for(int i=0;i<realtime.length;i++){ System.out.print(realtime[i]+","); } System.out.println(); } } } /*如果推出循环,只有两种情况: * 1用户输入exit,主动退出,输入欢迎下次再来 * 2用户猜对了(position==chs.length) * 计算得分:100*chs.length-10*times * 输出,恭喜你猜对了 * */ if(inStr.equals("EXIT")){ System.out.println("欢迎下次再来!"); }else{ score=100*chs.length-10*times; System.out.println("恭喜您,猜对了,本次得分:"+score); } } /** * 比较两个数组 * 1.求出猜对几个字母,有几个字母的位置正确 * 2.将比较结果分别保存在返回值数组的第一个元素和第二个元素中 * 3.将位置正确的字母在realtime中实时显示 * @param chs 随机生成的目标数组 * @param input 用户输入的数组 * @param realtime 实时显示猜对位置的元素数组 * @return 1个数:[0]保存猜对字母的个数 * [1]保存猜对位置的个数 */ public static int[] compare(char[]chs,char[]input,char[]realtime){ //数组的第一个元素[0],表示有几个相同的字母 //数组第二个元素[1],表示位置有几个相同的字母 int[] result=new int[2];//新建两个整数元素的数组 /* * 反复取出input数组中每个元素和chs数组中每个元素比较 * 只有input中的元素和chs中的元素相等 * 对result[0]+1,表示猜对了一个字母 * 立刻判断此时的位置是否相同(i==j) * 如果i==j * 对result[1]+1,表示猜对了一个位置 * 将才对的字母,填入realtime数组相同的位置 */ for(int i=0;i<input.length;i++){ for(int j=0;i<chs.length;i++){ if(input[1]==chs[j]){ result[0]++; if(i==j){ result[1]++; realtime[i]=input[i]; } break; } } } return result; } /** * 自动生成5个不重复的字母,直接保存在数组chs中 * @param chs:传入一个空数组。 * 方法内,对数组的更改,直接作用于原数组 */ public static void generate(char[] chs){ /* * 反复生成多个字母,就要用循环: * 循环变量:int i=0; * 循环条件:i<chs.length; * 迭代循环变量:无规律 * 只有生成字母不重复时,才+1! * 循环体:随机生成65~90之间的1个整数。 * 判断刚生成的整数,在数组中是否重复 * 如果没有重复,就加入数组chs中,并且i++ * (否则什么都不做,再生成一个新字母,再比较) */ //因为循环次数和迭代规律不确定,所以使用while循环 int i = 0;//定义循环变量 while(i<chs.length){ //随机生成65-90之间的整数 int r=(int)(Math.random()*(90-65+1)+65); //判断r是否在数组中包含 //定义1个布尔类型变量,表示r是否可用。默认是ture. boolean enable=true; //循环遍历数组的每个元素,和r比。 //只要任意1个元素等于r,则改变变量enable=false,表示r不可用。 for(int j=0;j<i;j++){ if(chs[j]==r){ enable=false; } } if(enable){//如果r可用 chs[i]=(char)r; i++; } } } } ``` ```
java中出现一个嵌套问题
import java.util.Random; import java.util.Scanner; public class Chenwei_GuessNumber{ static int m=8; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); Random ran = new Random(); int number = ran.nextInt(100)+1; // 产生随机数 for (;;) { System.out.println("1.开始猜数"); System.out.println("2.游戏参数设置"); System.out.println("9.退出"); Scanner sc=new Scanner(System.in); String choo =sc.next(); if (!choo.equals("1")&&!choo.equals("2")&&!choo.equals("9")) { System.out.println("属于非法输入"); } else { if (choo.equals("1")) { int guess; // 用户猜的数字 int count = 0; // 猜测次数 System.out.println("有一个0到100之间的整数,你猜是什么?"); do { guess = input.nextInt(); if (number < guess) { System.out.println("大了,再猜"); > count++; } else if (number > guess) { System.out.println("小了,再猜"); count++; } else { count++; break; } if (guess > count){ System.out.println("次数超过"); break; } else if(guess <= count) { {break;} } else if(choo.equals("2")){ System.out.println("请选择难度:"); System.out.println("1.简单"); System.out.println("2.一般"); System.out.println("3.困难"); Scanner ssc = new Scanner(System.in); int n = ssc.nextInt(); if (n==1) { m=8; } else if(n==2) { m=6; } else { m=4; } } else {break;} } } while (true);{ System.out.println("这个数字是" + number); String count; System.out.println("您猜的次数" + count); } } } } // 根据猜测次数给出评价 if (count >= 1 && count <= 3) { System.out.println("厉害啊,兄弟!"); } else if (count >= 4 && count <= 6) { System.out.println("不错,再接再厉!"); } else { System.out.println("菜的真实!"); } input.close(); } } ``` ``` ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553608382_937235.png) ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553608275_954466.png) eclipse中 Syntax error, insert "while ( Expression ) ;" to complete DoStatement Syntax error on token "}", { expected after this token ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553612898_773671.png) 删除了break的分号 底下的count报错。 pss: 现在是这样的 ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553614027_20697.png)
笨方法学python3上的习题43AttributeError: 'NoneType' object has no attribute 'enter',哪错了
from sys import exit from random import randint from textwrap import dedent class Scene(object): def enter(self): print("This scene is not yet configured.") print("Subclass it and implement enter().") exit(1) class Engine(object): def __init__(self,scene_map): self.scene_map = scene_map def play(self): current_scene = self.scene_map.opening_scene() last_scene = self.scene_map.next_scene('finished') while current_scene != last_scene: next_scene_name = current_scene.enter() current_scene = self.scene_map.next_scene(next_scene_name) # be sure to print out the last scene current_scene.enter() class Death(Scene): quips = [ "You died. You kinda suck at this.", "Your mom would be pround...if she were smarter.", "such a luser.", "I have a small puppy that's better st this.", "You're worse than your Dad's jokes.", ] def enter(self): print(Death.quips[randint(0, len(self.quips)-1)]) exit(1) class CentralCorridor(Scene): def enter(self): print(dedent(""" The Gothons of Planet Percal #25 have invaded your ship and destroyed your entire crew. You are the last surviving member and your last mission is to get the neutron destruct bomb from the Weapons Armory, put it in the bridge, and blow the ship up after getting into an escape pod. You're runing down the central corridor to the Weapons Armory when a Gothon jumps out, red scaly skin, dark grimy teeth, and evil clown costume flowing around his hate filled body. He's blocking the door to the Armory and zbout to pull a weapon to blast you. """)) action = input("> ") if action == "shoot!": print(dedent(""" Quick on the draw you yank out your blaster and fire it at the Gothon. His clown costume is flowing and moving around his body, which throws off your aim. Your laser hits his costume but misses him entirely. This completely ruins his brand new costume his mother bought him, which makes him fly into an insane rage and blast you repeattedly in the face until you are dead. Then he eats you. """)) return 'death' elif action == "dodge!": print(dedent(""" Lke a world class boxer you dodge, weave, slip and slide right as the Gothon's blaster cranks a laser past your head. In the middle of your artful dodge your foot slips and you bang your head on the metal wall and pass out. You wake up shortly after only to die as the Gothon stomps on your head and eats you. """)) return 'death' elif action == "tell a joke": print(dedent(""" Lucky for you they made you learn Gothon insults in the academy. You tell the one Gothon joke you know: Lbhe zbgure vf fb sng, jura fur fvgf nebhaq gur ubhfr, fur fvgf nebhaq gur ubhfr. The Gothon stops, tries not to laugh, then busts out laughing and can't move. While he's laughing you run up and shoot him square in the head putting him down, then through the Weapon Armory door. """)) return 'laser_weapon_armory' else: print("DOES NOT COMPUTE!") return 'central_corridor' class LaserWeaponArmory(Scene): def enter(self): print(dedent(""" Youd do a dive roll into the Weapon Armory, crouch and scan the room for more Gothons that might be hiding. It's dead quiet, too quiet,You stand up and run to the far side off the room and find the neutron bomb in its container. There's a keypad lock on box and you need the code to get the bomb out. If you get the code wrong 10 times then the lock closes forever and you can't get the bomb. The code is 3 digits. """)) code = f"{randint(1,9)}{randint(1,9)}{randint(1,9)}" guess = input("[keypad]> ") guesses = 0 while guess != code and guesses<10: print("BZZZZEDDD!") guesses += 1 guess = input("[keypad]> ") if guess == code: print(dedent(""" The container clicks open and the seal breaks, letting gas out. You grab the neutron bomb and run as fast as you can to the bridge where you must place it in the right spot. """)) return 'the bridge' else: print(dedent(""" The lock buzzes one last time and then you hear a sickening melting sound as the mechanism is fused together. You decide to sit there, and finally the Gothons blow up the ship from their ship and you die. """)) return 'death' class TheBridge(Scene): def enter(self): print(dedent(""" You burst onto the Bridge eith the entron destruct bomb under your arm and surprise 5 Gonthons who are trying to take control of the ship. Each of them has an even uglier clown sostume than last.They have't pulled their weapons out yet, as they see the active bomb under your arm and don't want to set it off. """)) action = input("> ") if action == "throw the bomb": print(dedent(""" In a panic you throw the bomb at group of Gothons and make a leap for the door. Right as you drop it a Gothon shoots you right in the back killing you. As you die you see another Gothon frantically try to disarm the bomb. You die knowing they will probably blow up when it goes off. """)) return 'death' elif action == "slowly place the bomb": print(dedent("""" You point your blaster at the bomb under your arm and the Gothons put their hands up adn start to sweat. You inch backward to the door, open it, and then carefully place the bomb on the floor, pointing your blaster at it. You then jump back through the door punch the close button and blast the lock so the Gothons can't get out. Now that bomb is placed you run to the escape pod to get off this tin can. """)) return 'escape_pod' else: print("DOES NOT COMPUTE!") return 'the_bridge' class EscapePod(Scene): def EscapePod(self): print(dedent(""" You rush through the ship desperately trying to make it to the escape pod before the whole ship explodes. It seems like hardly any Gothons are on the ship, so you run is clear of interference. You get to the chamber with the escape pods, and now need to pick one to take. Some of them could be damaged but you don't have time to look. There;s 5pods, which one do you take? """)) good_pod = randint(1,5) guess = input("[pod #> ") if int(guess) != good_pod: print(dedent(""" You jump into pod {guess} and hit the eject button. The pod escapes out into the void of space, then implodes as the hull ruptures, crushing your body into jam jelly. """)) return 'death' else: print(dedent(""" You jump into pod {guess} and hit the eject button. The pod easily slides out into space heading to the plantes below. As it flies to the planet, you look back and see your ship implode then explode like a bright star, taking out the Gothon ship at the same time. You won! """)) return 'finished' class Finished(Scene): def enter(self): print("You won! Good job.") return 'finished' class Map(object): scenes = { 'central_corridor': CentralCorridor(), 'laser_weapon_armory':LaserWeaponArmory(), 'the_bridge':TheBridge(), 'escape_pod':EscapePod(), 'death':Death(), 'finished':Finished(), } def __init__(self, start_scene): self.start_scene = start_scene def next_scene(self, scene_name): val = Map.scenes.get(scene_name) return val def opening_scene(self,): return self.next_scene(self.start_scene) a_map = Map('central_corrider') a_game = Engine(a_map) a_game.play() 返回结果: Traceback (most recent call last): File "F:/Python/test43.py", line 228, in <module> a_game.play() File "F:/Python/test43.py", line 18, in play next_scene_name = current_scene.enter() AttributeError: 'NoneType' object has no attribute 'enter' Process finished with exit code 1 看了好久,就是找不到是哪里错了,很烦
刷ACM小伙伴进Uva oj 340 - Master-Mind Hints
如题: Master-Mind Hints MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, Breaker, tries to break it. A code is no more than a row of colored dots. At the beginning of a game, the players agree upon the length N that a code must have and upon the colors that may occur in a code. In order to break the code, Breaker makes a number of guesses, each guess itself being a code. After each guess Designer gives a hint, stating to what extent the guess matches his secret code. In this problem you will be given a secret code tex2html_wrap_inline35 and a guess tex2html_wrap_inline37 , and are to determine the hint. A hint consists of a pair of numbers determined as follows. A match is a pair (i,j), tex2html_wrap_inline41 and tex2html_wrap_inline43 , such that tex2html_wrap_inline45 . Match (i,j) is called strong when i = j, and is called weak otherwise. Two matches (i,j) and (p,q) are called independent when i = p if and only if j = q. A set of matches is called independent when all of its members are pairwise independent. Designer chooses an independent set M of matches for which the total number of matches and the number of strong matches are both maximal. The hint then consists of the number of strong followed by the number of weak matches in M. Note that these numbers are uniquely determined by the secret code and the guess. If the hint turns out to be (n,0), then the guess is identical to the secret code. Input The input will consist of data for a number of games. The input for each game begins with an integer specifying N (the length of the code). Following these will be the secret code, represented as N integers, which we will limit to the range 1 to 9. There will then follow an arbitrary number of guesses, each also represented as N integers, each in the range 1 to 9. Following the last guess in each game will be N zeroes; these zeroes are not to be considered as a guess. Following the data for the first game will appear data for the second game (if any) beginning with a new value for N. The last game in the input will be followed by a single zero (when a value for N would normally be specified). The maximum value for N will be 1000. Output The output for each game should list the hints that would be generated for each guess, in order, one hint per line. Each hint should be represented as a pair of integers enclosed in parentheses and separated by a comma. The entire list of hints for each game should be prefixed by a heading indicating the game number; games are numbered sequentially starting with 1. Look at the samples below for the exact format. Sample Input 4 1 3 5 5 1 1 2 3 4 3 3 5 6 5 5 1 6 1 3 5 1 3 5 5 0 0 0 0 10 1 2 2 2 4 5 6 6 6 9 1 2 3 4 5 6 7 8 9 1 1 1 2 2 3 3 4 4 5 5 1 2 1 3 1 5 1 6 1 9 1 2 2 5 5 5 6 6 6 7 0 0 0 0 0 0 0 0 0 0 0 Sample Output Game 1: (1,1) (2,0) (1,2) (1,2) (4,0) Game 2: (2,4) (3,2) (5,0) (7,0) 大概意思就是猜数字的一个游戏,给定答案序列和用户猜的序列,统计有多少数字正确(A),有多少数字在两个序列都出现过但位置不对(B)。 ps.猜测序列正常情况下数字只可能是1~9中的某一个。 输入包含多组数据。每组输入第一行为序列长度为n,第二行是答案序列,接下来是若干猜测序列。猜测序列全零则该组数据结束。n=0输入结束。 下面是我的代码: ``` #include <stdio.h> int a[1050],b[1050]; int main() { int n,round=0; while(scanf("%d",n)==1&&n){ for(int i=1;i<=n;i++) scanf("%d",&a[i]); printf("Game %d:\n",++round); //用round记录第几轮 int num1=0,num2=0; for(;;){ int c1=0,c2=0; for(int i=1;i<=n;i++){ scanf("%d",&b[i]); if(b[i]==a[i]) num1++; //直接统计可得A for(int j=1;j<=9;j++){ if(a[i]==j) c1++; if(b[i]==j) c2++; } } if(b[1]==0) break; if(c1<c2) num2+=c1; else num2+=c2; printf(" (%d,%d)\n",num1,num2-num1); } } return 0; } ``` 最后编译没问题,可是出现dos窗口输入一个数字enter后就狗带了 就像下面这样,求大神解答啊囧 ![图片说明](https://img-ask.csdn.net/upload/201603/07/1457344125_712643.png) ![图片说明](https://img-ask.csdn.net/upload/201603/07/1457344093_148167.png)
使用c语言实现熄灯问题
按行计算已经实现,但是在按列计算时出现了答案错误的问题,不知道哪里出错了,望指正 //一个6行5列的方格,按下其中一个,其及其上下左右共5个方块都会改变(开/关),设计程序将其全部熄灭 #include <stdio.h>//设计一个flag,=1则亮,=0则熄,push,=1则按,=0则不按 #include <stdlib.h> int puzzle[7][7],press[7][7];//puzzle是当前灯的状态,press是输出的按法 int guess(){ int i,j; for(i=1;i<6;i++){ for(j=1;j<6;j++){ press[i][j+1]=(puzzle[i][j]+press[i][j]+press[i-1][j]+press[i+1][j]+press[i][j-1])%2;//根据press第1列和Puzzle数组,计算press其他行的值 } } for(i=1;i<6;i++){ if((press[i-1][6]+press[i][6]+press[i+1][6]+press[i][5])%2!=puzzle[i][6])//判断所计算Press数组能否熄灭第6列的所有灯 return 1; } return 0; } void meiju(){//枚举press第一行的所有可能性,从6个0开始,将每行的数看成1个6位2进制数,大于1则向后进位(ps:更简便的做法是按列枚举) int i,success; for(i=1;i<6;i++){ press[i][1]=0; } while(guess()==1){ press[1][1]++; i=1; while(press[1][i]>1){ press[1][i]=0; i++; press[1][i]++; } } } void main(){ int cases,i,j; printf("input the puzzle:\n"); for(i=0;i<7;i++){ press[0][i]=press[6][i]=0; } for(i=1;i<6;i++){ press[i][0]=0; } for(i=1;i<6;i++){ for(j=1;j<7;j++){ scanf("%d",&puzzle[i][j]); } } meiju(); printf("the answer is:\n"); for(i=1;i<6;i++){ for(j=1;j<7;j++){ printf("%d ",press[i][j]); } printf("\n"); } system("pause"); } 正解: input the puzzle: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 the answer is: 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0
在用ffmpeg 2.0做一个转码工具的时候,转出的视频 视频播放速度变快
在用最新版 ffmpeg 2.0 转换视频的时候 首先遇到的一个问题是 在 avformat_write_header(pFormatCtxOut, NULL); 处报错:[mp4 @ 0x8183600] track 1: codec frame size is not set 虽然报了这个错误 但是还是能够转码,只是转出来的视频本来30秒 但是15秒左右就没有了,应该没有丢帧,只不过画面播放得特别快,就像快进一样。下面是源码,求大神 出场--- // Created by showself on 13-8-19. // Copyright (c) 2013年 showself. All rights reserved. // #include <stdio.h> #include "test2.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <libavutil/opt.h> #include <libavutil/mathematics.h> #include <libavformat/avformat.h> #include <libswscale/swscale.h> #include <libswresample/swresample.h> static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec, enum AVCodecID codec_id); void transTest2(const char *src, const char *dst) { const char *filename; const char *outfilename; AVFormatContext *pFormatCtxIn,*pFormatCtxOut; AVInputFormat *inFmt; AVOutputFormat *outFmt; AVStream *audio_st,*video_st; AVFrame *pFrameIn; AVCodecContext *pVideoCodecCtxIn,*pAudioCodecCtxIn,*pVideoCodecCtxOut,*pAudioCodecCtxOut; AVCodec *pVideoCodecIn,*pAudioCodecIn,*pVideoCodecOut,*pAudioCodecOut; int i ,videoStream,audioStream;; int ret = 0; AVPacket packet; // int frame_count; /* Initialize libavcodec, and register all codecs and formats. */ av_register_all(); if (src == NULL) { printf("no input file"); return; } filename = src; outfilename = dst; /*get inout format*/ inFmt = av_find_input_format("MOV"); /*allocate the input media context*/ pFormatCtxIn = avformat_alloc_context(); if (pFormatCtxIn == NULL) { printf("allocate the input media context error"); return; } // open a video if (avformat_open_input(&pFormatCtxIn, filename, inFmt, NULL)) { return; } // get stream info if (avformat_find_stream_info(pFormatCtxIn, NULL)<0) { return; } // get streams index from a video videoStream = -1; audioStream = -1; for (i=0; i<pFormatCtxIn->nb_streams; i++) { if(pFormatCtxIn->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) { printf("%d stream 为视频\n",i); videoStream=i; } if (pFormatCtxIn->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { audioStream = i;// 音轨位置 printf("%d stream 为音轨\n",i); } } if(videoStream==-1) return ; // Didn't find a video stream or Did not find a audio stream if (audioStream == -1) { return; } // get decode codec contex pointer pVideoCodecCtxIn = pFormatCtxIn->streams[videoStream]->codec; pAudioCodecCtxIn = pFormatCtxIn->streams[audioStream]->codec; // get decode codec pointer pVideoCodecIn = avcodec_find_decoder(pVideoCodecCtxIn->codec_id); if (pVideoCodecIn == NULL) { return; } pAudioCodecIn = avcodec_find_decoder(pAudioCodecCtxIn->codec_id); if (pAudioCodecIn == NULL) { return; } // open codec if (avcodec_open2(pVideoCodecCtxIn, pVideoCodecIn, NULL)<0) { return; } if (avcodec_open2(pAudioCodecCtxIn, pAudioCodecIn, NULL)<0) { return; } // allocate input frame pFrameIn = av_frame_alloc(); if (pFrameIn == NULL) { return; } /* allocate the output media context */ // // method 1 // avformat_alloc_output_context2(&pFormatCtxOut, NULL, NULL, outfilename); // if (!pFormatCtxOut) { // printf("Could not deduce output format from file extension: using MPEG.\n"); // avformat_alloc_output_context2(&pFormatCtxOut, NULL, "mpeg", outfilename); // } // if (!pFormatCtxOut) { // return ; // } // method 2 outFmt = av_guess_format(NULL, outfilename, NULL); if (outFmt == NULL) { return; } pFormatCtxOut = avformat_alloc_context(); if (pFormatCtxOut == NULL) { return; } pFormatCtxOut->oformat = outFmt; sprintf(pFormatCtxOut->filename, "%s",outfilename); // get output codec from AVOutputContext pVideoCodecOut = avcodec_find_encoder(outFmt->video_codec); if (pVideoCodecOut == NULL) { return; } pAudioCodecOut = avcodec_find_encoder(outFmt->audio_codec); if (pAudioCodecOut == NULL) { return; } /* Add the audio and video streams using the default format codecs * and initialize the codecs. */ video_st = NULL; audio_st = NULL; // 添加一条视频流 if (outFmt->video_codec != AV_CODEC_ID_NONE) { // 解码 源视频流 video_st = avformat_new_stream(pFormatCtxOut, pVideoCodecOut); if (video_st == NULL) { return; } pVideoCodecCtxOut = video_st->codec; pVideoCodecCtxOut->codec_type = AVMEDIA_TYPE_VIDEO; pVideoCodecCtxOut->codec_id = outFmt->video_codec; pVideoCodecCtxOut->bit_rate = pVideoCodecCtxIn->bit_rate/2; pVideoCodecCtxOut->width = pVideoCodecCtxIn->width; pVideoCodecCtxOut->height = pVideoCodecCtxIn->height; pVideoCodecCtxOut->time_base.den = 25; pVideoCodecCtxOut->time_base.num = 1; pVideoCodecCtxOut->gop_size = 12; pVideoCodecCtxOut->pix_fmt = PIX_FMT_YUV420P; if (pVideoCodecCtxOut->codec_id == AV_CODEC_ID_MPEG2VIDEO) { /* just for testing, we also add B frames */ pVideoCodecCtxOut->max_b_frames =2; } if (pVideoCodecCtxOut->codec_id == AV_CODEC_ID_MPEG1VIDEO) { /* Needed to avoid using macroblocks in which some coeffs overflow. * This does not happen with normal video, it just happens here as * the motion of the chroma plane does not match the luma plane. */ pVideoCodecCtxOut->mb_decision = 2; } } if (pFormatCtxOut->oformat->flags & AVFMT_GLOBALHEADER) { pVideoCodecCtxOut->flags |= CODEC_FLAG_GLOBAL_HEADER; } // 添加一条音频流 if (outFmt->audio_codec != AV_CODEC_ID_NONE) { audio_st = avformat_new_stream(pFormatCtxOut, pAudioCodecOut); if (audio_st == NULL) { return; } pAudioCodecCtxOut = audio_st->codec; pAudioCodecCtxOut->codec_id = outFmt->audio_codec; pAudioCodecCtxOut->coder_type = AVMEDIA_TYPE_AUDIO; pAudioCodecCtxOut->sample_fmt = pAudioCodecCtxIn->sample_fmt; pAudioCodecCtxOut->bit_rate = pAudioCodecCtxIn->bit_rate; pAudioCodecCtxOut->sample_rate = pAudioCodecCtxIn->sample_rate; pAudioCodecCtxOut->channels = pAudioCodecCtxIn->channels; pAudioCodecCtxOut->channel_layout = pAudioCodecCtxIn->channel_layout; } if (pFormatCtxOut->oformat->flags & AVFMT_GLOBALHEADER) { pAudioCodecCtxOut->flags |= CODEC_FLAG_GLOBAL_HEADER; } // open encode codec if (avcodec_open2(pVideoCodecCtxOut, pVideoCodecOut, NULL)<0) { return; } // if(avcodec_open2(pAudioCodecCtxOut, pAudioCodecOut, NULL)<0) // { // printf("audio encode codec not found\n"); // return; // } av_dump_format(pFormatCtxOut, 0, outfilename, 1); // open the output file, if needed if (!(pFormatCtxOut->flags & AVFMT_NOFILE)) { // if (avio_open(&pFormatCtxOut->pb, outfilename, AVIO_FLAG_WRITE) < 0) { fprintf(stderr, "Could not open '%s'\n", outfilename); return; } } printf("1\n"); // write the stream header, if any // [mp4 @ 0x99a8a00] track 1: codec frame size is not set? avformat_write_header(pFormatCtxOut, NULL); printf("2\n"); av_init_packet(&packet); int frameFinished; int videoFrameCount=0,audioFrameCount=0; int got_packet,frames=0; while (av_read_frame(pFormatCtxIn, &packet)>=0) {// 只要有帧 就读到packet中 printf("video frame %d audio frame %d dts-%lld pts-%lld \n",videoFrameCount,audioFrameCount,packet.dts,packet.pts); frames ++; /*decodec and codec*/ if (packet.stream_index == videoStream) { ret = avcodec_decode_video2(pVideoCodecCtxIn, pFrameIn, &frameFinished, &packet); videoFrameCount++; if (frameFinished) { // pFrameOut->data[0] = pFrameIn->data[0]; // pFrameOut->data[1] = pFrameIn->data[1]; // pFrameOut->data[2] = pFrameIn->data[2]; // pFrameOut->linesize[0] = pFrameIn->linesize[0]; // pFrameOut->linesize[1] = pFrameIn->linesize[1]; // pFrameOut->linesize[2] = pFrameIn->linesize[2]; if (outFmt->flags & AVFMT_RAWPICTURE) { // 不改变图片尺寸 AVPacket pkt; av_init_packet(&pkt); pkt.flags |= AV_PKT_FLAG_KEY; pkt.stream_index = video_st->index; pkt.data = (uint8_t *)pFormatCtxIn; pkt.size = sizeof(AVPicture); av_write_frame(pFormatCtxOut, &pkt); } else // 需要改变尺寸 { AVPacket pkt = {0}; av_init_packet(&pkt); ret = avcodec_encode_video2(pVideoCodecCtxOut, &pkt, pFrameIn, &got_packet); if (ret<0) { return; } /* If size is zero, it means the image was buffered. */ if (!ret && got_packet && pkt.size) { printf("frame dts-%lld pts-%lld \n",packet.dts,packet.pts); pkt.stream_index = video_st->index; pkt.pts = pVideoCodecCtxOut->coded_frame->pts; if(pVideoCodecCtxOut->coded_frame->key_frame) // 如果是关键帧 pkt.flags |= AV_PKT_FLAG_KEY; /* Write the compressed frame to the media file. */ // ret = av_interleaved_write_frame(pFormatCtxOut, &pkt); av_write_frame(pFormatCtxOut, &pkt); } else { ret = 0; } } } } else if(packet.stream_index == audioStream) { audioFrameCount ++; printf("frame dts-%lld pts-%lld \n",packet.dts,packet.pts); av_write_frame(pFormatCtxOut, &packet); } // /* get the delayed frames */ // for (got_packet = 1; got_packet; i++) { // got_output ’Ê // fflush(stdout); // ret = avcodec_encode_video2(pVideoCodecCtxOut, &packet, NULL, &got_packet); // if (ret < 0) { // fprintf(stderr, "Error encoding frame\n"); // exit(1); // } // if (got_packet) { // printf("Write frame %3d (size=%5d)\n", i, packet.size); // av_write_frame(pFormatCtxOut, &packet); // } // } } av_write_trailer(pFormatCtxOut); avcodec_close(pVideoCodecCtxIn); avcodec_close(pVideoCodecCtxOut); avcodec_close(pAudioCodecCtxIn); avcodec_close(pAudioCodecCtxOut); }
能帮我看看这段程序有什么问题吗?为什么运行的时候总是显示invalid syntax?
#This is a simple game. #Coded by Yingxu import random guesses_made=0 name=raw_input('Hello! What is your name?\n') number=random.randint(1,20) print 'well, (0), I am thinking of a number between 1 and 20.'.format(name) while guesses_made<6: guess=int(raw_input('take a guess:')) guesses_made +=1 if guess <number: print 'Your guess is too low' if guess >number: print 'Your guess is too high' if guess==number: break if guess==number: print 'Good job, (0)! You guessed my number in (1) guesses!.format(name, guess_made) else: print 'Nope. The number I was thinking of was (0)'.format(number)
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
前后端分离后,维护接口文档基本上是必不可少的工作。 一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了。当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2 就是其中之一,至于其他类似功能但是却收费的软...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
天天学JAVA-JAVA基础(6)
如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍JAVA 中最常使用字符串常量String相关知识。 1.String简介 2.创建字符串对象两种方式的区别 3.String常用的方法 4.String的不可变性 5.一道阿里面试题,你会做吗? 1.String简介 1.1String源码 首先看一段String源码,String主要实现了Serializable、Compar...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
2020 网络课 智慧树自动刷课代码,自动跳转,自动答题并关闭弹窗,自动1.5倍速静音
刷课一时爽,一直刷课一直爽! 终于让我找到了这个黑客代码了,教程开始: 只限谷歌浏览器和火狐浏览器使用,如果第一次失败,请重新试一下次 将下面代码复制后,进入浏览器按F12键,先点击console 然后Ctrl+v复制代码 最后按回车键即可 var ti = $("body"); var video = $(".catalogue_ul1 li[id*=video-]"); var i = 1;...
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估...
写1行代码影响1000000000人,这是个什么项目?
不带钱不带卡,只带手机出门就能畅行无阻,这已是生活的常态。益普索发布的《2019第一季度第三方移动支付用户研究》报告显示,移动支付在手机网民中的渗透率高达95.1%,截至今年1月,支付宝全球用户数已经突破10亿。你或许每天都会打开支付宝,付款购物、领取权益、享受服务……但你或许不知道的是,在这个方便、快捷、智能化的APP背后,有一群年轻的技术人,用智慧和创新让它每天都变得更“聪明”一点。 ...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
一点一滴记录 Java 8 stream 的使用
日常用到,一点一滴记录,不断丰富,知识积累,塑造自身价值。欢迎收藏 String 转 List String str = 1,2,3,4; List&lt;Long&gt; lists = Arrays.stream(str.split(",")).map(s -&gt; Long.parseLong(s.trim())).collect(Collectors.toList()); Lis...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
基础拾遗:除了&和&&的区别,你还要知道位运算的这5个运算符
&和&&都可作逻辑与的运算符,表示逻辑与(and),&是位运算符,你还需要知道这5个位运算符,基础很重要,云运算其实很骚!
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问