在猜数游戏中 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) 使用有什么区别呢

0

2个回答

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

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

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

0
Python_Leaner
Python_Leaner 上一条回答没理解你的意思,你看啊,while循环是当满足条件时循环while之后的语句对吧,意思就是当猜的数字不等于随机数and变量tires(猜的次数)<8这两个条件都满足时,退出while循环,但是当他猜的数字=随机数字后,已经不满足while语句了,但仍没有退出循环,所以是你没理解意思啦。
3 个月之前 回复
Python_Leaner
Python_Leaner 兄弟,python会从0.1.2.3.4.5.6.7这样来运行8次,所以次、是足够的
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python笔记 - 条件分支和while循环,以及猜数游戏的实现
1.条件分支: if 条件: 条件为真(True)执行的语句 else: 条件为假(False)执行的语句 其中,if的条件多配合Python的比较操作符使用: 、>=、==、!= 2.while循环语法: while 条件: 条件为真执行的语句 3.生成随机数 import random # 导入模块 num = random.randint
python入门——猜数字游戏
学习资料:www.fishc.com 我的第一个程序: print('-------MissZhou的第一个游戏-------------') temp=input('猜猜她心里想的是那个数字') guess=int(temp) if guess==8: print("你怎么猜到了") print("猜到了也没用") else: print("猜错啦 想的是8") pr
回答一下 在Python 猜数游戏中 while 循环里 guess=int(input(""))和 if int(guess) 使用有什么区别呢 这一问题中 Python_Leaner的问题
在这里首先先感谢 Python_Leaner 给指出的问题 我这边改正之后程序运行没问题了 ,然后再来回复一下他同时抛出的问题 先把他的问题摆出来,我就直接截图了: 首先我先吧代码重新打了一遍 但是不知道为什么 他的代码在我这边会报错 (会不会是以内我用的是IDLE的原因)所以我就把代码简单改了一下 : from random import randint secret = randint(1...
零基础入门学习Python习题1【爱因斯坦台阶+猜数字】
001 爱因斯坦出过一道有趣的数学题: 有一个长阶梯,若每步上2阶,最后剩1阶; 若每步上3阶,最后剩2阶; 若每步上5阶,最后剩4阶; 若每步上6阶,最后剩5阶; 只有每步上7阶,最后刚好一阶也不剩。 台阶最少为多少阶? #py文件中写代码: i=7 num =0 while num==0: if (i%2==1 and i%3==2 and i%5==4 and
零基础入门Python小甲鱼-笔记4
第3章 成为高手前必须知道的一些基础知识-下 原文再续,书接上一回 3.6 条件分支 改进一:当用户猜错的时候程序应该给点提示,比如告诉用户输入的值比答案是大了还是小了。 程序修改后(假设答案是8): 如果用户输入3,程序应该提示比答案小了 如果用户输入9,程序应该提示比答案大了 那怎样才能做到这一点呢?自己可以想一下,应该是要用到判断和比较的,不然怎么知道是大了还是小了 ...
C,猜数字
这个程序是在大三,还是大二写的自己都记不清了,现在翻出来看的时候,晕,怎么自己写的有些地方自己都看不懂啊!!唉!!看来要重操旧刀,给好好的复习复习了!!在大学的时候还用汇编写过一个DOS内存驻留,中断钩子的,不知道跑那去了,那天翻到了在贴上来吧!!//猜数字V1.0/*输入四个不重复的数字,按回车键后结果显示在右边方框,其形式为"?A?B".四位数字中,位置和数字都正确为A,数字相
零基础学python-1.7 第二个程序 猜数字小游戏
第一个程序实际上只是打印一些东西到屏幕上面,下面我们引入一个游戏,使得课程更加有趣。 第二个程序是一个小游戏-猜数字,我先把代码贴上 import random secret=random.randint(1,100)#生成随机数 #print (secret) time=6#猜数字的次数 guess=0#输入的数字 minNum=0#最小随机数 maxNum=100#最大随机数 prin
【Python学习笔记】《和孩子一起学编程》之 猜数游戏
import random secret = random.randint(1, 100) guess = 0 tries = 0 print "嘿,亲!我们来玩个猜数的游戏吧!\r\n" print "这个数介于:1-100之间,我会给你6次机会,现在开始吧!" while guess != secret and tries <6: #注意while后有“:”! guess = in
猜数游戏--C语言描述
猜数是学习编程语言的常见实例。 在C语言中我们运用循环来决定猜数次数,用选择语句来判断猜数的大小,用函数来封装猜数功能,用递归来实现再次游戏。 代码上: #include #include #include void GuessNumber( void ){ int count = 1, data, guessdata;//定义变量:猜数次数,随机数,猜的数 int flag
Python小甲鱼——基础
#猜数字 import random secret=random.randint(1,20) flag=1 while flag: temp=input(&quot;猜一个数字:&quot;) guess = int(temp) if guess==secret: print(&quot;恭喜你,猜对了&quot;) flag=0 elif guess&amp;gt;secr...
猜数游戏C++
源代码#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;time.h&amp;gt;/*用时间做随机数种子使每次产生不同的随机数 */int main( ){    int magic;    int guess;    int counter;       /*引入计数器变量 */    srand((unsigned int)t...
用python写一个猜数字小游戏
print('欢迎您来到猜数字小游戏,请猜出在0到500的范围的数字!') import random number=random.choice(range(500)) guess=-1 while guess!=number: guess=int(input(&quot;请输入你猜的数字:&quot;)) if guess==number: print('你真棒,恭喜你猜对了!') ...
Python学习笔记(5),Battleship 游戏
1.建立“海洋”:一个5*5的网格,每个格子里面的元素均为‘O’,可以使用list来产生5个O,board=[] for item in range(5): board.append(['O']*5) print board 但是这样显示的结果是一行,并非我们想要的 5*5:[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['
《计算机二级Python语言程序设计考试》第4章:程序的控制结构
注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务 目录 考纲考点 知识导图 1、程序的基本结构 程序的流程图 程序的基本结构 2、程序的分支结构 单分支结构: if语句 二分支结构: if-else语句 多分支结构: if-elif-else语句 判断条件及组合 3、程序的循环结构 程序的循环结构 遍历循环: for 无限循环: whil...
java,小程序练习while和do while,猜数字
package test; import java.util.Scanner; //猜数字游戏 public class GuessGame { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //生成1到1000的随机数 int num = (int)(Math.rand
【C++练习】猜数字GuessNumber
#include using namespace std; int main(){ const int my_num=520; int ur_num; cout << "I have a number between 1 and 1000.\nCould you guess it?" << endl; while(1){ cout << "Guess : "; cin >> ur
【LeetCode 简单题】83-猜数字大小
声明: 今天是第83道题。给定n,从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除 (手动比心ღ( ´・ᴗ・` )) 正文 题目:我们正在玩一个猜数字游戏。 游戏规则如下: 我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。 每...
猜数游戏guess
很简单的猜数游戏,希望大家喜欢guess.java
猜数字游戏 猜出1-100随机数
原文地址: (改进,优化)">猜出1-100随机数  (改进,优化)作者:陈振亚czynamespace keshanglianxi7._3_1 {     class Program     {         static void Main(string[] args)         {             CaiCaiLe();             Console.WriteLi
python练手程序(1)—— 猜数字游戏
游戏规则:系统随机生成一个数字,让游戏者去猜生成的数字,并在每次猜之后去提示猜出的数字是大还是小,当猜对数字时,进行恭喜,并提示一共猜了多少次。import random random_number=random.randint(1,20) name=input('你好! 你的名字什么?') print('Well,',name,',我已经想好了一个1到20之间的数字') #设定参数 n=0 i...
Python案例:猜数游戏
Python案例:猜数游戏Every programmer has a story about how they learned to write their first program. I started learning as a child when my father was working for Digital Equipment Corporation, one of the pi...
c++ primer 学习之路 (9) 3.4 C++算术运算符 运算符重载 类型转换 auto声明
3.4 C++算术运算符+运算符对操作数执行加法运算。例如,4+20等于24。−运算符从第一个数中减去第二个数。例如,12−3等于9。运算符将操作数相乘。例如,28 4等于112。/运算符用第一个数除以第二个数。例如,1000/5等于200。如果两个操作数都是整数,则结果为商的整数部分。例如,17/3等于5,小数部分被丢弃。+运算符对操作数执行加法运算。例如,4+20等于24。−运算符从第一个数中...
python 小例子
while 使用example#!/usr/bin/python num = 10 run = True while run: guess = int(raw_input('Enter input : ')) if guess == num: print 'Congratulations, you guessed it.' run = False elif guess < num: print 'No, it is a little higher than that.' else: print 'No, it is a little lower than that.' else: print 'The whole loop is over.' print 'Done'
C语言实现的猜数字小游戏(主要是对于自定义函数的运用)
C语言自定义函数的运用,旨在减轻main函数的负担,是代码调试和维护变得相当容易。
bzoj1594 [Usaco2008 Jan]猜数游戏(二分答案+线段树/并查集)
首先考虑如何判定是否有不合法的,我们把这些区间信息按照v从大到小排序,按顺序做,每次相当于在区间中找一个位置,填下这个v,还要满足这个v不能填在已经做过的区间中(否则那些区间的最小值就是这次的v了,显然小于了本来应该是的v),那么我们就每次判断是否能填后,用一条线段覆盖本次区间,表示这个区间不能填比我小的了。v相等的若干区间怎么办呢?我们求出这些区间的交,如果交为空,则显然不可能,否则v一定要填在交
8/7/2018 Python程序设计群作业----Python语言测试练习题【第十一天】
前言 本群的作业,没有指定Python方向,而在于提升群内成员的语言功底,以便大家在Python的其他方向走的更远。 本群欢迎任何程度的Python学习者 Python程序设计 群号:651707058 题一:报数游戏 现在假如你和你的小伙伴一起玩报数游戏,从某一个人开始报数1,然后下一个报数2 一共100人,如果报数是3的倍数就报:哈哈哈,如果报数是5的倍数就报:呵呵呵 如...
Python: 渐进猜数字游戏 <8> 代码优化 与 结项
Python: 代码优化 与 结项
猜数游戏(掌握程序结构及随机函数的应用)
游戏的开始由机器产生一个随机数.1~100之间,用库函数random(),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH, try again.,否则,程序提示:Your answer is LOW, try again.,直到猜对为止。程序可实现连续猜数,直到游戏者推出。
面试题 猜颜色球游戏
游戏规则: 有四个插口, 可以放有四个球,颜色分别为红色(R),黄色(Y),绿色(G), 和蓝色(B),放的颜色顺序位置都可以是随机的,如:RYGB,YGRB等都是合法放置。 注意:插口有RGBY,猜GGRR只能是一个hit和一个pseudo hit。原书的程序应该是有点错误的,按他的程序这个解答就是1个hit和3个pseudo hit了。 先吃透他的规则,注意特殊情况,然后就好做了。 书中提到的注意地方: 1 代码清晰,比如定义一个结构体返回结果 2 定义额外函数
python学习之tkinter模块-猜数字游戏
环境:Ubuntu 14.04 LTS , pyhton3.4Tkinter模块是Python的标准GUI库。在学习tkinter模块时,做一个小游戏,学以致用,同时方便自己理解。1.首先看整体界面import tkinter import tkinter.messagebox import random root =tkinter.Tk() root.minsize(350,260) root...
猜字母游戏终极版
import java.util.Scanner; public class GuessingDmoe { public static void main(String[] args) { char[] arr = rand(); System.out.println(arr); Scanner sn=new Scanner(System.in); while(true){ System.out.println("输入字母"); String can = sn.next().toUpperCase(); char[] input = can.toCharArray(); char[] rand = rand(); int[] guess = guess(arr,input); if(guess[1] == arr.length){ System.out.println("恭喜,猜对了!!"); break; } else { System.out.println("猜对了"+guess[0]+"个字符,猜对了"+guess[1]+"个位置"); } } } public static char[] rand() { char[] num = new char[5]; char[] letter = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'N', 'M', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'S', 'Y', 'Z' }; boolean[] flag = new boolean[letter.length]; int random; for (int i = 0; i < num.length; i++) { do { random = (int) (Math.random() * letter.length); num[i] = letter[random]; } while (flag[random] == true); flag[random] = true; } return num; } public static int[] guess(char[] rand,char[] input){ int[] couter = new int[2]; for(int i = 0; i < rand.length; i++){ for(int j = 0;j &lt; input.length; j++){ if(rand[i] == input[j]){ couter[0]++; if(i == j){ couter[1]++; } break; } } } return couter; } }
Python学习笔记(五)猜数字游戏(while)
今天写的是一个猜数字游戏,我记得好像大二还是大三的时候在日方课上用vb实现过,大体思想就是先生成一个随机数,然后进行输入,程序会判断你输入的值和随机值相比较的结果,一直到你输入正确才退出循环体。 关于随机数的应用,首先要引入random类,程序中生成的是1到10的随机数,方法是random.uniform,返回的结果是浮点数,因此我把他强制转换成了int型,好了,这会先放输出结果的图:
python:赋值和相等,=和==
pthon中的==和=赋值和相等。 python中==表示等号 =表示赋值 temp=input("hehe") 表示将input中的东西赋给temp guess=int(temp) 将temp中的整型赋值给guess。 if guess==8: print("A") 如果guess=8,这里==表示等号。
基于Java写的猜数字
import java.awt.*; import javax.swing.JOptionPane; public class guessNumber { public static void main(String args[]) { int guesscount=-1;//用户猜的次数 int count=0;//用户猜的数字 int number=(int)(Math.random()*100);//0-100的随机数 while(number!=count) { count=Integer.parseInt(JOptionPane.showInputDialog("guess a number between 0 amd 100")); if(number>count) { JOptionPane.showMessageDialog(null, "too low"); } if(number<count) { JOptionPane.showMessageDialog(null, "too high"); } guesscount++; } JOptionPane.showMessageDialog(null, "you guessed the number -"+count+"-in"+guesscount+"guess !!!"); } }
产生随机数猜数字游戏。。。
玩猜数字游戏。。。 给大家用C语言写一个小游戏。。 随机数是以时间,生成的随机数。。 #include #include #include int main() { int a = 0,c; int b; srand((unsigned)time(NULL)); b = rand()%10; do { printf("菜单\n"); printf("***********
Java 小游戏(猜我心中所想数字--三次机会) while(true){}
package cn.itcast.demoJiangSi;/* * 我心现在想了一个数,范围是在1-100之间, 你猜猜这个数是多少, 如果猜大了我会告诉你大了, 猜小了我会告诉你小了 * 直到你猜对了! * * 分析: * 1. 导入包 * 2. 创建变量 * 3. 使用, 生成一个随机数, nextInt(100) + 1 * 4. 从键盘录入一个数 *
python 猜大小的游戏
import random number=random.randint(1,100) running=True guess=int(input(&quot;你一共有10分,没错一次减少1分 enter an integer:&quot;)) s=10 s1=0 #exit() while running: if guess == number: print(&quot;bingo&quot;,s,&quot;s...
《小甲鱼—零基础入门学习python》学习过程(一)
学习日期:2017/09/13第一课:愉快的开始知识点汇总 1. Python的应用范围:操作系统、3D动画、WEB、企业应用、云计算等。 2. Python是什么类型的语言?脚本语言,即电脑编程语言,比C、C++或java之类的系统编程语言简单容易。 3. 什么是脚本语言? 一个脚本可以使得本来要用键盘进行的相互式操作自动化。一个shell脚本主要由原本需要在命令行输入的命令组成,或在一
跟着小甲鱼学python第一天
以前虽然也写博客,但并没有每天整理的习惯,现在跟着小甲鱼老师学习Python,里面很多内容都是小甲鱼老师的课后作业和视频上讲的内容,我只是把它整理下来方便自己以后复习。 什么是Python? 首先,python是一种脚本语言,是电脑编程语言,可以以一种简单快速的方式完成一种复杂的操作,因此,相对于Clike语言,Python相对比较简单。 IDLE是什么? IDLE就是Python Shel
猜数字游戏--python实现简单文本
随机产生0~9的数字,与用户输入的数字比较,相等则结束,不等继续猜 代码展示 import random while True: m=int(input('请输入数字:')) n=random.randint(0,9) if(m==n): break print('非常遗憾,请继续猜测') print('恭喜你,猜对了') 运行结果 请输入数字:5...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 西班牙的人工智能有什么区别 大数据培训呢