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

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）我自己的代码：

``````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)
``````

（3）大神改进后的代码：大神只是在教材上的代码稍加改动，结果就可以正确运行了，大神在源代码的

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

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

``````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)
``````

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

2个回答

10 个月之前 回复

10 个月之前 回复

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

Python_Leaner 上一条回答没理解你的意思，你看啊，while循环是当满足条件时循环while之后的语句对吧，意思就是当猜的数字不等于随机数and变量tires(猜的次数)<8这两个条件都满足时，退出while循环，但是当他猜的数字=随机数字后，已经不满足while语句了，但仍没有退出循环，所以是你没理解意思啦。
10 个月之前 回复
Python_Leaner 兄弟，python会从0.1.2.3.4.5.6.7这样来运行8次，所以次、是足够的
10 个月之前 回复

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.')

#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)

#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)

Java学习的正确打开方式

Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2

Python 基础（一）：入门必备知识

Python十大装B语法
Python 是一种代表简单思想的语言，其语法相对简单，很容易上手。不过，如果就此小视 Python 语法的精妙和深邃，那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点，并附上详细的实例代码。如能在实战中融会贯通、灵活使用，必将使代码更为精炼、高效，同时也会极大提升代码B格，使之看上去更老练，读起来更优雅。 1. for - else 什么？不是 if 和 else 才

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

2020 网络课 智慧树自动刷课代码，自动跳转，自动答题并关闭弹窗，自动1.5倍速静音

SQL-小白最佳入门sql查询一

“狗屁不通文章生成器”登顶GitHub热榜，分分钟写出万字形式主义大作

IT界知名的程序员曾说：对于那些月薪三万以下，自称IT工程师的码农们，其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居，但只是他们一厢情愿罢了。 此话一出，不知激起了多少(码农)程序员的愤怒，却又无可奈何，于是码农问程序员。 码农：你知道get和post请求到底有什么区别？ 程序员：你看这篇就知道了。 码农：你月薪三万了？ 程序员：嗯。 码农：你是怎么做到的? 程序员：

《程序人生》系列-这个程序员只用了20行代码就拿了冠军

8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN（ID：CSDNnews） 本人目前在一家知名外企担任架构师，而且最近八年来，在多家外企和互联网公司担任Java技术面试官，前后累计面试了有两三百位候选人。在本文里，就将结合本人的面试经验，针对Java初学者、Java初级开发和Java开发，给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实

1.两种思维方式在求职面试中，经常会考察这种问题：北京有多少量特斯拉汽车？ 某胡同口的煎饼摊一年能卖出多少个煎饼？ 深圳有多少个产品经理？ 一辆公交车里能装下多少个乒乓球？ 一

so easy！ 10行代码写个"狗屁不通"文章生成器

&和&&都可作逻辑与的运算符，表示逻辑与（and），&是位运算符，你还需要知道这5个位运算符，基础很重要，云运算其实很骚！
MySQL数据库总结